web-dev-qa-db-fra.com

Comment ajouter du contenu personnalisé sous la ligne du plugin dans la liste des plugins d'administrateur WordPress?

Je cherche à ajouter un message personnalisé sous mon plugin dans la page "Plugins", un peu comme la capture d'écran suivante:

plugins list available filters and hooks

Quelle action ou quel filtre devrais-je utiliser? Je vous remercie!

1
asked Feb 12 '12

En recherchant Codex ou Google, vous pouvez trouver des listes de points d'ancrage WordPress, mais croyez-moi, elles ne sont pas utiles si vous ne savez pas où, quand et comment elles sont déclenchées.

Lors du codage pour WordPress, la question "Quel hook dois-je utiliser?" est très fréquent et fréquent, mais croyez-moi, une liste de tous les crochets WordPress, si elle existe, ne vous aidera pas à répondre, car si vous ne savez pas où, quand et comment un crochet est déclenché, il est inutile de le savoir existe.

Ainsi, lorsque vous avez une telle question, la première chose à faire est de regarder le code principal de WordPress .

Si vous regardez la barre d'adresse du navigateur, lorsque vous consultez la page de la liste des plugins, vous verrez http://example.com/wp-admin/plugins.php.

Alors, allez et ouvrez le fichier /wp-admin/plugins.php.

Si vous pensez que c'est un gâchis, je suis d'accord avec vous. Toutefois, si vous essayez de comprendre le code, vous constaterez que la sortie est générée par la ligne suivante: $wp_list_table->display();. Il existe donc un objet, $wp_list_table, doté d'une méthode display.

Si vous avez de l'expérience dans WordPress, vous comprendrez immédiatement où chercher cet objet. Sinon, il suffit de vérifier où dans le fichier $wp_list_table est défini. Vous trouverez cette ligne:

$wp_list_table = _get_list_table('WP_Plugins_List_Table');

Maintenant, vous pouvez deviner qu’il existe une classe nommée 'WP_Plugins_List_Table'.

Avec un peu d’expérience, vous saurez que cette classe appartient à la classe de WordPress qui étend le WP_List_Table; cependant, si vous ne le savez pas, il suffit de regarder les fichiers du dossier wp-admin/includes à la recherche d’un fichier nommé. D'une manière similaire à la classe, ou peut-être en utilisant un éditeur de texte, lancez une recherche de la ligne 'class WP_Plugins_List_Table' dans tous les fichiers php du dossier wp-admin.

Dans les deux cas, le fichier dans lequel la classe est définie est précis wp-admin/includes/class-wp-plugins-list-table.php .

Ouvrez ce fichier et regardez le code. Vous trouverez une méthode nommée single_row et, même si le code de la classe est presque illisible, vous pouvez deviner que cette méthode est utilisée pour afficher le plugin singulier. rangée.

Les 2 dernières lignes de cette méthode sont:

do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status );
do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );

Donc, vous trouvez le crochet que vous recherchez:

La première s'exécute pour toutes les rangées de plugins, la seconde est un hook dynamique, donc différent pour chaque plugin.

Donc, si vous voulez sortir quelque chose après une ligne de plugin spécifique, vous devez utiliser "after_plugin_row_$plugin_file" hook, où $plugin_file peut être récupéré dans le fichier de plugin principal en utilisant plugin_basename( __FILE__ );

Un exemple de ce que vous pouvez obtenir:

Cats

Le code de plugin utilisé pour la sortie dans l'image ci-dessus est:

/**
* Plugin Name: Code is Best Documentation
* Description: Look at me, I'm the proof.
*/

$path = plugin_basename( __FILE__ );

add_action("after_plugin_row_{$path}", function( $plugin_file, $plugin_data, $status ) {
  echo '<tr class="active"><td>&nbsp;</td><td colspan="2">
        <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Cat_poster_2.jpg/297px-Cat_poster_2.jpg" alt="Some Cats" />
        </td></tr>';
}, 10, 3 );
10
gmazzap