Как получить товары в названии которых есть строка?
Получаю товары таким образом, но сортировка по name не срабатывает, по категории дня и набор работает, как можно исправить поиск по имени?
$query = new WP_Query( [
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => [
'relation' => 'AND',
[
'name__like'=> $product_name,
],
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array('nabor'),
],
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $day,
],
]
] );
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
в wp_query нет параметра для поиска по подстроке, но вы можете использовать для этого фильтр posts_where
например вот так
add_filter( 'posts_where', 'search_by_title', 10, 2 );
function search_by_title( $where, &$wp_query ) {
global $wpdb;
$need_title = $wp_query->get( 'name__like' );
if ( $need_title ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( $wpdb->esc_like( $need_title) ) . '%\'';
}
return $where;
}
$query = new WP_Query( [
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'name__like'=> $product_name,
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array('nabor'),
],
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $day,
],
]
] );