,

WooCommerce : afficher vos produits similaires par catégorie

WooCommerce : afficher vos produits similaires par catégorie

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 :

<?php

//New "Related Products" function for WooCommerce
function get_related_custom( $id, $limit = 5 ) {
    global $woocommerce;

    // Related products are found from category and tag
    $tags_array = array(0);
    $cats_array = array(0);

    // Get tags
    //$terms = wp_get_post_terms($id, 'product_tag');
    //foreach ( $terms as $term ) $tags_array[] = $term->term_id;

    // or Get categories
    $terms = wp_get_post_terms($id, 'product_cat');
    foreach ( $terms as $term ) $cats_array[] = $term->term_id;

    // Don't bother if none are set
    if ( sizeof($cats_array)==1 && sizeof($tags_array)==1 ) return array();

    // Meta query
    $meta_query = array();
    $meta_query[] = $woocommerce->query->visibility_meta_query();
    $meta_query[] = $woocommerce->query->stock_status_meta_query();

    // Get the posts
    $related_posts = get_posts( apply_filters('woocommerce_product_related_posts', array(
        'orderby'        => 'rand',
        'posts_per_page' => $limit,
        'post_type'      => 'product',
        'fields'         => 'ids',
        'meta_query'     => $meta_query,
        'tax_query'      => array(
            'relation'      => 'OR',
            array(
                'taxonomy'     => 'product_cat',
                'field'        => 'id',
                'terms'        => $cats_array
            ),
            array(
                'taxonomy'     => 'product_tag',
                'field'        => 'id',
                'terms'        => $tags_array
            )
        )
    ) ) );
    $related_posts = array_diff( $related_posts, array( $id ));
    return $related_posts;
}
add_action('init','get_related_custom');
?>

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 :

$related = $product->get_related( 3 );

En ceci :
$related = get_related_custom($product->id, 3);

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

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

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