Фильтр tax_query по термину, начинающемуся с символа - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь отфильтровать tax_query по термину, начинающемуся с некоторых символов (например, STAxxxx) в WordPress WP_Query.

Предположим, у меня ниже информация, хранящаяся в WordPress Admin: Тип публикации: product Таксономия: бренд Термины, доступные для бренда: Adidas, Reebok, Puma, Nike, Asics и т. Д.

Если пользователь вводит «a» в текстовое поле бренда, бренды начинаются с «a 'должно заполниться.

Я пробовал ниже фрагмент, но это не сработало:

'taxonomy' => 'brand',
'field' => 'slug',
'terms' => $brand_name_field, '%',
'operator' => 'LIKE'

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Омар, я был в мини-отпуске, поэтому не смог ответить на твой ответ.Я прошу прощения за это.

Ни одно из ваших предложений не сработало для меня.Затем я изучил переполнение стека и нашел полезные ссылки, которые мне помогли.

https://stackoverflow.com/a/29994568/5196594

Спасибо

0 голосов
/ 14 октября 2018

Если вы просто хотите, чтобы товары не выбирали бренды, я обновил ваш код до следующего (но учтите, что все бренды, содержащие в своем имени букву «а», не обязательно начинаются с «а», будут выбраны):

'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'
    ]
]);

Дайте мне знать, если это работает для вас.

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