我正在尝试查看各种选项,以便与产品的价格挂钩,从而能够更改常规价格。
这是在我的可变产品的情况下,我希望最终能够从与此变化相关的帖子中获取价格和其他数据,我将价格和其他详细信息保存为该帖子的元数据。
这将使得有可能像“一般价格”一样根据需求检索变化并作为价格使用。但是,如果变化有自己的价格设置,那么将使用它来代替。
但无论如何,这种编码需要完成。我发现我可以get_prop()
在WooCommerce。这至少是一个开始。但不知怎么的,这对我不起作用。
我尝试了一个测试:
function test_change($value, $prop) { return 666; }
add_filter(\'woocommerce_product_get_price\', \'test_change\');
但正如我所说,这似乎不起作用。导致
$product[\'display_price\']
不显示
666
.
所以我只想弄清楚一切是如何运作的。所以我想打电话给get_price()
调用get_prop()
. 我能看到的是这个函数(get_price
) 应该能够从产品对象调用(WC_Product
). 但它不起作用。我已尝试此代码来测试:
$prodfac = new WC_Product_Factory;
$prodf = $prodfac->get_product($var[\'product_id\']);
这基本上是(我所理解的)什么
wc_get_product()
做我看到了
wc_get_product()
用于woocommerce插件核心代码中的其他地方,然后调用
get_price()
. 所以我不明白为什么在我尝试的时候它不起作用。
我试着查看woocommerce的核心代码,但我在任何地方都看不到get_price()
会被封锁或其他什么。这也是一项公共职能。我只是不明白为什么调用那个函数对我来说不起作用。或者为什么会被钩住get_prop()
不适合我。
最合适的回答,由SO网友:Antti Koskinen 整理而成
关于过滤器,您尝试了,但没有工作,我的直觉是它没有工作,因为它缺少(优先级和)接受的arg count参数。目前
add_filter(\'woocommerce_product_get_price\', \'test_change\');
回调的默认优先级为10和1参数,但在中使用了两个参数
function test_change($value, $prop) { return 666; }
因此,您需要像这样更改过滤器,
add_filter(\'woocommerce_product_get_price\', \'test_change\', 10, 2);
您还可以根据需要使用一些大于或小于10的数字,使过滤器稍后或更早启动。