缺少WordPress Apply_Filters()参数

时间:2012-11-12 作者:benedict_w

我正在定制Woocommerce Wordpress网站。

在Woocommerce产品类别中(class-wc-product.php) 这个get_price 函数应用筛选器,如下所示:

function get_price() {
    return apply_filters(\'woocommerce_get_price\', $this->price, $this);
}
在我的功能中。php我想添加一个过滤器,如下所示:

add_filter(\'woocommerce_get_price\', \'custom_price\');

function custom_price($price, $product) {
    ...
}
当我调用此函数时,会得到以下PHP警告:

Warning: Missing argument 2 for custom_price()
为什么缺少第二个参数?是$this 是否未发送到筛选器调用?

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

它缺少第二个参数,因为你没有告诉WordPress你想用你的add_filter 呼叫默认情况下,操作和筛选器仅获取一个参数。尝试以下操作:

<?php
add_filter(\'woocommerce_get_price\', \'custom_price\', 10, 2);

function custom_price($price, $product) {
    ...
}

SO网友:Steve

该警告是函数custom\\u price()中第二个参数的结果。过滤器在调用时只提供一个变量,我记不起这是产品/帖子ID还是价格。代码文档表明它返回一个字符串,所以我认为这是价格。

您可以在以下位置找到文档:http://wcdocs.woothemes.com/apidocs/index.html

如果此时需要该产品,则必须使用:

function custom_price( $price ) {

    global $product;

}
如果所有这些都失败了,只需回显$价格,看看您是否可以判断这是产品ID还是价格。然后相应地调整代码。

结束

相关推荐

从非核心php文件访问BloInfo、Get_Option和plugins_url

我正在创建一个插件,插件目录中有一个php文件,可以通过自定义重写url直接访问该文件。我需要这个文件能够使用标题中提到的三个功能。目前,我正在包括wp负载。php文件,它使我能够访问所有这些函数。然而,我一直在读到不应该包括wp负载,因为它可能不总是在同一个位置,而且它包括可能不需要的wordpress文件。这就是我如何包含wp负载:$wp_base = explode($_SERVER[\'PHP_SELF\'], $_SERVER[\'SCRIPT_FILENAME\']); require