Intereting Posts
Я хочу удалить последний после wp_nav_menu Бесконечная проблема цикла с подключаемым модулем WordPress MU Domain Mapping Анонимные сообщения спама, когда только зарегистрированные пользователи могут комментировать При установке автоматически создайте страницу и установите ее как главную страницу Почтовый список на основе автора страницы Неужели бесполезны? Можно ли вставлять необработанную строку CSS непосредственно из файла шаблона? Фильтр the_content () в формате Quote Post для отображения котировок Стратегия обработки иерархических страниц с пустым родительским контентом Штрих-код полосы от конкретных типов сообщений (форматов) PHP Warning: call_user_func () ожидает, что параметр 1 будет действительным обратным вызовом Сообщение не отображается в текстовом поле редактирования Как я могу получить свои пользовательские типы сообщений в nav-menus.php «Меню»? Как отображать сообщения по подсчету голосов, и если значение не будет продолжаться с последними сообщениями без голосов? Отображение чего-то в заголовке после загрузки всех стилей

Как выполнить определенный поиск таксономии wp_query

Я добавил пользовательскую таксономию, называемую опытом, на страницу post-type, а таксономия имеет термины « vfds » и « plcs »,

Я пытаюсь создать поиск, в котором пользователь может выбрать один или несколько терминов таксономии опыта из списка выбора, нажать кнопку отправки и увидеть результаты wp_query.

Мне нужен результат запроса, чтобы показывать страницы с

1) в таксономии опыта нет (нулевых) терминов, выбранных

2) выбран один или несколько терминов

У меня есть список выбора html с experience[] массива experience[] для захвата нескольких вариантов:

 <select name="experience[]" multiple="multiple"> <option value="vfds">VFDs</option> <option value="plcs">PLCs</option> </select> 

Затем я передаю этот массив в wp_query:

  <?php $_GET['submit']; $experience = $_GET['experience']; $args = array ( 'post_type' => 'page', 'tax_query' => array( array( 'taxonomy' => 'experience1', 'field' => 'slug', 'terms' => $experience ) ) ); $query = new WP_Query( $args ); 

Запрос работает отлично в том смысле, что он отобразит страницы с одним или несколькими условиями, выбранными в категории опыта.

Проблема, с которой я сталкиваюсь, заключается в следующем:

Если страница имеет пустые (нет) значения для категории опыта, то она не отображается в списке результатов.

Есть ли способ, с помощью которого wp_query будет показывать страницы с

  1. нет выбранных условий
  2. выбран один или несколько терминов

спасибо


EDIT # 1

Позвольте мне добавить, что в целом я пытаюсь отойти от использования Drupal с Views. Я пытаюсь реплицировать способности Views на возможность поиска с использованием полей выбора с несколькими значениями.

Я попытался использовать wp_query с настраиваемым полем выбора с несколькими значениями и до сих пор терпел неудачу.

Поэтому я переключился на использование категорий с несколькими терминами и близко к репликации результата поиска типа «Вид».

Если кто-то знает какой-либо другой способ делать то, что я хотел бы сделать в WP, я бы очень признателен.

Еще раз спасибо!


EDIT # 2

Я понимаю, что мой вопрос не имеет смысла. Позвольте мне попытаться объяснить и дальше. Причина, по которой мне нужно найти результат, чтобы показывать страницы с ZERO или более терминов вместо ONE или более терминов, заключается в том, что я хотел бы объединить поиск таксономии с другим полевым поиском, например City. Если пользователь заполняет только значение для города и не имеет значения для условий опыта, результаты поиска будут равны нулю, потому что он не заполняет условия. Вместо этого мне нужно показать все страницы с выбранным городом, независимо от того, выбраны ли какие-либо условия опыта

Solutions Collecting From Web of "Как выполнить определенный поиск таксономии wp_query"

Похоже, что проще всего применить налоговый запрос, только если указан хотя бы один «опыт». Что-то вроде:

 // Get passed vars $experience = $_GET['experience']; // Start building the args array $args = array( 'post_type' => 'page', ); // If any experience items were passed if( is_array( $experience ) && count( $experience ) > 0 ) { // Get an array of possible "experience" terms as a whitelist to check against. $arr_term_details = get_terms( 'experience1', array( 'hide_empty' => 0 ) ); $arr_terms = array(); foreach($arr_term_details as $this_term) { array_push($arr_terms, $this_term->slug); } // If ALL of the experience terms exist in the whitelist if( count(array_intersect( $experience, $arr_terms )) == count($experience) ) { // Add the tax query $args['tax_query'] = array( array( 'taxonomy' => 'experience1', 'field' => 'slug', 'terms' => $experience ) ); } } // Run the query $query = new WP_Query( $args ); 

Условие if может быть неправильным – я забываю, как формы передают значения для мульти-select.

UPDATE: добавлена ​​проверка белого стиля для данных $ _GET по предложению Чипа Беннета.