Afficher les produits WooCommerce de manière aléatoire par défaut sur la page de la boutique

Aug 16 2020

J'essaye d'afficher des produits au hasard sur ma page de boutique avec ce code:

add_filter('woocommerce_get_catalog_ordering_args', 'set_sort_order');
function set_sort_order($args) { $args['orderby'] = 'rand';
    return ($args);    
}

Mais ce code crée une page de catégorie de produit aléatoire, mais je dois simplement stocker la page - première page. Pas sur la page de catégorie de produit. Comment puis-je le faire ?

Réponses

2 LoicTheAztec Aug 16 2020 at 11:03

Utilisez plutôt ce qui suit pour trier les produits au hasard sur les pages d'archives de la boutique uniquement:

// Set default orderby query to "rand" option for shop archive pages
add_filter('woocommerce_get_catalog_ordering_args', 'shop_default_orderby_rand');
function shop_default_orderby_rand($args) { if( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) { $args['orderby'] = 'rand';
        return ($args);
    }
}

Ou vous pouvez également utiliser celui-ci:

// Set default orderby query to "rand" for shop archive pages
add_action( 'pre_get_posts', 'shop_default_orderby_rand' );
function shop_default_orderby_rand( $query ) {
    if ( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) {
        $query->set( 'orderby', 'rand' );
    }
}

Insérez le code dans le fichier functions.php de votre thème enfant actif (ou thème actif). Testé et fonctionne.