Фильтровать продукты по названию "LIKE" в WC_Product_Query в WooCommerce - PullRequest
1 голос
/ 28 мая 2020

В WooCommerce с использованием функции wc_get_products() я хотел бы найти способ фильтровать продукты по имени с помощью оператора LIKE.

На самом деле я могу фильтровать продукты только по a specifici c определенное имя с:

$args = array(
    'limit' => 5,
    'name' => 'Test',
);
$result = wc_get_products( $args );

Можно ли фильтровать продукты, где имя LIKE 'test' ?

1 Ответ

3 голосов
/ 28 мая 2020

Если вы посмотрите официальную документацию WooCommerce для WC_Product_Query в конце раздела «Добавление поддержки настраиваемых параметров» , вы увидите, что вы можете управлять WC_Product_Query с помощью настраиваемого подключенная функция.

Итак, чтобы отфильтровать запрос с параметром «LIKE» с названием продукта, вы можете расширить запрос с помощью аргумента поиска «s», который будет работать следующим образом:

add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handle_custom_query_var', 10, 2 );
function handle_custom_query_var( $query, $query_vars ) {
    if ( isset( $query_vars['like_name'] ) && ! empty( $query_vars['like_name'] ) ) {
        $query['s'] = esc_attr( $query_vars['like_name'] );
    }

    return $query;
}

Код входит в functions. php файл вашей активной дочерней темы (или активной темы). протестировано и работает.


Пример использования с настраиваемым аргументом «like_name»:

$args = array(
    'limit' => 5,
    'like_name' => 'test',
);

wc_get_products( $args );
...