2017-09-19 4 views
0

Je crée une page FAQ en utilisant un type de message personnalisé et une taxonomie personnalisée. J'essaie de créer une liste non ordonnée pour chaque taxonomie afin de regrouper les FAQ. Dans cette liste non ordonnée, je souhaite que le premier élément répertorié soit le nom de la taxonomie, puis répète le deuxième élément répertorié pour toutes les questions de la taxonomie. Voici la page sur laquelle je travaille link.Wordpress - Comment afficher les messages groupés par taxonomie personnalisée?

Il est en train de dupliquer les messages au lieu d'afficher dans les taxonomies légitimes.

     <?php 
         // get all the categories from the database 
         $cats = get_terms(array(
          'taxonomy' => 'faq_categories', 
         )); 

         // loop through the categories 
         foreach ($cats as $cat) { 
          // setup the category ID 
          $cat_id = $cat->term_id; 
         ?> 

           <!-- Make a header for the category --> 
         <ul id="<?php echo $cat->slug; ?>" class="cd-faq-group"> 
          <li class="cd-faq-title"> 
           <h2>Questions <?php echo $cat->name; ?></h2> 
          </li> 

          <?php 

          // create a custom wordpress query 

          query_posts(array(
           'post_type' => 'faqs', 
           'tax_query' => array( 
            array( 
             'taxonomy' => 'faq_categories', //or tag or custom taxonomy 
             'field' => 'slug', 
             'terms' => 'for-women' 
            ) 
           ) 
          )); 

          // start the wordpress loop! 
          if (have_posts()) : while (have_posts()) : the_post(); ?> 

          <li> 
           <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a> 
           <div class="cd-faq-content"> 
            <?php the_content(); ?> 
           </div> 
          </li> 

          <?php endwhile; endif; // done our wordpress loop. Will start again for each category 

          wp_reset_postdata(); 
          ?> 


         </ul> 
         <?php } // done the foreach statement ?> 

Répondre

0

Votre requête ne change pas lorsque vous parcourez la baie $cats. Peut-être changer la valeur du tableau 'terms' en $cat->slug vous donnerait de meilleurs résultats.

0

Dans votre query_post, votre l » fieldtax_query devraient être term_id et votre terms être affecté à votre variable $cat_id, au lieu d'un terme hardcoded.

0

Merci beaucoup. Vous avez tous les deux fourni un bon aperçu de ce qui me manquait. Je l'ai résolu maintenant et voici comment je l'ai résolu en tenant compte de vos suggestions.

     <?php 

          $cats = get_terms( 
           array(
            'taxonomy' => 'faq_categories', 
            'orderby' => 'term_id', 
            'order' => 'ASC' 
           ) 
          ); 

          foreach ($cats as $cat) : 
         ?> 


         <ul id="<?php echo $cat->slug; ?>" class="cd-faq-group"> 
          <li class="cd-faq-title"> 
           <h2>Questions <?php echo $cat->name; ?></h2> 
          </li> 
         <?php 

          $questions = new WP_Query(
           array(
            'category_name' => $cat->slug 
           ) 
          ); 

          $questions = new WP_Query(array(
           'post_type' => 'faqs', 
           'order' => 'ASC', 
           'tax_query' => array( 
            array( 
             'taxonomy' => 'faq_categories', 
             'field' => 'slug', 
             'terms' => array($cat->slug), 
            ) 
           ) 
          )); 
         ?> 

         <?php if ($questions->have_posts()) : while ($questions->have_posts()) : $questions->the_post();?> 

          <li> 
           <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a> 
           <div class="cd-faq-content"> 
            <?php the_content(); ?> 
           </div> 
          </li> 

          <?php endwhile; ?> 

          <?php wp_reset_postdata(); ?> 
         <?php endif; ?>