J'aimerais afficher le prix variable par défaut dans l'onglet "à partir du prix" de la page du produit unique. et ne pas avoir le de prix.
Il est déroutant pour le client de voir un prix "à partir de" puis en dessous un prix pour chaque variation, qui change une fois qu'une variation est choisie.
voir image ci-jointe
Ainsi, au lieu d’avoir à définir des champs de prix, je souhaite n’en afficher qu’un seul, c’est un produit unique ou variable.
La fonction woocommerce_template_single_price()
qui gère l'affichage du prix "normal" est connectable, ce qui signifie qu'elle peut être remplacée en l'insérant dans votre functions.php
:
//override woocommerce function
function woocommerce_template_single_price() {
global $product;
if ( ! $product->is_type('variable') ) {
woocommerce_get_template( 'single-product/price.php' );
}
}
Cela fonctionne car dans woocommerce-template.php
les fonctions sont lancées comme ceci:
if ( ! function_exists( 'woocommerce_template_single_price' ) ) {
function woocommerce_template_single_price() {
woocommerce_get_template( 'single-product/price.php' );
}
}
Comme vous pouvez le voir, le conditionnel dit si la fonction n'existe pas , mais la fonction existe déjà. Celui que nous avons mis dans le functions.php
sera utilisé, car il a été lancé plus tôt.
Pour afficher le prix de la variation lorsqu'une seule page de produit avec un produit variable est chargée, vous devez sélectionner une variante de produit par défaut sur la page de modification du produit.
J'utilise le thème "Porto" et j'ai aussi ce problème. Vous pouvez résoudre le problème en mettant ce code dans votre functions.php
à partir de votre thème enfant:
// Cheapest Price
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
Que votre prix ressemble à un prix unique et le prix le moins cher de votre produit variable. Ça marche. Je l'ai utilisé.