web-dev-qa-db-ja.com

WordPress管理プラグインリストのプラグイン行の下にカスタムコンテンツを追加するにはどうすればいいですか?

次のスクリーンショットのように、[Plugins]ページのプラグインの下にカスタムメッセージを追加しようとしています。

plugins list available filters and hooks

どのアクションまたはフィルタを使用すればよいですかありがとうございました!

1

コーデックスやグーグルを検索すると、いくつかのWordPressフックのリストを見つけることができますが、いつどこでどのようにトリガーされるのかわからなければ役に立ちません。

WordPressをコーディングしている間、「どのフックを使うべきですか?」という質問があります。よくあることですが、WordPressのすべてのフックのリストが存在する場合は、回答には役立ちません。存在します。

そのため、そのような質問があるときに最初にすべきことは、WordPressコアコードを見ることです。

ブラウザのアドレスバーを見ると、プラグインのリストページを見ているときに、http://example.com/wp-admin/plugins.phpが表示されます。

それで、ファイル/wp-admin/plugins.phpを開いてください。

あなたがそれが混乱だと思うなら、私はあなたに同意します。しかし、コードを理解しないようにすると、出力は次の行で行われていることがわかります。$wp_list_table->display();だから、メソッドdisplayを持つオブジェクト$wp_list_tableがあります。

あなたがWordPressの経験があるなら、あなたはすぐにこのオブジェクトを探す場所を理解するでしょう。そうでない場合は、ファイル内の$wp_list_tableが定義されている場所を確認してください。あなたはこの行を見つけるでしょう:

$wp_list_table = _get_list_table('WP_Plugins_List_Table');

'WP_Plugins_List_Table'という名前のクラスが存在していると思います。

ちょっと経験を重ねると、このクラスはWP_List_Tableを拡張するWordPressのクラスの1つであることがわかりますが、それがわからない場合は、wp-admin/includesフォルダー内のファイルを見て、という名前のファイルを探してください。クラスに似た方法で、あるいはテキストエディタを使って'class WP_Plugins_List_Table'フォルダ内のすべてのphpファイルで行wp-adminの検索を開始します。

どちらの場合も、クラスが定義されているファイルを細かく指定できます。それは wp-admin/includes/class-wp-plugins-list-table.php です。

そのファイルを開いてコードを見てください。あなたは single_row という名前のメソッドを見つけるでしょう。そして、クラスコードがほとんど読めなくても、このメソッドは単数形のプラグインを表示するために使われていると推測できます。行。

このメソッドの最後の2行は以下のとおりです。

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

それで、あなたはあなたが探しているフックを見つけます:

最初のプラグインはすべてのプラグインの行に対して実行され、2番目のプラグインは動的フックなのでプラグインごとに異なります。

したがって、特定のプラグイン行の後に何かを出力したい場合は、"after_plugin_row_$plugin_file"フックを使用する必要があります。ここで、$plugin_fileは、plugin_basename( __FILE__ );を使用してメインプラグインファイル内で取得できます。

あなたが得ることができるものの例:

Cats

上の画像の出力に使用されるプラグインコードは次のとおりです。

/**
* 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