如果销售价格等于零,则在Woocommerce中仅显示常规产品价格

时间:2018-08-10 19:14:34

标签: php wordpress woocommerce product price

我通过xml feed上传运行woocommerce产品更新。但是,当产品不销售时,销售价格将设置为0,有些空白。

我想要一种情况,当产品的销售价为0时,它应仅显示正常价格。我确实可以使用此代码

add_action ('woocommerce_before_shop_loop_item', 'check_sale_price', 40 );
add_action('woocommerce_before_single_product', 'check_sale_price', 40 );
function check_sale_price() {
global $product;
if ( $product->sale_price == '0' ) {
  $price = $product->regular_price;
  $product->sale_price = $price;
  $product->price = $price;
  global $wpdb;
  $wpdb->get_results( 'UPDATE wp_postmeta SET meta_value='.$price.' WHERE meta_key="_sale_price" AND post_id='.$product->id, OBJECT );
  $wpdb->get_results( 'UPDATE wp_postmeta SET meta_value='.$price.' WHERE meta_key="_price" AND post_id='.$product->id, OBJECT );
}
}

但是woocommerce然后仅在下方显示此内容,而不是正常价格。

see what i mean here

1 个答案:

答案 0 :(得分:1)

自Woocommerce 3起,您的代码已过时且有点笨拙,请尝试以下操作:

add_action('woocommerce_before_shop_loop_item', 'check_sale_price', 1 );
add_action('woocommerce_before_single_product', 'check_sale_price', 1 );
function check_sale_price() {
    global $product;

    if( $product->get_sale_price() == '0' ) {
        $product->set_sale_price(''); // Empty sale price
        $product->set_price( $product->get_regular_price() ); // Set regular price back
        $product->save(); // Save and update caches
    }
}

// Change the displayed matching prices (to be sure)
add_filter('woocommerce_get_price_html', 'custom_price_html', 10, 2 );
function custom_price_html( $price, $product ) {

    if ( $product->is_on_sale() && $product->get_sale_price() == '0' ) {
        $price = wc_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ) ) . $product->get_price_suffix();
    }
    return $price;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。