WooCommerce过滤器的问题 " woocommerce_product_get_price" 。

问题描述 投票:1回答:1

我正在运行一个WooCommerce商店(WordPress 5.4.1和WooCommerce 4.1.0),我试图根据客户的位置来设置价格,所以我通常用一个小的snippet,我一直在更新我的snippet的废弃功能,我已经更新了几个有任何问题的snippet,但这个,我不明白为什么废弃的方法可以工作,但新的方法不行。

以下是废弃版本的代码,旧的方法使用woocommerce_get_price,而不是woocoomemerce_product_get_price,它的工作原理是,巴塞罗那客户的价格会以正确的倍数增加,但这个代码会影响到WordPress,例如,如果我试图更新一个插件,我会出现一个错误,或者如果我试图搜索一个新的插件,任何结果都会显示,直到我按f5。

add_filter( 'woocommerce_get_price', 'change_specific_products_price', 10, 2 );
function change_specific_products_price( $price, $product ) {
$userInfo = geoip_detect2_get_info_from_current_ip();

if ( has_term('skf', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
   $price *= 1.20;
}
return $price;
} 

所以我决定更新过时的功能,我查看了WooCommerce的文档,但我不明白为什么过时的方法能用,而新的方法却不行。

以下是更新后的代码版本

  add_filter( 'woocommerce_product_get_price', 'change_specific_products_price_2', 10, 2 );
  function change_specific_products_price_2( $price, $product ) {
  $userInfo = geoip_detect2_get_info_from_current_ip();

if ( has_term('skf', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
   $price *= 1.20;
}
return $price;
} 

我卡在这一点上,任何帮助将是巨大的。

php wordpress woocommerce hook-woocommerce price
1个回答
0
投票
add_filter( 'woocommerce_product_get_price', 'change_specific_products_price', 10, 2 );

function change_specific_products_price( $price, $product ) {

    $userInfo = geoip_detect2_get_info_from_current_ip();

    if ( has_term( 'cloth', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
        $price *= 1.20;
    }
    return $price;
}

这工作正常。


0
投票

非常感谢你的答复,但代码不工作,这是很奇怪的事情,与废弃的功能工作,但与新的不是,这就是为什么我完全失去了。

我已经联系了作者的主题,如果这段代码能以某种方式影响woocommerce的工作,或主题。

就像这个代码打破了ajax重新加载,这就是为什么当我搜索一个新的插件在wordpress后台,不显示任何东西,直到我手动刷新页面按f5。

© www.soinside.com 2019 - 2024. All rights reserved.