2017-08-08 9 views
2

私は開発と呼ばれるカスタム投稿タイプを持っています。彼らは建物です。彼らは2つの異なるタクソノミーを持っています:都市とステータス。ビルの1つの都市タクソノミーページで、ステータス分類に関連するすべての投稿を表示しようとしています。タクソノミのページで、そのタクソノミと関連する投稿を表示します。

<?php 
    // Vars 
    $status_taxonomy = 'development_status'; 
    $devs = get_terms(array(
     'taxonomy' => $status_taxonomy, 
     'hide_empty' => true, 
    )); 
?> 
<?php 
    foreach($devs as $dev) : 
    $dev_id = $dev->term_id; 
    $dev_name = $dev->name; 
?> 
<?php 
    $term_slug = $dev->slug; 
    $dev_posts = new WP_Query(array(
     'post_type'   => 'developments', 
     'posts_per_page' => -1, //important for a PHP memory limit warning 
     'tax_query' => array(
      array(
       'taxonomy' => $status_taxonomy, 
       'field' => 'slug', 
       'terms' => $term_slug, 
       'operator' => 'IN', 
      ), 
     ), 
    )); 

    if($dev_posts->have_posts()) : 

     echo '<h3>'. $dev_name .'</h3>'; 
     while ($dev_posts->have_posts()) : $dev_posts->the_post(); 
     ?> 
      <div class="col-xs-12"> 
       <h3>$dev_name</h3> 
      </div> 
      <div class="col-md-4"> 
       <h4><?php the_title(); ?></h4> 
      </div> 
     <?php 
     endwhile; 

    endif; 
    wp_reset_postdata(); 
?> 

<?php 
    endforeach; 
?> 

このコードはすべてのステータス用語を出力しますが、すべての投稿も表示していますので、Cityに関連付けられている投稿を表示する必要があります。私はこれを達成するために上記のコードをどのように変更するのか分かりません。

$current_term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 

し、現在の都市の分類が制約に追加されるように、別の配列を追加するためにあなたに tax_queryを変更します:

答えて

1

は、このような都市の分類]ページで、現在の分類と用語を取得します

     'tax_query' => array 
         (
          'relation' => 'AND', 
          array(
           'taxonomy' => $status_taxonomy, 
           'field' => 'slug', 
           'terms' => $term_slug, 
           'operator' => 'IN', 
          ), 
          array(
           'taxonomy' => 'city', 
           'field' => 'slug', 
           'terms' => $current_term->slug, 
           'operator' => 'IN', 
          ), 
         ), 
+0

ありがとうございます。これはうまくいった。私は第2の 'tax_query'を追加するとは思わなかった。 –

関連する問題