Accueil » Conseils & tutoriels sites internet » Tutoriels Wordpress » Woocommerce : petites astuces via fonctions bien pensées

Woocommerce : petites astuces via fonctions bien pensées

Posté dans : Tutoriels Wordpress 0

Pour rappel, Woocommerce est un plugin WordPress gratuit très performant, qui permet d’installer une boutique sur son blog avec une quantité de paramètres impressionnante. De plus en plus implantée chez nos amis les ricains et les anglois, elle a le double avantage d’évoluer à vitesse grand V, et d’être toujours aussi fiable, autant par les mises à jour que par les outils mis à la disposition des commerçants. Voici au passage quelques statistiques que vous pouvez retrouver sur leur site wocommerce_stats wocommerce_stats2   

 

Contrairement à ce que beaucoup prétendent, les modes de paiement sont loin d’être un souci, car Paypal autant qu’Atos sont très bien supportés (ainsi que de nombreux autres). Le code du plugin peut aisément être overridé sans risque de « casser » la boutique, les produits avoir des options incroyables à moindre coût, comme le plugin pour Woocommerce Fancy Product Designer (dont le développeur est très présent et à l’écoute).  

Il existe de très nombreuses astuces pour pousser encore plus loin les possibilités de ce système de e-commerce. Certaines ne présentent que peu d’intérêt, d’autres ont rapidement été intégrées dans Woocommerce en natif, mais la communauté n’a de cesse d’améliorer et de perfectionner le code déjà existant, en se basant tout simplement sur le Codex de WordPress.   Voici donc quelques astuces pour webdesigner, qui amélioreront votre Woocommerce pour le rendre aussi performant que ses concurrents ! En-dehors de l’override décrit au numéro 8, toutes les autres fonctions sont à ajouter et/ou modifier dans le fichier functions.php à la racine de votre thème. 

 

1/ Notification du mode de paiement choisi sur la notification de commande pour l’admin

// Affichage du mode de paiement choisi, uniquement pour l’admin

