Maison > Questions et réponses > le corps du texte
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粉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'; }