web-dev-qa-db-fra.com

Comment étendre la fonctionnalité LINK TO dans les paramètres d'affichage de l'attachement

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?

4
O. Jones

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:

Audio player button

2
Fabien Quatravaux