Woocommerce ordena ASC y DESC según la categoría

1 minuto de lectura

Avatar de usuario de Frithir.com
Frithir.com

Intento ordenar los productos según las categorías.

Si la categoría de producto A y las subcategorías ordenan ASC

De lo contrario, si la categoría de producto B y las subcategorías ordenan DESC.

En funciones.php

add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {

$args['meta_key'] = 'countdown_date';

$args['orderby'] = 'meta_value';

// need an if statement here to switch the order

$args['order'] = 'DESC';         

return $args;
}

Avatar de usuario del dominio
Dominio

Puede usar el siguiente código para resolver su propósito:

function wdm_change_ordering($args)
{
    if (is_product_category()) {
        global $wp_query;
        $cat = $wp_query->get_queried_object();

        $category_A_term_id = 53;
        $category_B_term_id = 2;

        if (!empty($cat) && ($cat->term_id === $category_A_term_id || $cat->parent === $category_A_term_id)) {
            $args['order'] = 'ASC';
        } elseif (!empty($cat) && ($cat->term_id === $category_B_term_id || $cat->parent === $category_B_term_id)) {
            $args['order'] = 'DESC';
        }
    }
    return $args;
}
add_filter('woocommerce_get_catalog_ordering_args', 'wdm_change_ordering', 10, 1);

Recuerda cambiar $category_A_term_id & $category_B_term_id valores de variables a los identificadores de categoría correspondientes.

El código anterior verificará si la página de archivo de categoría es actual y, si lo es, categoría A o niño de categoría Aorden de cambio, de manera similar para la categoría B.

Alternativamente, también puede usar la siguiente condición de WooCommerce:

is_product_category( array( 'shirts', 'games' ) )

pero, aquí se deben especificar todas las categorías.

  • ¡Gracias, esto funcionó perfectamente!. Agregué nuevamente en meta_key personalizado y orderby.

    – Frithir.com

    27 de mayo de 2015 a las 4:58


¿Ha sido útil esta solución?