首页 > 解决方案 > Wordpress -> 嵌套帖子循环不返回“posts_per_page”参数中指定的帖子数

问题描述

为什么 post_type => 'personalne' 的嵌套帖子循环不返回在 'posts_per_page' 参数' 中指定的帖子数?

嵌套循环似乎可以正常工作('posts_per_page')对于 2 个第一个 post_types 即 'konsorcjum' 和 'grupy' 但不知何故,如果我将例如 3 指定为 'personalne' 的 'posts_per_page' 它不会返回 3 个帖子 -> 它返回 0帖子即什么都没有。

这是代码的链接:https ://wtools.io/paste-code/b1Gi

这是PHP代码:

$args = [
    'post_type' => 'konsorcjum',
    'where' => 't.post_status="Publish"',
    'orderby' => 'position', 
    'order' => 'ASC',  
    'posts_per_page' => 100                          
];
 
$the_query = new WP_Query( $args );
 
// The Loop
while ( $the_query->have_posts() ) :
    $the_query->the_post();                    
                    
  
 
                $params = array(
                'post_type' => 'grupy',
                'where' => 't.post_status="Publish"',
                'orderby' => 'position', 
                'order' => 'ASC',
                'posts_per_page' => 2                            
                );
 
                $group_query = new WP_Query( $params );
                // The Loop
                while ( $group_query->have_posts() ) :
                    $group_query->the_post();
 
                $nazwa_grupy = get_the_title();
 
                
 
                // NAZWA GRUPY: 
                echo get_field( "nazwa_grupy");
 
 
 
        
                                $params666 = array(
                                'post_type' => 'personalne',
                                'where' => 't.post_status="Publish"',
                                'orderby' => 'position', 
                                'order' => 'ASC',
                                'posts_per_page' => 1 
                                );
 
                                $person_query = new WP_Query( $params666 );
                                // The Loop
                                while ( $person_query->have_posts() ) :
                                    $person_query->the_post();
 
 
                                  if( have_rows('dane_osoby') ):
 
                                  while( have_rows('dane_osoby') ): the_row(); 
 
                                    echo the_sub_field( "imie_i_nazwisko", $person_query->post->ID);
 
                                
                                   endwhile;
                                   endif;  
 
 
 
                            // Koniec pętli while dla PERSONALNE:
                                endwhile;   wp_reset_postdata();
 
 
 
 
 
 
                // Koniec pętli while dla GRUPY:
                    endwhile;   wp_reset_postdata();
 
 
 
// Koniec pętli while dla KONSORCJUM:
 
    endwhile; wp_reset_postdata();

标签: phpwordpressnested-loops

解决方案


试试下面的代码,让我知道它是否有效。

$args = [
    'post_type' => 'konsorcjum',
    'where' => 't.post_status="Publish"',
    'orderby' => 'position', 
    'order' => 'ASC',  
    'posts_per_page' => 100                          
];
 
$the_query = new WP_Query( $args );
 
// The Loop
while ( $the_query->have_posts() ) :
    $the_query->the_post();                    
                    
  
 
                $params = array(
                'post_type' => 'grupy',
                'where' => 't.post_status="Publish"',
                'orderby' => 'position', 
                'order' => 'ASC',
                'posts_per_page' => 2                            
                );
 
                $group_query = new WP_Query( $params );
                // The Loop
                while ( $group_query->have_posts() ) :
                    $group_query->the_post();
 
                $nazwa_grupy = get_the_title();
 
                
 
                // NAZWA GRUPY: 
                echo get_field( "nazwa_grupy");
 
 
 
        
                                $params666 = array(
                                'post_type' => 'personalne',
                                'where' => 't.post_status="Publish"',
                                'orderby' => 'position', 
                                'order' => 'ASC',
                                'posts_per_page' => 1 
                                );
 
                                $person_query = new WP_Query( $params666 );
                                // The Loop
                                while ( $person_query->have_posts() ) :
                                    $person_query->the_post();
 
 
                                  if( have_rows('dane_osoby') ):
 
                                  while( have_rows('dane_osoby') ): the_row(); 
 
                                    echo the_sub_field( "imie_i_nazwisko", $person_query->post->ID);
 
                                
                                   endwhile; wp_reset_postdata();
                                   endif;  
 
 
 
                            // Koniec pętli while dla PERSONALNE:
                                endwhile;   wp_reset_postdata();
 
 
 
 
 
 
                // Koniec pętli while dla GRUPY:
                    endwhile;   wp_reset_postdata();
 
 
 
// Koniec pętli while dla KONSORCJUM:
 
    endwhile; wp_reset_postdata();

推荐阅读