Dans WP 3.4.x et versions antérieures, il était possible d'ajouter un bouton au gestionnaire de médias en filtrant un filtre attachment_fields_to_edit
. Par exemple, un plugin pourrait, lorsqu'il a découvert qu'un élément était un fichier audio, ajouter du code HTML pour un bouton supplémentaire au champ url, comme ceci.
$playertag = "[audio $url]";
$fields['url']['html'] .=
"<button type='button' class='button data-link-url='$playertag' urlaudioplayer audio-player-$postid'>Audio Player</button>";
Le nouveau gestionnaire de médias a changé l'ensemble des boutons qui se trouvaient dans cette balise HTML en un menu déroulant - un élément <select .../>
. Le code html est émis dans media-template.php. Le nouveau code appelle toujours les filtres attachment_fields_to_edit
, mais ne transmet aucun champ.
Est-il possible d'étendre cet élément de sélection sans pirater le noyau (ce que je ne ferai pas). Est-il envisageable d'écrire un peu de js qui utilisera jQuery pour y ajouter un élément?
Oui, c'est possible de la même manière qu'avant. Je ne sais pas pourquoi vous pensez que le filtre ne transmet plus les paramètres.
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;
}
Voici le résultat: