我正在尝试根据位置更改产品的价格。
为此,我使用wc字段工厂为位置创建多个字段并更新价格,并根据IP我找到城市(位置),我正在获取自定义字段值。
使用
function return_custom_price($price, $product) {
global $post, $blog_id;
$price = get_post_meta($post->ID, '_regular_price');
$post_id = $post->ID;
$price = ($price[0]*2.5);
return $price;
}
add_filter('woocommerce_get_price', 'return_custom_price', 10, 2);
它的工作正常,但当我去购物车时,它显示产品价格为0 像这样:
请帮帮我。
感谢。
答案 0 :(得分:1)
更新:
产品元数据 '_regular_price'
不是自定义字段,而是产品常规价格,您可以在 $product
上直接using WC_Product methods and magic properties directly获取对象。
如果查看您的功能,您有2个参数:
$price
(产品价格)和$product
(产品对象) ...所以你不需要使用任何全局变量,因为你已经可以使用$ product对象了。
以下是更新后的代码:
add_filter('woocommerce_get_price', 'product_custom_price', 10, 2);
function product_custom_price($price, $product) {
$custom_price = $product->get_regular_price();
return $custom_price * 2.5;
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
请参阅购物车截图:
1)购物车未使用此代码(之前):
2)购物车使用此代码(之后):
正如您所看到的,此代码可以正常运行,并在购物车商品中显示常规价格。
OP正在将此代码与自定义字段一起使用:
add_filter('woocommerce_get_price', 'product_custom_price', 10, 2);
function product_custom_price($price, $product) {
$custom_price = get_post_meta($product->id, 'custom_key', true);
return $custom_price;
}