How to extend LINK TO functionality in ATTACHMENT DISPLAY SETTINGS

In WP 3.4.x and earlier, it was possible to add a button to the media manager by messing around in an attachment_fields_to_edit filter. For example, a plugin could, when it figured out that an item was an audio file, append some HTML for an extra button to the url field, like so.

 $playertag = "";
 $fields['url']['html'] .= 
      "<button type='button' class='button data-link-url='$playertag' urlaudioplayer audio-player-$postid'>Audio Player</button>"; 

The new media manager has changed the set of buttons that were in that html tag into a pulldown menu — a <select .../> item. The html code is emitted in media-template.php. The new code still calls attachment_fields_to_edit filters, but doesn’t pass in any fields.

Is there a way to extend this select item without hacking the core (which I won’t do). Is it conceivable to write a bit of js which will use jQuery to add an item to it?

Solutions Collecting From Web of "How to extend LINK TO functionality in ATTACHMENT DISPLAY SETTINGS"

Yes, it’s possible in the same manner as before. I don’t know why you think the filter is not passing the parameters anymore.

add_filter('attachment_fields_to_edit', 'user16975_edit_fields', 10, 2);
function user16975_edit_fields($form_fields, $attachment){

    // check for an audio attachment
    if ( substr($attachment->post_mime_type, 0, 5) == 'audio' ) {
        $playertag =  $playertag = "[audio ".wp_get_attachment_url($attachment->ID)."]";
        $form_fields["audioplayer"] = array(
            "label" => "Audio player",
            "input" => "html",
            "html" => "<button type='button' class='button' data-link-url='$playertag' audioplayer='audio-player-{$attachment->ID}'>Audio Player</button>",
        );
    }

    return $form_fields;
}

Here is the result :

Audio player button