Если вам просто нужны продукты без выбора брендов, я обновил ваш код до следующего (но обратите внимание, что все бренды, содержащие «а» в своем названии, не обязательно начинаются с «а»):
'taxonomy' => 'brand',
'field' => 'name',
'terms' => $brand_name_field
'operator' => 'LIKE'
Если необходимо начинать с буквы «а», я бы посоветовал вам выполнять запрос после того, как пользователь введет как минимум 2 или 3 символа, чтобы уменьшить вероятность получения ненужных брендов.
Если вы хотите получить только бренды, названия которых начинаются с «а», вам не следует использовать WP_Query
, вам нужно использовать get_terms()
с набором аргументов name__like
.
Следующее поможет:
$brands = get_terms([
'taxonomy' => 'brand',
'name__like' => 'a' //you can use a variable in your case $search
'fields' => 'ids' //If you cant to fetch all term data use 'all'
]);
Обратите внимание, что при этом не будут получены бренды, начинающиеся с «а», но будут получены все бренды, которые содержат «а», поэтому будут выбраны Adidas, Puma и Asics. Это было изменено в WordPress 3.7, когда ранее name__like соответствовали терминам, начинающимся со строки.
Если вы хотите также искать как названия терминов, так и слаги, вы можете использовать search
вместо name__like
.
Дополнительную информацию можно получить здесь https://developer.wordpress.org/reference/classes/wp_term_query/__construct/
После того, как вы получите бренды, вы также можете получить все продукты, которые относятся к этим брендам, выполнив следующие действия WP_Query
с tax_query
следующим образом, если тот, что вверху, не решит вашу проблему:
$products = new WP_Query([
'post_type' => 'product',
'tax_query' => [
'taxonomy' => 'brand',
'field' => 'term_id',
'terms' => $brands,
'operator' => 'IN'
]
]);
Дайте мне знать, если это работает для вас.
person
Omar Tanti
schedule
14.10.2018
WP_Query
, аget_terms
. WP_Query используется для получения сообщений определенного типа, а get_terms используется для получения всех терминов определенной таксономии. - person Omar Tanti   schedule 14.10.2018