add_action( 'woocommerce_email_after_order_table', 'wc_add_payment_type_to_admin_emails', 15, 2 ); 
function wc_add_payment_type_to_admin_emails( $order, $is_admin_email ) {
if ( $is_admin_email ) { 
echo '<strong>Mode de paiement ou devis :</strong> ' . $order-&gt;payment_method_title . '
'; echo '
<strong>Transporteur choisi :</strong> ' . $order-&gt;get_shipping_method() . '
'; } } // Fin affichage le mode de paiement choisi, uniquement pour l'admin 
</pre>
<h4><span><strong>2/ Changer le texte du bouton de mise au panier</strong></span></h4>

<pre style="color: #000000;">function woo_custom_cart_button_text() {
	return __('My Button Text', 'woocommerce');
}
add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');
/**
 * Change the add to cart text on product archives
 */
function woo_archive_custom_cart_button_text() {
	return __( 'My Button Text', 'woocommerce' );
}
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

 

3/ Changer le nom des catégories sur leurs pages correspondantes, et afficher des images associées :

add_action('woocommerce_archive_description', 'category_desc'); function category_desc() { if ( is_product_category('enfants-bebes') ) { echo '
<h1 id="categ_title">Enfants et bébés</h1>'; echo'<img style="width: 100%;" src="../../uploads/categories/enfants-bebes.png" alt="" />'; } 
</pre>

<h4><span><strong>4/ Ajout d'un bloc (texte ou autre) en-dessous du bouton de mise au panier</strong></span></h4>
<pre>
function my_custom_span2(){
echo '<div id="next_degress"> </div>
'; }
add_action( 'woocommerce_simple_add_to_cart', 'my_custom_span2', 30 ); add_action( 'woocommerce_grouped_add_to_cart', 'my_custom_span2', 30 ); 
add_action( 'woocommerce_variable_add_to_cart', 'my_custom_span2', 30 ); add_action( 'woocommerce_external_add_to_cart', 'my_custom_span2', 30 );  

 

5/ Minimum de commande requis

add_action('woocommerce_before_checkout_process','mgris_minimum_order'); 
function mgris_minimum_order() { 
global $woocommerce; 
// Modifier la variable $minorder par votre montant minimum. 
$minorder = 1000; 
$panier = $woocommerce-&gt;cart-&gt;subtotal; 
if($panier&lt; $minorder) { 
$woocommerce-&gt;
add_error( sprintf(__('Désolé, pour pouvoir réaliser une commande en ligne, le montant de votre panier doit être supérieur à <strong>' . $minorder . '</strong>€. <br />
 <a href="%s">Retour à la boutique →</a><br />
 ', 'textdomain'), get_permalink( woocommerce_get_page_id('shop') ) ) ); } }  

 

6/ Ajout de script personnalisé

//Pensez à sécuriser votre jquery avec $j=jQuery.noConflict();
function my_scripts_design() {
wp_enqueue_script( 'custom_design', get_stylesheet_directory_uri() . '/includes/js/custom_design.js', // Modifiez le lien pour le faire correspondre avec l'url de votre script array('jquery') ); } 
add_action('wp_enqueue_scripts', 'my_scripts_method');

 

7/ Renommer les tabs sur la page produit

add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 ); 
function woo_rename_tabs( $tabs ) { 
global $product; 
if( $product-&gt;has_attributes() ) {
// Check if product has attributes 
$tabs['additional_information']['title'] = __( 'Informations complémentaires' ); 
// Rename the additional information tab 
} return $tabs; }  

 

8/ N’afficher que les produits ayant un prix

<p>Procédons à un override propre ! Copiez le fichier content-product.php se trouvant dans le dossier templates du plugin Woocommerce, et placez-le dans votre thème dans un dossier "woocommerce". repérez la ligne suivante : 
if ( ! $product || ! $product-&gt;is_visible() ) return; 
Et remplacez_la par :
 if ( ! $product || ! $product-&gt;is_visible() || ! $price_html = $product-&gt;get_price_html() ) return;

 

9/ Dégressivité des prix dans le panier

// Override des prix dans le panier, basée sur les variations sélectionnées par le client (ici « aucun marquage » et de 1 à 4 couleurs)

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); 
function add_custom_price( $cart_object ) { $marquage = array ('aucun', '1-couleur', '2-couleurs', '3-couleurs', '4-couleurs'); 
//Différentes valeurs de marquage possibles 
$aucun = array('aucun', 'Aucun'); 
$unecouleur = array('1-couleur', '1 couleur'); 
$deuxcouleurs = array('2-couleurs', '2 couleurs'); 
$troiscouleurs = array('3-couleurs', '3 couleurs'); 
$quatrecouleurs = array('4-couleurs', '4 couleurs'); 
foreach ( $cart_object->cart_contents as $key => $value ) { 
// Boucle pour chaque item dans le panier 
	$quantity_cart = ($value['quantity']); 
	// Stockage des quantités par produits dans le panier 
	$marquage_chosen = ($value['variation']); 
	if (array_intersect($aucun, $marquage_chosen)) { 
		//Si le marquage choisi est aucun (comparaison de deux arrays) 
		$value['data']->price = $value['data']->price; 
		//Update du prix 
	} 
	elseif (array_intersect($unecouleur, $marquage_chosen)) { 
	//Si le marquage choisi est 1 couleur (comparaison de deux arrays) 
		$value['data']->price = $value['data']->price + 3; 
	//Update du prix 
	} elseif (array_intersect($deuxcouleurs, $marquage_chosen)) { 
	//Si le marquage choisi est 2 couleurs (comparaison de deux arrays) 
		$value['data']->price = $value['data']->price + 5; 
		//Update du prix 
	} elseif (array_intersect($troiscouleurs, $marquage_chosen)) { 
		//Si le marquage choisi est 3 couleurs (comparaison de deux arrays) 
			$value['data']->price = $value['data']->price + 7; 
		//Update du prix 
	} elseif (array_intersect($quatrecouleurs, $marquage_chosen)) { 
		//Si le marquage choisi est 4 couleurs (comparaison de deux arrays) 
		$value['data']->price = $value['data']->price + 10; 
		//Update du prix 
	} //Structure conditionnelle des quantités présentes dans le panier, pour calcul de la dégressivité 
	if ($quantity_cart < 50){ 
		$value['data']->price = $value['data']->price; 
		//Update old price to new 
	} elseif ($quantity_cart >= 50 && $quantity_cart < 100){ 
		$value['data']->price = $value['data']->price - ($value['data']->price * 20 / 100); 
		//Update old price to new 
	} elseif ($quantity_cart >= 100 && $quantity_cart < 150){ 
			$value['data']->price = $value['data']->price - ($value['data']->price * 30 / 100); 
		//Update old price to new
	} elseif ($quantity_cart >= 150 && $quantity_cart < 200){ 
		$value['data']->price = $value['data']->price - ($value['data']->price * 40 / 100); 
		//Update old price to new 
	} elseif ($quantity_cart >= 200){ 
			$value['data']->price = $value['data']->price - ($value['data']->price * 50 / 100); 
		//Update old price to new 
	} 
	} 
} 

 

10/ Ajout d’un bloc Gravity Upload avant le bouton de mise au panier

// Vous pouvez bien évidemment changer la fonction pour ajouter tout ce que vous voulez juste avant la mise au panier 
function gravity_upload(){ 
echo do_shortcode('[gravityform id=1 title=false description=false ajax=true]'); } 
add_action( 'woocommerce_before_add_to_cart_form', 'gravity_upload' );     

J’expliquerai plus tard comment réécrire un thème avec uniquement du jquery, c’est particulièrement fabuleux de voir les résultats que l’on peut obtenir avec un simple fichier JS !

Un autre post aura pour sujet la sauvegarde automatique de la base de données de WordPress/Woocommerce de manière hebdomadaire, ce afin de sécuriser au maximum les mises à jour (qui sont pourtant d’une fiabilité redoutable). En attendant, je vous invite à suivre comme moi un développeur Woocommerce nommé Rémi Corson, dont le blog WPExplorer est particulièrement fourni et mis à jour régulièrement.

 

Personnellement, ce genre de blog et d’astuces, moi je suis comme les minions : 479651c18ea9de6057fc7e30793b245e   (mais bon sang, qu’est-ce que j’ai avec les minions en ce moment moi ?)

 

Et pensez à regarder cet autre article qui recense tout plein de fonctions utiles !

Imprimer Imprimer

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.