Aide personnalisée dans WordPress

Attention:  cet article date du 11 janvier 2012
Ce qu'il contient est peut être encore valable...
... ou complètement obsolète!

Les versions de WordPress se succèdent à un rythme d’enfer, ce qui peut paraître plutôt une bonne chose sauf quand des trucs qui fonctionnaient parfaitement se mettent à cafouiller car les choses ont changé.

C’est le cas du système d’aide personnalisée, qui ne marche plus comme avant. D’où, comment faire pour personnaliser l’aide ?

C’est par ces mots que la mise à jour vient de se faire:

Bienvenue dans WordPress 3.3.1
Merci d’avoir fait une mise à jour ! Grâce à WordPress 3.3.1, votre sourire sera plus blanc, votre chevelure plus soyeuse, et vos publications en ligne plus efficaces. Bon, d’accord, seulement le dernier point. Mais tout de même ! :)

Dommage pour les cheveux soyeux et les dents blanches…

Mais à l’ajout d’un article, j’ai eu la surprise de voir apparaître l’aide personnalisé au dessus du texte, et non plus intégré dans son petit onglet…

Comment faire avec les anciennes versions ?

Pour personnaliser l’aide il suffit d’ajouter dans le fichier functions.php ces quelques lignes:

add_action('load-post-new.php','custom_help_post'); // Ajout
add_action('load-post.php','custom_help_post'); // Modification
function custom_help_post() {
    add_filter('contextual_help', 'custom_post_help');
}
function custom_post_help($help) {
echo <<<ENDOFHTML
    <p>Lorem ipsum bla bla (mettre ici le texte spécifique)</p>
ENDOFHTML;
}

Cela glissait le texte Lorem Ipsum dans l’onglet Aide, que l’on pouvait faire apparaître ou disparaître à volonté. Bien pratique pour donner des directives aux utilisateurs.

Sauf qu’après le passage à la version 3.3.1 (et peut être un brin avant), cela nous donne:

Plus besoin de cliquer sur Aide (en bleu), le texte (en rouge) apparaît en permanence…

Adaptations pour les nouvelles versions

Quelques lignes à modifier (ou, pour le dire autrement, tout casser) :

add_action( 'add_meta_boxes' , 'rc_aide' , 10 , 2 );
function rc_aide ( $type , $post ) {
     $aide = <<<ENDOFHTML
     <p>Lorem ipsum bla bla (mettre ici le texte spécifique)</p>
ENDOFHTML;
    if ( 'post' == $type ) {
        get_current_screen()->add_help_tab( array(
            'id'      => 'aide',
            'title'   => 'Aide Personnalisée',
            'content' => $aide,
        ) );
    }
}

Petites explications ? La variable $aide va contenir le texte à afficher. Le test permet de n’afficher l’aide qu’en cas d’article (ou de page, ou de types personnalisés…). Le id doit être unique au sein de votre système d’aide, et le title s’affichera en tant qu’onglet.

Ce qui donne ceci:

Passé le temps de la mauvaise surprise, nous avons désormais un système plus souple (il est possible d’ajouter autant d’onglets que l’on veut), et finalement assez simple.

Laisser une réponse