Ordenar los productos del catálogo de forma aleatoria en WooCommerce

LucusHost, el mejor hosting

Volvemos a un post de ordenar los productos en WooCommerce, algo que parece muy complicado pero no lo es. Después de ver cómo ordenarlos manualmente, poner los agotados al final y cambiar el orden de las variaciones y atributos… Hoy toca que por defecto salgan de forma desordenada, sin ningún tipo de orden por defecto.

Asignar por defecto en el catálogo

Para ello como siempre, añadiremos el siguiente código al fichero functions.php de nuestro child theme o bien en nuestro plugin de funcionalidades como explico aquí.

add_filter('woocommerce_get_catalog_ordering_args', 'orden_por_defecto_random');
function orden_por_defecto_random($args) {
    if( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) {
        $args['orderby'] = 'rand';
        return ($args);
    }
}

Con esto saldrán aleatorios por defecto. Aun así, desde el selector de orden, los podrán cambiar por precio, popularidad, etc. Usar este código, no significa que cada vez que actualices saldrán nuevos productos, ya que para eso habría que cambiar más archivos y no sería tan simple.

Esta funcionalidad viene bien cuando aun no has ordenado nada o tienes tantos productos que para ti es mejor ponerlos de forma «random» y listo.

Dar la opción al usuario de ordenar los productos

En este caso los podemos mostrar desordenados pero desde el selector de ordenar por… Aunque con una imagen seguro que lo entendemos mejor:

ordenar productos aleatoriamente woocommerce

Para conseguir esto añadimos este código:

add_filter( 'woocommerce_get_catalog_ordering_args', 'ordenar_productos_aleatoriamente_con_selector' );
 
function ordenar_productos_aleatoriamente_con_selector( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
 
if ( 'random_list' == $orderby_value ) {
$args['orderby'] = 'rand';
$args['order'] = '';
$args['meta_key'] = '';
}
return $args;
}
 
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
 
function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['random_list'] = 'Aleatoriamente';
return $sortby;
}

Si añadimos este, no hace falta añadir el anterior. Este es para darle la opción al usuario de mostrarlo así y en el anterior cuando entran, ya están desordenados.

Espero como siempre que os haya ayudado, y cualquier otra duda os leo en comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
mailerlite diegol

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

mailerlite diegol

Reader Interactions

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *