Пользовательский порядок Woocommerce не работает в результатах поиска - PullRequest
0 голосов
/ 12 ноября 2018

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

// Add "Sort by discount" to sorting options. Defaults to biggest to smallest discount.

add_filter('woocommerce_get_catalog_ordering_args'
          ,'mycode_woocommerce_add_salediscount_to_catalog_ordering_args'
          );

function mycode_woocommerce_add_salediscount_to_catalog_ordering_args( $args ) {
    $orderby_value = isset( $_GET['orderby'] ) 
        ? wc_clean( $_GET['orderby'] ) 
        : apply_filters('woocommerce_default_catalog_orderby'
                       ,get_option('woocommerce_default_catalog_orderby' )
                       );
    if ( 'discount' == $orderby_value ) {
        $args['orderby']    = 'meta_value_num';
        $args['order']      = 'DESC';
        $args['meta_key']   = 'discount_amount';
    }
    return $args;
}

add_filter('woocommerce_default_catalog_orderby_options'
          ,'mycode_woocommerce_add_salediscount_to_catalog_orderby'
          );
add_filter('woocommerce_catalog_orderby'
          ,'mycode_woocommerce_add_salediscount_to_catalog_orderby'
          );

function mycode_woocommerce_add_salediscount_to_catalog_orderby( $sortby ) {
    $sortby['discount'] = __( 'Sort by discount', 'woocommerce' );
    return $sortby;
}

Этот код, который я добавил в my_custom_code.php, который является простым плагином для моего собственного кода.

Сортировка основана на мета-значении каждого товара в моем магазине.

При использовании на странице результатов поиска вместо пользовательского заказа порядок соответствует значению.

Просматривая код WC, который управляет упорядочением, я вижу, что is_search() вызывается в нескольких местах, при этом упорядочение сбрасывается до «релевантности», но параметры сортировки по умолчанию могут переопределить это, и они все еще работают (например, сортировка по цене все еще работает).

Так что я представляю, что мне нужно немного изменить код, чтобы он вел себя так же, как параметры поиска по умолчанию, но я не вижу, как это сделать.

Кто-нибудь знает?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...