Как вручную настроить сортировку продуктов WooCommerce на «Популярность»? - PullRequest
2 голосов
/ 15 апреля 2019

В WooCommerce я использую следующий код, чтобы установить сортировку по умолчанию для сортировки по дате для определенной страницы архива категории продукта:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 20, 1);
function custom_catalog_ordering_args($sortby)
{
    $product_category = 'specials'; // <== HERE define your product category slug 

    // Only for defined product category archive page
    if (! is_product_category($product_category)) {
        return;
    }
    return 'date';
}

Однако это влияет на мои общие настройки сортировки по умолчанию "по популярности », например, когда я смотрю на страницу своего магазина, она сортируется неправильно, но если я вручную изменяю ее для сортировки по чему-то другому, а затем обратно, она сортирует ее правильно.

Как мне решить эту проблему или как вручную настроить оставшуюся часть магазина на заказ по популярности с php, так как это может решить проблему?

1 Ответ

2 голосов
/ 15 апреля 2019

Обновлено: С помощью ловушки фильтра вам всегда нужно возвращать первую переменную аргумента функции, а не только return только без значения или аргумента переменной функции по умолчанию… Итак, в вашем коде:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);
function custom_catalog_ordering_args( $orderby )
{
    $product_category = 'specials'; // <== HERE define your product category slug 

    // For all other archives pages
    if ( ! is_product_category($product_category)) {
        return $orderby; // <====  <====  <====  <====  <====  HERE
    }
    // For the defined product category archive page
    return 'date'; 
}

ИЛИ лучше так:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);
function custom_catalog_ordering_args( $orderby ) {
    // HERE define your product category slug
    $product_category = 'specials';  

    // Only for the defined product category archive page
    if ( is_product_category($product_category)) {
        $orderby = 'date'; 
    }
    return $orderby; 
}

Теперь должно работать.

Похожие:

...