首頁  >  問答  >  主體

“在 Woocommerce 上顯示銷售徽章而不顯示銷售價格”

我正在 WordPress 上開發 woocommerce,我想製作一些銷售徽章,但忽略銷售價格(只有常規價格)。

我已經嘗試過幾次,但只有當我將數字放在產品的促銷價格上時,「促銷徽章」才會出現

我使用下面的程式碼

add_filter('woocommerce_sale_flash', 'woocommerce_custom_sale_text', 10, 3);
function woocommerce_custom_sale_text($text, $post, $_product)
{
    global $post,$product;
    if ( ! $product->is_in_stock() ) return;
    $sale_price = get_post_meta( $product->id, '_price', true);
    $regular_price = get_post_meta( $product->id, '_regular_price', true);
    if (has_term('one', 'product_cat', $product->ID)) {
        return '<span class="onsale">one</span>';
    } elseif (has_term('two', 'product_cat', $product->ID)) {
        return '<span class="onsale">two</span>';
    } elseif (has_term('three', 'product_cat', $product->ID) || empty($sale_price)) {
        return '<span class="onsale">three</span>';
    }
    return '<span class="onsale">Sale</span>';
}

P粉590929392P粉590929392260 天前541

全部回覆(1)我來回復

  • P粉713866425

    P粉7138664252024-01-08 13:15:16

    過濾器本身僅在產品促銷時套用。

    您需要覆蓋在檢查產品是否在促銷之前發生的閃購作業。

    首先,刪除核心的閃購掛鉤。

    remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
    remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );

    然後,新增您的自訂銷售功能。

    add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_custom_sale_text', 10 );
    add_action( 'woocommerce_before_single_product_summary', 'woocommerce_custom_sale_text', 10 );

    然後使用echo而不是return

    #
    function woocommerce_custom_sale_text()
    {
        global $post,$product;
        if ( ! $product->is_in_stock() ) return;
        $sale_price = get_post_meta( $product->id, '_price', true);
        $regular_price = get_post_meta( $product->id, '_regular_price', true);
        if (has_term('one', 'product_cat', $product->ID)) {
            echo 'one';
        } elseif (has_term('two', 'product_cat', $product->ID)) {
            echo 'two';
        } elseif (has_term('three', 'product_cat', $product->ID) || empty($sale_price)) {
            echo 'three';
        }
        echo 'Sale';
    }

    回覆
    0
  • 取消回覆