我正在运行一个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;
}
我卡在这一点上,任何帮助将是巨大的。
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;
}
这工作正常。
非常感谢你的答复,但代码不工作,这是很奇怪的事情,与废弃的功能工作,但与新的不是,这就是为什么我完全失去了。
我已经联系了作者的主题,如果这段代码能以某种方式影响woocommerce的工作,或主题。
就像这个代码打破了ajax重新加载,这就是为什么当我搜索一个新的插件在wordpress后台,不显示任何东西,直到我手动刷新页面按f5。