"Afficher le badge de vente sans afficher le prix de vente sur Woocommerce"
P粉590929392
P粉590929392 2024-01-07 13:59:13
0
1
653

Je développe woocommerce sur WordPress et je souhaite créer des badges de vente mais ignorer le prix de vente (uniquement le prix régulier).

J'ai essayé plusieurs fois mais le "Badge Promotionnel" n'apparaît que lorsque je mets le numéro sur le prix de vente du produit

J'utilise le code ci-dessous

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粉590929392
P粉590929392

répondre à tous(1)
P粉713866425

Le filtre lui-même n'est appliqué que lorsque le produit est promu.

Vous devez couvrir l'action de vente flash qui se produit avant de vérifier si le produit est en vente.

Tout d’abord, retirez le crochet principal de la vente flash.

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 );

Ensuite, ajoutez votre fonctionnalité de vente personnalisée.

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 );

Alors utilisez 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';
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal