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
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->payment_method_title . ' '; echo ' <strong>Transporteur choisi :</strong> ' . $order->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->cart->subtotal; if($panier< $minorder) { $woocommerce-> 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->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->is_visible() ) return; Et remplacez_la par : if ( ! $product || ! $product->is_visible() || ! $price_html = $product->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 : (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
Laisser un commentaire