it-swarm.com.ru

Запрос на посты в 2 таксономиях

В настоящее время я использую следующий код для отображения списка со ссылками на сообщения в определенной CPT и таксономии:

  <?php
$custom_terms = get_terms('videoscategory');

foreach(array($custom_terms as $custom_term) {
    wp_reset_query();
    $args = array('post_type' => 'product',
        'tax_query' => array(
      'relation' => 'AND',
    array(
        'taxonomy' => 'videoscategory',
        'field' => 'slug',
        'terms' => $custom_term->slug
    ),
    array(
        'taxonomy' => 'product_category',
        'field' => 'slug',
        'terms' => $other_custom_term->slug
    ),

)

     );

     $loop = new WP_Query($args);
     if($loop->have_posts()) {
        echo '<h1 style="margin-top:10px;">'.$custom_term->name.'</h1>';

        while($loop->have_posts()) : $loop->the_post();
            echo '<h2><a href="'.get_permalink().'">'.get_the_title().'</a></h2>';
        endwhile;
     }
} ?>

Он работает нормально, как и должно, однако я хочу отображать только те сообщения, которые есть в обеих моих таксономиях. Что я должен добавить, чтобы сделать это?

Любая помощь приветствуется, спасибо.

2
Rich

Хорошо, я понял это!

<?php
$custom_terms = get_terms('your_other_category');
$other_custom_terms = get_terms('your_category');

foreach ($custom_terms as $custom_term) {
foreach ($other_custom_terms as $other_custom_term) {
    wp_reset_query();
    $args = array('post_type' => 'product',
        'tax_query' => array(
  'relation' => 'AND',
    array(
        'taxonomy' => 'your_category',
        'field' => 'slug',
        'terms' => $other_custom_term->slug
    ),
            array(
                'taxonomy' => 'your_other_category',
                'field' => 'slug',
                'terms' => $custom_term->slug,
            ),
        ),
     );

     $loop = new WP_Query($args);
     if($loop->have_posts()) {
        echo '<h1 style="margin-top:10px;">'.$custom_term->name.'</h1>';

        while($loop->have_posts()) : $loop->the_post();
            echo '<h2><a href="'.get_permalink().'">'.get_the_title().'</a></h2>';
        endwhile;
     }
}
} ?>
1
Rich

Согласно Кодексу , вот как вы будете запрашивать сообщения из нескольких таксономий:

'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'videoscategory',
        'field' => 'slug',
        'terms' => $custom_term->slug
    ),
    array(
        'taxonomy' => 'yourothertaxonomy',
        'field' => 'slug',
        'terms' => $other_custom_term->slug
    )
)
3
montrealist