WooCommerce: собственное раскрывающееся меню сортировки/порядка (FacetWP)

Я хочу заменить порядок WooCommerce на аспект сортировки FacetWP. Для этого я использую выходной хук facetwp_sort_options: https://facetwp.com/documentation/developers/output/facetwp_sort_options/

Я уже заменил раскрывающийся список заказов, но параметры заказа WooCommerce отсутствуют.

На данный момент мне удалось только добавить порядок по цене:

add_filter( 'facetwp_sort_options', function( $options, $params ) {

    $options['price_asc'] = array(
        'label' => 'Price: low to high',
        'query_args' => array(
            'meta_key' => '_price',
            'orderby' => 'meta_value_num',
            'order' => 'ASC'
         )
    );

    $options['price_desc'] = array(
        'label' => 'Price: high to low',
        'query_args' => array(
            'meta_key' => '_price',
            'orderby' => 'meta_value_num',
            'order' => 'DESC'
         )
    );
    return $options;

Этот ответ помог: https://stackoverflow.com/a/46715264/1788961

Но как я могу добавить остальные параметры заказа WooCommerce. Есть ли какой-нибудь список метаполей, которые я мог бы использовать?

Мне нужно добавить следующие параметры заказа:

  • порядок по умолчанию
  • Сортировать по популярности
  • Сортировать по среднему рейтингу

Редактировать: удалена опция продажи товаров (сама разобралась)


person Cray    schedule 07.03.2020    source источник
comment
_price или _regular_price — это ценовые поля. SELECT * FROM {yourprefix}_postmeta WHERE meta_key LIKE '%price%'   -  person Howard E    schedule 07.03.2020
comment
Привет, я обнаружил, что sale_price также является метаполем. Или я ошибаюсь? Проблема в том, что фильтр сортирует по sale_price (показывает их первыми), но в конце также показывает товары с обычными ценами. Я просто хочу показать товары со скидкой.   -  person Cray    schedule 07.03.2020
comment
Я не знаком с плагином facetWP, но похоже, что ваш meta_query выглядит не так, как метазапрос. Поля цены _sale_price, _regular_price, _price   -  person Howard E    schedule 07.03.2020
comment
Мета-запрос для ценовых полей (от высокой к низкой и наоборот) отлично работает. Проблема в том, что я не мог фильтровать только по _sale_price. Он всегда показывает продукты без цены продажи. есть ли возможность проверить это в мета-запросе?   -  person Cray    schedule 07.03.2020
comment
Я нашел решение для проверки продажной цены. пришлось добавить следующий код: 'value' => '', 'compare' => '!=' в метазапрос array.   -  person Cray    schedule 07.03.2020


Ответы (1)


Получено с этого сайта

Может быть полезно:

add_filter( 'facetwp_sort_options', function( $options, $params ) {
unset( $options['date_asc'] );
unset( $options['title_asc'] );
unset( $options['title_desc'] );
$options['default']['label'] = 'Standaard sortering';
$options['date_desc']['label'] = 'Sorteren op nieuwste';

$options['popularity_new'] = [
    'label' => 'Sorteer op populariteit',
    'query_args' => [
        'orderby' => 'post_views',
        'order' => 'DESC',
    ]
];
$options['price_asc'] = [
    'label' => 'Sorteer op prijs: laag naar hoog',
    'query_args' => [
        'orderby' => 'meta_value_num',
        'meta_key' => '_price',
        'order' => 'ASC',
    ]
];
$options['price_desc'] = [
    'label' => 'Sorteer op prijs: hoog naar laag',
    'query_args' => [
        'orderby' => 'meta_value_num',
        'meta_key' => '_price',
        'order' => 'DESC',
    ]
];

return $options;
}, 10, 2 );
person Sjoerd    schedule 19.02.2021