Если вы просто хотите, чтобы товары не выбирали бренды, я обновил ваш код до следующего (но учтите, что все бренды, содержащие в своем имени букву «а», не обязательно начинаются с «а», будут выбраны):
'taxonomy' => 'brand',
'field' => 'name',
'terms' => $brand_name_field
'operator' => 'LIKE'
Если начинать с 'a' является обязательным условием, я бы посоветовал вам выполнить запрос после того, как пользователь введет не менее 2 или 3 символов, чтобы уменьшить вероятность получения ненужных торговых марок.
Если вы хотите получить только бренды, названия которых начинаются с 'a', вы не должны делать 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, когда ранее совпадали имена, похожие на термины, начинающиеся со строки.
Если вы хотите также искать имена терминов и слагов, вы можете использовать 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'
]
]);
Дайте мне знать, если это работает для вас.