Intereting Posts
Две страницы поиска, одна форма поиска meta_query, сравнение чисел, не совсем работает так, как должно Как использовать 2 измененных шаблона подачи? Использовать pre_get_posts для фильтрации сообщений по разрешенным категориям Пользовательская ссылка категории в wp_list_categories () Отображение прикрепленного сообщения в зависимости от заголовка Смешивание обычных и настраиваемых типов сообщений (с meta_query) на главной странице Как я могу улучшить обработку разрыва строки в редакторе WYSIWYG? Квази-пользовательский плагин для вызова API Бесплатная тема и css / bootstrap.css не переопределены в дочерней теме Я получаю «0» в начале моего описания сообщения на главной странице Как запретить боту или кому-либо изменять файл автоматически? Проблема с изображением сценария пакетного импорта Исправить права доступа к файлам для обновлений в браузере с использованием WP-CLI Не знаю, как я буду делать это в WP .., связанных с пользовательскими тегами

Пользовательский цикл с несколькими таксономическими запросами

Извинения – новые для stackexchange и фактически отправили это в Stack Overflow, потому что я не знал, что существует конкретный совместный WP.

Мой вопрос –

Что я имею: у меня есть код для списка рабочих событий. Существует отдельный пользовательский пост (события) и три таксономии (местоположение, месяц, тип). Следующий код перечисляет будущие события и заказывает их по настраиваемому полю (start_date). Список событий также сортируется по таксономии. Например, вы можете посмотреть только события в декабре (месяц) или события по местоположению (Монтана).

Что я не могу понять: как отсортировать списки по двум различным таксономии. Например: События в декабре (месяц), которые также находятся в Монтане (место). Кажется, он выбирает тот или иной.

Дополнительная информация. При использовании стандартного цикла WordPress, а не пользовательского ниже, нет проблем с несколькими запросами с этим CPT и таксономиями, но, конечно, он публикует все события, которые когда-либо случались, в том числе и в прошлом.

Кроме того, это мой первый wp_query, поэтому я надеюсь, что это что-то очевидное.

Файл: (archives-events.php)

<?php $today = date('Ymd'); $my_query = new WP_Query( array( 'post_type' => 'events', 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'location', 'terms' => $term, ), array( 'taxonomy' => 'month', 'terms' => $term, ), array( 'taxonomy' => 'type', 'terms' => $term, )), 'posts_per_page' => 10, 'meta_compare' => '>', 'meta_value' => $today, 'orderby' => 'meta_value', 'meta_key' => 'start_date', 'order' => 'ASC', 'paged'=> $paged, )); ?> <?php if ( $my_query->have_posts() ) : while ($my_query->have_posts() ) : $my_query->the_post();?> <!-- OUTPUT OF QUERY --> <?php endwhile; wp_reset_postdata(); endif; ?> 

Вот функция для выполнения запроса с несколькими таксономиями:

 function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array ('taxonomy'=>'term', 'taxonomy2'=>'term2') foreach ($taxonomies as $key=>$value) { $args=array('post_type'=>$post_type,'post__in'=>$ids,$key=>$value); unset($ids); $ids=array(); foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; } if (empty($ids)) return false; } return $posts; } этот function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array ('taxonomy'=>'term', 'taxonomy2'=>'term2') foreach ($taxonomies as $key=>$value) { $args=array('post_type'=>$post_type,'post__in'=>$ids,$key=>$value); unset($ids); $ids=array(); foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; } if (empty($ids)) return false; } return $posts; } не function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array ('taxonomy'=>'term', 'taxonomy2'=>'term2') foreach ($taxonomies as $key=>$value) { $args=array('post_type'=>$post_type,'post__in'=>$ids,$key=>$value); unset($ids); $ids=array(); foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; } if (empty($ids)) return false; } return $posts; } 

И вот пример того, как я использовал его в прошлом проекте:

 $posts = posts_search ('produtos',array('prod-categoria'=>'blocos','prod-cols'=>'7-c')); if($posts) { foreach($posts as $post) { // show infos from the post... } } 

produtos – это тип пользовательских сообщений, на котором я выполняю поиск, prod-categoria и prod-cols – это две пользовательские таксономии и blocos а 7-c – два термина из предыдущих пользовательских таксономий.

Надеюсь, это поможет.

OBS1; функция не от меня, а, вероятно, от старого поста здесь. OBS2; это было функционально на установке 3.1.2.