it-swarm.com.de

So verbinden Sie zwei benutzerdefinierte Pfostentypen mit verschachtelten Schleifen

Ich habe 2 benutzerdefinierte Beitragstypen erstellt: "Klassen" und "Lehrer". Ich habe mit dem Plug-in "Erweiterte benutzerdefinierte Felder" ein Feld für den benutzerdefinierten Beitragstyp "Klassen" erstellt, ein Mehrfachauswahlfeld, mit dem ich jeder Klasse bestimmte vorhandene "Lehrer" hinzufügen kann. Das Mehrfachauswahlfeld gibt die IDs dieser Lehrer zurück. Wenn ich also auf single-classes.php gehe, ist es einfach, für die aktuelle Klasse alle Lehrer aufzulisten, die ich ausgewählt habe.

Situation Ich bin jetzt auf single-teachers.php und versuche, für den aktuellen Lehrer alle "Klassen" aufzulisten, für die er ausgewählt wurde Mehrfachauswahlfeld. Das alles in der Seitenleiste. Also habe ich eine Schleife durch alle Klassen mit einer weiteren Schleife durch die Lehrer gemacht. Wenn die ID eines dieser Lehrer mit der ID des aktuellen Lehrers übereinstimmt (da ich bei single-teachers.php bin), wird der Titel der Klasse angezeigt. Hier ist der 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(); ?> 

Problem ist das

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

zeigt nicht den Titel der Klasse, sondern den Titel des Lehrers und ich bin mir nicht sicher, ob es vollständig funktioniert.

1
Raul

Nach Stunden und Stunden habe ich es endlich herausgefunden. Ich musste nur wp_reset_postdata () ersetzen; mit $ cust_loop-> reset_postdata ();

2
Raul