Sélectionner une page

Voici une astuce WooCommerce pour changer la façon dont sont affichés les produits similaires de votre boutique.
Par défaut, je ne sais pas comment sont choisis les produits similaires, mais mon client voulait contrôler la fonctionnalité soit en utilisant des balises, soit par catégorie.
Pour cela, nous allons rajouter une fonction. Nous allons voir comment le faire, étape par étape :

Modifier le fichier functions.php

Sur mon thème de enfant, j’ai ajouté une nouvelle fonction :

[pastacode manual= »%3C%3Fphp%0D%0A%0D%0A%2F%2FNew%20%22Related%20Products%22%20function%20for%20WooCommerce%0D%0Afunction%20get_related_custom(%20%24id%2C%20%24limit%20%3D%205%20)%20%7B%0D%0A%20%20%20%20global%20%24woocommerce%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Related%20products%20are%20found%20from%20category%20and%20tag%0D%0A%20%20%20%20%24tags_array%20%3D%20array(0)%3B%0D%0A%20%20%20%20%24cats_array%20%3D%20array(0)%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Get%20tags%0D%0A%20%20%20%20%2F%2F%24terms%20%3D%20wp_get_post_terms(%24id%2C%20’product_tag’)%3B%0D%0A%20%20%20%20%2F%2Fforeach%20(%20%24terms%20as%20%24term%20)%20%24tags_array%5B%5D%20%3D%20%24term-%3Eterm_id%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20or%20Get%20categories%0D%0A%20%20%20%20%24terms%20%3D%20wp_get_post_terms(%24id%2C%20’product_cat’)%3B%0D%0A%20%20%20%20foreach%20(%20%24terms%20as%20%24term%20)%20%24cats_array%5B%5D%20%3D%20%24term-%3Eterm_id%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Don’t%20bother%20if%20none%20are%20set%0D%0A%20%20%20%20if%20(%20sizeof(%24cats_array)%3D%3D1%20%26%26%20sizeof(%24tags_array)%3D%3D1%20)%20return%20array()%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Meta%20query%0D%0A%20%20%20%20%24meta_query%20%3D%20array()%3B%0D%0A%20%20%20%20%24meta_query%5B%5D%20%3D%20%24woocommerce-%3Equery-%3Evisibility_meta_query()%3B%0D%0A%20%20%20%20%24meta_query%5B%5D%20%3D%20%24woocommerce-%3Equery-%3Estock_status_meta_query()%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Get%20the%20posts%0D%0A%20%20%20%20%24related_posts%20%3D%20get_posts(%20apply_filters(‘woocommerce_product_related_posts’%2C%20array(%0D%0A%20%20%20%20%20%20%20%20’orderby’%20%20%20%20%20%20%20%20%3D%3E%20’rand’%2C%0D%0A%20%20%20%20%20%20%20%20’posts_per_page’%20%3D%3E%20%24limit%2C%0D%0A%20%20%20%20%20%20%20%20’post_type’%20%20%20%20%20%20%3D%3E%20’product’%2C%0D%0A%20%20%20%20%20%20%20%20’fields’%20%20%20%20%20%20%20%20%20%3D%3E%20’ids’%2C%0D%0A%20%20%20%20%20%20%20%20’meta_query’%20%20%20%20%20%3D%3E%20%24meta_query%2C%0D%0A%20%20%20%20%20%20%20%20’tax_query’%20%20%20%20%20%20%3D%3E%20array(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20’relation’%20%20%20%20%20%20%3D%3E%20’OR’%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20array(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’taxonomy’%20%20%20%20%20%3D%3E%20’product_cat’%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’field’%20%20%20%20%20%20%20%20%3D%3E%20’id’%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’terms’%20%20%20%20%20%20%20%20%3D%3E%20%24cats_array%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20array(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’taxonomy’%20%20%20%20%20%3D%3E%20’product_tag’%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’field’%20%20%20%20%20%20%20%20%3D%3E%20’id’%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’terms’%20%20%20%20%20%20%20%20%3D%3E%20%24tags_array%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0D%0A%20%20%20%20%20%20%20%20)%0D%0A%20%20%20%20)%20)%20)%3B%0D%0A%20%20%20%20%24related_posts%20%3D%20array_diff(%20%24related_posts%2C%20array(%20%24id%20))%3B%0D%0A%20%20%20%20return%20%24related_posts%3B%0D%0A%7D%0D%0Aadd_action(‘init’%2C’get_related_custom’)%3B%0D%0A%3F%3E » provider= »manual » lang= »php »/]

Copie du fichier related.php

Après cela, je copie le fichier related.php (du thème > WooCommerce > single-product > related.php) dans le dossier de mon thème enfant.

Changer l’appel de la fonction

Dans le fichier related.php j’ai modifier la ligne :

[pastacode manual= »%24related%20%3D%20%24product-%3Eget_related(%203%20)%3B » provider= »manual » lang= »php »/]

En ceci :

[pastacode manual= »%24related%20%3D%20get_related_custom(%24product-%3Eid%2C%203)%3B » provider= »manual » lang= »php »/]

Et voilà, cela devrait fonctionner.

Vous pouvez modifier la fonction si vous souhaitez plutôt que les produits liés au mots clés ou bien les deux…

Merci à FELIPE PAVÃO pour cette astuce.

A bientôt

Florent Maillefaud

WooCommerce : afficher vos produits similaires par catégorie 1Webmaster à Sablons (Isère) / Création de sites internet WordPress.

Micro-entrepreneur depuis 2012, je vous propose la création ou la refonte de votre site internet sous WordPress et à votre image.

Que ce soit un site vitrine, un blog ou un site e-commerce pour votre entreprise ou association, laissez votre empreinte sur le web !

Share This