在非文档挂接上调用Apply_Filters

时间:2014-02-19 作者:Enrique Moreno Tent

我一直在努力学习如何编写插件,我认为最好的方法是查看其他插件。

我在看这一行和第一行

/**
 * Plugin Name: Media Library Categories
 * Plugin URI: http://wordpress.org/plugins/wp-media-library-categories/
 * Description: Adds the ability to use categories in the media library.
 * Version: 1.4.1
 * Author: Jeffrey-WP
 * Author URI: http://codecanyon.net/user/jeffrey-wp/?ref=jeffrey-wp
 */

/** register taxonomy for attachments */
function wpmediacategory_init() {
    // Default taxonomy
    $taxonomy = \'category\';
    // Add filter to change the default taxonomy
    $taxonomy = apply_filters( \'wpmediacategory_taxonomy\', $taxonomy );
    register_taxonomy_for_object_type( $taxonomy, \'attachment\' );
}
add_action( \'init\', \'wpmediacategory_init\' );
有一行:

$taxonomy = apply_filters( \'wpmediacategory_taxonomy\', $taxonomy 
我不明白。我查看了Wordpress文档,没有找到一个名为wpmediacategory_taxonomy. 除了名字之外,我相信这与插件有关。那么它到底是如何工作的呢?那是定制挂钩吗?它是在哪里定义的?

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

钩子的使用非常非常简单。要创建挂钩,请使用apply_filtersdo_action.

第一个参数是挂钩名称,其他参数是参数。

必须具有挂钩名称,但其他参数是可选的。据我所知,你可以有任意多的论点。例如:

$t = apply_filters(\'test_filter\',$a,$b,$c,$d);
“应用”过滤器的行为就是“触发”过滤器的行为。这一行是过滤器运行的地方。您可以多次运行一组过滤器,而不仅仅是一次。

要添加过滤器,您需要创建一个回调(闭包很好)并将其添加到挂钩中。例如:

function test_callback($a,$b,$c,$c) {
  // do stuff
  return $a;
}
add_filter(\'test_filter\',\'test_callback\',10,4);
所需参数计数中的第四个参数。没有它,您只能将第一个参数传递给回调。

操作不会返回数据,但您可以echo 信息技术

过滤器应该返回数据,虽然不必返回,但如果不返回,应该知道自己在做什么。具体来说,应该以相同的格式从第一个参数返回数据,也就是说,如果您得到一个字符串,就返回一个字符串。你不应该echo 来自过滤器的数据通常会产生非常奇怪的效果。

SO网友:kraftner

你几乎自己给出了答案。

apply\\u filters,顾名思义,应用为该过滤器挂钩注册的所有过滤器。这可以是默认的WordPress过滤器,但在本例中也可以是来自插件的自定义过滤器。

这只调用任何已注册的回调。使用add\\u filter()添加筛选器

更多信息可在法典中找到:apply filters

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。