有关WordPress筛选器/操作如何工作的问题

时间:2013-12-11 作者:Toan Tran Van

我有一个很好奇的问题。

在WordPress中,我们可以添加类似以下代码的筛选器或操作:

add_filter($filter_Name, $function_will_be_hook);
add_action($action_Name, $function_will_be_hook);
我们可以将一些参数传递到function_will_be_hook(). 但是WordPress如何知道这些参数与它的过滤器/操作相关呢。

示例:

function my_the_content_filter($content) {
    $content .= "I added some additon content";
    return $content;
} 

add_filter( \'the_content\', \'my_the_content_filter\' );

How does WordPress know $content is the content of Post/Page (even when we change name of this param to some other name)?

1 个回复
SO网友:Ben Miller - Remember Monica

对于您使用的每个过滤器或动作挂钩add_filteradd_action 功能,有相应的apply_filtersdo_action 在WordPress核心的某个地方调用的函数。此函数用于设置将向筛选器或操作发送哪些参数。

对于filter hook the_content 您给出的示例中,过滤器挂钩用于function the_content 发现于wp-includes\\post-template.php in WordPress 3.7.1:

function the_content( $more_link_text = null, $strip_teaser = false) {
    $content = get_the_content( $more_link_text, $strip_teaser );
    $content = apply_filters( \'the_content\', $content );
    $content = str_replace( \']]>\', \']]>\', $content );
    echo $content;
}
apply_filters 函数调用时,第一个参数是挂钩名称,在本例中\'the_content\'. 下一个参数,$content, 是要筛选的值。这将是筛选函数(名为$content 在您的my_the_content_filter 函数,但它可以有任何名称)。(可选)可以在中指定更多参数apply_filters 函数,这些参数将在附加输入参数中传递给过滤器函数。

对于过滤器挂钩,过滤器函数返回一个过滤值,该值由apply_filters 作用对于动作挂钩,没有使用任何返回值。

结束

相关推荐

缺少WordPress Apply_Filters()参数

我正在定制Woocommerce Wordpress网站。在Woocommerce产品类别中(class-wc-product.php) 这个get_price 函数应用筛选器,如下所示:function get_price() { return apply_filters(\'woocommerce_get_price\', $this->price, $this); } 在我的功能中。php我想添加一个过滤器,如下所示:add_filter(\'woocomme