如何在WordPress管理插件列表的插件行下添加自定义内容?

时间:2014-03-11 作者:asked Feb 12 \'12

我希望在“插件”页面的插件下添加一条自定义消息,很像下面的屏幕截图:

plugins list available filters and hooks

我应该使用什么操作或筛选器?非常感谢。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

搜索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__ );

您可以获得的示例:

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 );

结束