簡體   English   中英

如果銷售價格等於零,則僅在 Woocommerce 中顯示常規產品價格

[英]If sale price is equal to zero show only regular product price in Woocommerce

我通過 xml 提要上傳運行我的 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 然后只在下面顯示這個,而不僅僅是正常價格。

明白我的意思

您的代碼自 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 文件中。 它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM