2017-08-08 5 views
2

J'ai un type de publication personnalisé appelé Développements. Ce sont des bâtiments. Ils ont deux taxonomies différentes: Ville et Statut. Sur la page Taxonomie de la ville pour l'un des bâtiments, j'essaie d'afficher tous les messages associés à la taxonomie du statut.Sur la page de taxonomie, affichez les messages associés à cette taxonomie et un autre

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

Ce code renvoie toutes les conditions d'état, mais il est montrant tous les postes aussi, j'ai besoin de montrer les messages qui sont associés à la ville. Je ne suis pas sûr de savoir comment modifier le code ci-dessus pour y parvenir.

Répondre

1

Obtenez votre taxonomie actuelle et la durée sur la page de taxonomie ville comme celle-ci:

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

Et changer alors vous tax_query ajouter un autre tableau afin que la taxonomie actuelle de la ville est ajoutée aux restrictions:

     '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

Merci. Cela a fonctionné. Je n'ai pas pensé à ajouter un second 'tax_query'. –