web-dev-qa-db-fra.com

Comment connecter deux types de publication personnalisés avec des boucles imbriquées

J'ai créé 2 types de messages personnalisés: "classes" et "enseignants". J'ai créé à l'aide du plug-in Advanced Custom Fields un champ pour le type de message personnalisé "classes", un multisélection qui m'aide à ajouter certains "professeurs" existants à chaque classe. Le champ multi-sélection renvoie les identifiants de ces enseignants. Donc, quand je vais sur single-classes.php, il est facile de lister pour la classe actuelle tous les professeurs que j'ai sélectionnés.

Situation Je suis maintenant sur single-teacher.php et j'essaie de lister pour le professeur actuel toutes les "classes" sur lesquelles il a été sélectionné. champ multisélect. Tout cela dans la barre latérale. J'ai donc fait une boucle dans toutes les classes avec une autre boucle à l'intérieur qui passe par les enseignants. Lorsque l'ID de l'un de ces enseignants est égal à l'ID de l'enseignant actuel (depuis que je suis sur single-teacher.php), affichez le titre de la classe. Voici le code:

<?php 
 $current_post_id = $post->ID; // Get current teacher id
 $num = -1;
 $k=0;
 // loop throught the classes
 $args='&suppress_filters=true&posts_per_page='.$num.'&post_type=classes
&order=DESC&orderby=date';  

         $cust_loop = new WP_Query($args); 
         if ($cust_loop->have_posts()) : 
         while ($cust_loop->have_posts()) : $cust_loop->the_post();   
                     $teachers_list = get_field('teachers');
                     if($teachers_list !="") { 

                     $inner_args = array(
                     'posts_per_page'   => -1,
                     'offset'           => 0,
                     'category'         => '',
                     'category_name'    => '',
                     'orderby'          => 'name',
                     'order'            => 'ASC',
                     'post__in'        =>  $teachers_list,
                     'post_type'        => 'teachers',
                      );
                     $wp_query = new WP_Query($inner_args);
                     // loop throught the teachers of each class
                     // if one of those teachers has the id equal with the current 
                     // teacher id then show the title of the class
                     while ($wp_query->have_posts()) : $wp_query->the_post(); 

                            if( $current_post_id === $post->ID ) { 
                                   $k = 1;
                              }

                     endwhile;

                     wp_reset_postdata(); 

                     }

                    if ($k==1) {  ?>

                          <a class="post-title" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> 

                    <?php $k=0; 
                         }
                     endwhile; 
                     endif; 
                     wp_reset_query(); ?> 

Le problème est-ce

                      <a class="post-title" href="<?php the_permalink(); ?>" 
title="<?php the_title(); ?>"><?php the_title(); ?></a> 

ne montre pas le titre de la classe, mais le titre de l'enseignant, plus je ne suis pas sûr que cela fonctionne pleinement.

1
Raul

Après des heures et des heures, j'ai finalement compris. Je n'avais qu'à remplacer wp_reset_postdata (); avec $ cust_loop-> reset_postdata ();

2
Raul