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