Php 自定义产品价格使购物车项目价格显示为0

Php 自定义产品价格使购物车项目价格显示为0,php,wordpress,woocommerce,cart,product,Php,Wordpress,Woocommerce,Cart,Product,我正试图根据地理位置改变产品的价格 为此,我使用wc fields factory为位置创建多个字段,并更新价格。基于IP,我查找城市(位置),并获取自定义字段值 使用 function return_custom_price($price, $product) { global $post, $blog_id; $price = get_post_meta($post->ID, '_regular_price'); $post_id = $post->ID;

我正试图根据地理位置改变产品的价格

为此,我使用wc fields factory为位置创建多个字段,并更新价格。基于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 像这样:

请帮我解决这个问题

谢谢

更新:

产品元数据“常规价格”不是自定义字段,而是产品常规价格,您可以直接在
$product
对象上获取

如果您查看函数,您有两个参数:
$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; 
}

您好,谢谢您的回复,但它不适用于我
添加过滤器('woocommerce\u get\u price','return\u custom\u price',10,2);函数return\u custom\u price($price,$product){global$post;$price=get\u post\u meta($post->ID,'wccaf_noida',true);return$price;}
这是我试图从自定义字段获取值的方式,它在产品页面中工作正常,但在购物车页面中不更新。它显示了0.0,还有一段时间我尝试了使用购物车挂钩<代码>函数返回自定义价格($price_html,$product){global$post,$blog_id;$post_id=$post->id;$noida_price=get_post_meta($post->id,'wccaf_noida',true);如果(!empty($noida_price)){$price_html=wc price($noida price)}返回$price_html;}添加过滤器('woocommerce_-get_-price_-price''html','这是我从自定义字段提取的原始价格标签。但在购物车里,它只接受旧的固定价格。这对我没什么帮助。@Lohith好吧,我不明白,因为你解释得不太清楚…所以我要更新我的代码…不使用全局变量,这是不必要的…但是
\u regular\u price
实际上不是自定义字段,因为它是通过WC\u产品方法可以获得的常规产品价格…谢谢你的回复,我很抱歉没有给出明确的信息让我清楚地解释我的要求,我必须根据城市位置显示不同的产品价格。因此,我计划使用自定义字段按IP和城市值获取城市,在这些字段中我更新自定义城市位置值或价格。我正在尝试的代码在产品页面中运行良好,但在购物车页面中不起作用。你给它的那一个正是我想要的,但我没有得到我在代码中犯的错误。在购物车页面中,产品的常规价格或价格显示为0。
add_filter('woocommerce_获取_price','return_custom_price',10,2);函数返回\u自定义\u价格($price,$product){global$post;$nprice=get\u post\u meta($post->ID,'wccaf_noida',true);if(!empty($nprice)){$price=$nprice;}返回$price;}