2017-08-08 44 views
2

我有一個名爲Developments的自定義帖子類型。他們是建築物。他們有兩個不同的分類法:城市和地位。在我嘗試顯示與狀態分類關聯的所有帖子的其中一個建築物的城市分類頁面上。在分類頁面上,顯示與該分類相關的帖子和​​另一個

<?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; 
?> 

此代碼輸出所有狀態條款,但它也顯示所有帖子,我需要它顯示與城市相關的帖子。我不知道如何修改上面的代碼來實現這一點。

回答

1

獲取城市分類頁面上當前的分類和術語是這樣的:

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

,然後改變你tax_query添加另一個陣列,使得當前城市分類中加入限制:

     '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

謝謝。這工作。我不認爲要添加第二個'tax_query'。 –

相關問題