当股票为“ 0”时如何更改价格?
我在管理端有一个“调节器价格”和“另一个价格”。 “另一个价格”是元数据(您可以在代码->'_alg_msrp'中看到)。 我用以下代码触发:
if($product->stock_quantity == 0 ){
function return_custom_price($price, $product) {
global $post, $blog_id;
$post_id = $post->ID;
$price = get_post_meta( get_the_ID(), '_alg_msrp', true );
return $price;
}
add_filter('woocommerce_get_price', 'return_custom_price', 10, 2);
}
价格确实有所变化,但我希望仅在正面进行更改,而不是在管理员方面进行更改。此代码更改了整个视图。我的意思是,它如何只影响首页,而不影响管理页面,如WooCommerce中的“产品”标签中。 感谢您的任何建议。
答案 0 :(得分:0)
对于简单的产品,这取决于您要更改的位置
从3.0.0版开始不推荐使用“ woocommerce_get_price”
改为使用“ woocommerce_product_get_price”。
add_filter('woocommerce_product_get_price', 'new_price', 11, 2 );
add_filter('woocommerce_product_get_regular_price', 'new_price', 11, 2 );
function new_price( $price, $product ) {
if($product && !is_admin()){
if($product->stock_quantity == 0 ){
$new_price = get_post_meta( $product->get_id(), '_alg_msrp', true );
if($new_price){
return $new_price;
}
}
}
return $price;
}
答案 1 :(得分:0)
我会更改它,以便逻辑在函数内部:
function return_custom_price($price, $product) {
if ( is_admin() || $product->stock_quantity != 0 )
return $price;
$custom_price = get_post_meta( $product->get_id(), '_alg_msrp', true );
return ($custom_price == '') ? $price : $custom_price;
}
add_filter('woocommerce_get_price', 'return_custom_price', 10, 2);
仅当它不为空时,它将返回自定义价格。否则,它将返回正常价格。