Wordpress - apply_filter,我无法连接到任何add_filter

时间:2014-10-26 00:34:57

标签: wordpress-plugin wordpress add-filter

我正在尝试编辑wordpress(woocommerce)的插件,而且我经常会找到一些使用apply_filter函数的行,例如一个是这样的:

return apply_filters ( 'woocommerce_get_variation_sale_price', $price, $this, $min_or_max, $display );

很遗憾,我无法理解此过滤器的功能,因为我无法追踪标签的使用位置。我在没有任何运气的情况下扫描了(在eclipse中搜索)工作区,我找不到任何add_filter这个" woocommerc_get_variation_sale_price"。

这怎么可能?阅读他们应该连接的两个功能的文档...

我被困了

1 个答案:

答案 0 :(得分:2)

apply_filters()函数将使用add_filter( $hook, $function_name, $priority, $num_arguments )执行任何已挂接到它的函数,其余值将作为参数传递给函数。这通常是WordPress Action和Filter挂钩如何工作来扩展核心WordPress或插件的功能 - 在这种情况下是WooCommerce。

这意味着您的示例中的代码可选地用于让您或其他插件更改插件返回的$price的值。它为您提供父对象($this)以及有关用于计算价格的变量的其他信息。

如果您找不到该字符串的任何其他引用(您的示例缺少过滤器名称中的'' ),则表示没有任何内容被挂钩过滤并修改$price

的值

如果你想在返回之前添加一个钩子来过滤$price的值,它将如下所示。

// the name of the filter, the hooked function, the priority, and the # of args
add_filter( 'woocommerce_get_variation_sale_price', 'my_woocommerce_get_variation_sale_price', 10, 4 ); 
function my_woocommerce_get_variation_sale_price( $price, $product, $min_or_max, $display ){
    // Use the arguments to do whatever you want to 
    // the $price before it is returned.
    return $price;
}