Créer un catalogue produit (prix sur demande) avec WordPress / WooCommerce

Sur un WordPress, je devais monter un catalogue produit avec le prix sur demande. Je suis parti sur une solution custom sans extension premium en utilisant que WooCommerce. 

J’ai mis en place une “boutique” WooCommerce où les gens ajoutent le produit qu’il souhaite à un devis (le panier) et j’ai désactivé tous les moyens de paiement. J’ai laissé que “Chèque” et je l’ai renommé en “Devis seulement” avec une petite description pour indiquer que c’est une demande de devis et non une commande. En activant un seul “moyen de paiement”, ça bloquait cette partie paiement dont on a pas besoin. 

Une fois les produits ajoutés au panier (devis), les gens pouvaient finaliser le devis et en confirmant sur la page de paiement, je recevais la demande de devis par mail (le mail commande de WooCommerce). Vu qu’un seul moyen de paiement était disponible

En résumé, ce qu’il me fallait : 

  • Ne pas afficher le prix sur les produits, dans le panier et sur la page paiement. Enlever toutes les références à total et sous total. 
  • Donner le moyen aux gens de faire une demande prix pour plusieurs produits. J’ai utilisé le panier et j’ai enlevé toutes les colonnes dont je ne savais pas besoin avec du CSS. 
  • Désactiver l’option paiement rapidement. 

Désactiver le prix sur tout le site

/** 
* masquer le prix sur tout le site : panier, email, checkout. Le symbole - sera affiché à la place. 
* Ref : http://organisatie-ontwikkeling.org/blog/hide-prices-woocommerce-shop-cart-email/
**/

add_filter( 'woocommerce_variable_sale_price_html', 'no_price', 10, 2 );
add_filter( 'woocommerce_variable_price', 'no_price', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'no_price', 10, 2 );
add_filter( 'woocommerce_get_variation_price', 'no_price', 10, 2 );
add_filter( 'woocommerce_cart_item_price', 'no_price', 10, 2 );
add_filter( 'woocommerce_cart_item_subtotal', 'no_price', 10, 2 );
add_filter( 'woocommerce_cart_subtotal', 'no_price', 10, 2 );
add_filter( 'woocommerce_cart_total', 'no_price', 10, 2 );
add_filter( 'woocommerce_cart_taxes_total', 'no_price', 10, 2 );
add_filter( 'woocommerce_get_order_item_totals', 'no_price', 10, 2 );
add_filter( 'woocommerce_get_formatted_order_total', 'no_price', 10, 2 );
add_filter( 'woocommerce_order_amount_line_subtotal', 'no_price', 10, 2 );
add_filter( 'woocommerce_order_amount_line_tax', 'no_price', 10, 2 );
add_filter( 'woocommerce_order_formatted_line_subtotal', 'no_price', 10, 2 );

function no_price( $price, $product ) {
	$price = '-';
	return $price;
}

Si vous avez besoin de cacher les colonnes prix, quantité, etc dans le panier, vous pouvez utiliser du CSS. Un simple display:none sur la colonne et son contenu. 

Modifier les libellés du site

Pour modifier les libellés, utiliser du gettext dans votre functions.php 

/**
* Changer le texte de WooCommerce
* Ref https://gist.github.com/BFTrick/7040403
*/

function my_text_strings( $translated_text, $text, $domain ) {
	switch ( $translated_text ) {
		case 'Add to cart' :
			$translated_text = __( 'Demander le prix', 'woocommerce' );
			break;
		case 'View Cart' :
			$translated_text = __( 'Voir ma demande', 'woocommerce' );
			break;
	}
	return $translated_text;
}
add_filter( 'gettext', 'my_text_strings', 999, 3 );

Dans l’exemple utilisé, l’auteur a mis la priorité d’exécution à 20. Je l’ai augmenté à 999 pour s’exécuter en dernier, m’assurant ainsi que le code n’est pas écrasé par une autre modif de ce genre ailleur dans le thème ou dans une autre extension.

J’ai utilisé ce code pour changer toutes les références au panier et à l’achat. Par exemple, j’ai changé le “Ajouter au panier” à “Ajouter au devis”. 

Si du gettext ne fonctionne pas, vous pouvez aussi utiliser l’extension gratuite Loco Translate pour chercher et changer le texte.

Laisser un commentaire

Fermer le menu