如何使用嵌套循环连接两个自定义POST类型

时间:2015-07-02 作者:Raul

我创建了两种自定义帖子类型:“班级”和“教师”。我使用高级自定义字段插件创建了一个“classes”自定义帖子类型的字段,这是一个多选项,可以帮助我向每个类添加某些现有的“teachers”。multiselect字段返回这些教师的ID。所以当我去上单人课的时候。php很容易为当前班级列出我选择的所有老师。

Situation我现在是单身教师。php和我正试图为当前教师列出他在multiselect字段中选择的所有“类”。所有这些都在侧边栏中。所以我所做的就是在所有的课堂上做一个循环,里面还有一个循环,通过老师。当其中一位教师的ID等于当前教师的ID时(因为我在single teachers.php上),然后显示班级的标题。代码如下:

<?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 是这个吗

                      <a class="post-title" href="<?php the_permalink(); ?>" 
title="<?php the_title(); ?>"><?php the_title(); ?></a> 
没有显示班级的名称,但显示老师的名称,而且我不确定它是否完全有效。

1 个回复
最合适的回答,由SO网友:Raul 整理而成

过了好几个小时,我终于明白了。我只需更换wp\\u reset\\u postdata();使用$cust\\u loop->reset\\u postdata();

结束

相关推荐

Limit loop to future events

我有一个自定义的帖子类型,basic_events, 带有自定义日期字段,date_of_event. 我的视图根据此自定义日期字段按升序显示这些帖子。$args = array( \'post_type\' => array(\'basic_events\'), \'order\' => \'ASC\', \'orderby\' => \'meta_value_num\', \'meta_key\'