2017-08-08 74 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'。 –

相关问题