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

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 !

Abonnez-vous

Restez en contact avec moi pour recevoir mes derniers articles concernant mon activité ou mes astuces pour WordPress.

Vos données ne seront jamais exploitées par un tiers. Vous avez aussi à chaque instant la possibilité de vous désabonner

dapibus Curabitur Sed nunc neque. pulvinar ut ut luctus Lorem
Share This