Maison  >  Questions et réponses  >  le corps du texte

"Afficher le badge de vente sans afficher le prix de vente sur Woocommerce"

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粉590929392P粉590929392260 Il y a quelques jours542

répondre à tous(1)je répondrai

  • P粉713866425

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

    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';
    }

    répondre
    0
  • Annulerrépondre