Вложенный цикл: какой способ/порядок?
Доброе утро (или вечер),
Я пытаюсь объединить в пользовательском архиве (таксономия-$taxonomy.php ) двойной (?) запрос. Давайте постараемся внести ясность:
Я хотел бы отобразить все сообщения из таксономии. Хорошо, это работает.
//start by fetching the terms for 'progression' taxonomy $terms = get_terms( 'progression', array( 'orderby' => 'asc', 'hide_empty' => 1 ) );
И запрос
// Run a query for each progression foreach( $terms as $term ) { $args = array( 'post_type' => array('my_custom_post', 'another_custom_post'), 'progression' => $term->slug, ); $query = new WP_Query( $args ); // output the term name (here "day1", "day2"...) echo $term->name; // Start the Loop and output the titles while ( $query->have_posts() ) : $query->the_post(); the_title(); endwhile; // use reset postdata to restore original query wp_reset_postdata(); } ?>
( конечно, я не нашел этого сам... спасибо этому форуму !)
НО (в этом-то и проблема) Он отображает каждое сообщение с этим налогом. Тем не менее, я хотел бы ограничить свои запрос в другую таксономию.
Второй налог "спорт" => волейбол, теннис, баскетбол...
По отдельности это работает. НО, как только я пытаюсь объединить оба критерия, я с треском проваливаюсь.
Я мог бы написать свой код (со вторым запросом и аргументами, но он не работает, так что, это полезно?) Большое спасибо за любую помощь.
1 answers
Для этого вам нужно добавить параметр tax_query
с отношением,
$args = array(
'post_type' => array('my_custom_post', 'another_custom_post'),
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'progression',
'field' => 'slug',
'terms' => $term->slug,
),
array(
'taxonomy' => 'sport',
'field' => 'term_id',
'terms' => array( 1, 2, 3 ),
'operator' => 'IN',
),
),
);
$query = new WP_Query( $args );
Конечно, вам нужно будет организовать term_id
для отношения таксономии спорта.
Вы найдете больше примеров и подробных сведений о параметре таксономии в справочнике по классу WP_Query
Надеюсь, это поможет.