recherche

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

Remplacez le prix de vente WooCommerce 0 par un texte personnalisé et conservez le prix régulier barré

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粉190883225P粉190883225236 Il y a quelques jours398

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

  • P粉420868294

    P粉4208682942024-03-23 09:05:34

    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.

    répondre
    0
  • Annulerrépondre