Remplacez le prix de vente WooCommerce 0 par un texte personnalisé et conservez le prix régulier barré
P粉190883225
P粉190883225 2024-03-22 10:51:29
0
1
412

J'ai essayé de modifier le prix de vente de mes produits WooCommerce en "Membres gratuits" au lieu de 0. Je souhaite modifier le prix de vente en texte personnalisé comme : 

J'ai cherché sur Internet et trouvé un extrait de code qui fait la même chose, mais le problème est qu'il modifie également le prix de vente et le prix régulier.

Voici le code que j'ai trouvé sur Stack Overflow :

function my_wc_custom_get_price_html( $price, $product ) {
    if ( $product->get_price() == 0 ) {
        if ( $product->is_on_sale() && $product->get_regular_price() ) {
            $regular_price = wc_get_price_to_display( $product, array( 'qty' => 1, 'price' => $product->get_regular_price() ) );

            $price = wc_format_price_range( $regular_price, __( 'Free for members!', 'woocommerce' ) );
        } else {
            $price = '<span class="amount">' . __( 'Free!', 'woocommerce' ) . '</span>';
        }
    }

    return $price;
}

add_filter( 'woocommerce_get_price_html', 'my_wc_custom_get_price_html', 10, 2 );

Le problème est que ce code supprime également le barré sur le prix normal. Voici le résultat lorsque j'essaie d'ajouter du CSS en ligne pour ajouter du barré :

Ce que je souhaite réaliser, c'est modifier le prix de vente comme indiqué dans la capture d'écran ci-dessous :

P粉190883225
P粉190883225

répondre à tous(1)
P粉420868294

Lorsqu'un produit est en vente avec un prix de 0 (zéro), essayez d'utiliser le code simplifié suivant pour afficher le prix régulier barré dans un texte personnalisé :

add_filter( 'woocommerce_get_price_html', 'custom_formatted_sale_price_html', 10, 2 );
function custom_formatted_sale_price_html( $price_html, $product ) {
    if ( $product->is_on_sale() && $product->get_price() !== 0 ) {
        $regular_price   = wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) );
        $sale_price_text = $regular_price > 0 ? __( 'Free only for members!', 'woocommerce' ) : __( 'Free!', 'woocommerce' );
        $style           = $regular_price > 0 ? ' style="background-color:#08A04B;color:white;padding:0 5px;"' : '';
 
        return '<del aria-hidden="true">' . wc_price( $regular_price ) . '</del> <span'.$style.'>' .  $sale_price_text . '</span>';
    }
    return $price_html;
}

Cela devrait fonctionner comme prévu.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal