搜索Codex或Google,你可以找到一些WordPress钩子列表,但相信我,如果你不知道它们在哪里、何时以及如何被触发,它们就没有用处了。
在为WordPress编码时,问题是“我应该使用哪个钩子?”是非常常见和频繁的,但是相信我,所有WordPress钩子的列表,如果它存在的话,将不会帮助你回答,因为如果你不知道钩子在哪里、何时以及如何被触发,那么只知道它存在是没有用的。
所以,当你有这样的问题时,首先要做的是look at WordPress core code.
如果您查看浏览器中的地址栏,在查看插件列表页面时,您将看到http://example.com/wp-admin/plugins.php
.
那么,去打开文件/wp-admin/plugins.php
.
如果你觉得一团糟,我同意你的看法。但是,如果您尝试取消对代码的理解,您将看到输出是通过以下行完成的:$wp_list_table->display();
, 所以有一个物体,$wp_list_table
这有一个方法display
.
如果您对WordPress有一定的经验,您将立即了解在何处查找此对象。如果没有,请检查文件中的位置$wp_list_table
已定义。您会发现这一行:
$wp_list_table = _get_list_table(\'WP_Plugins_List_Table\');
现在您可以猜测,存在一个名为
\'WP_Plugins_List_Table\'
.
只要有一点经验,您就会知道这个类是WordPress中扩展的类之\'WP_Plugins_List_Table\'
二, 但是,如果您不知道,请查看中的文件wp-admin/includes
文件夹,查找以类似于类的方式命名的文件,或者使用文本编辑器启动对该行的搜索\'class WP_Plugins_List_Table\'
在所有php文件中wp-admin
文件夹
在这两种情况下,您都可以修改定义类的文件,它是wp-admin/includes/class-wp-plugins-list-table.php
.
打开该文件并查看代码。你会发现a method named single_row
而且,即使类代码几乎不可读,您也可以猜测该方法用于显示单个插件行。
该方法的最后两行是:
do_action( \'after_plugin_row\', $plugin_file, $plugin_data, $status );
do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );
所以你找到了你要找的钩子:
第一个用于所有插件行,第二个是动态挂钩,因此每个插件都不同。
因此,如果您想在特定插件行之后输出一些内容,那么必须使用"after_plugin_row_$plugin_file"
钩子,在哪里$plugin_file
可以使用在主插件文件中检索plugin_basename( __FILE__ );
您可以获得的示例:
上图中用于输出的插件代码为:
/**
* 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> </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 );