自定义循环在singular.php中不起作用,在其他页面中起作用

时间:2016-11-17 作者:Bankitalia

我有一个自定义循环,显示我想在所有帖子页面底部显示的网站的所有帖子。以下是循环:

function show_all_posts() {

    $ppp = 8;
    $page = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1; 

    $args = array(
        \'posts_per_page\' => $ppp,
        \'post__not_in\' => get_option(\'sticky_posts\'), 
        \'paged\' => $page
    );

    $All = new WP_Query($args); 

    echo \'<section class="posts infinite-container">
            <h3 class="legend">Keep Looking...</h3>\';
                split_posts($All, true);

}
循环最初是工作的,但当需要调用下一个帖子(无限加载)时,什么都没有出现。我在站点上有各种其他类似的循环,它们都在工作,包括无限加载。我能想到的唯一区别是,这一个特殊的页面是在帖子页面上使用的(我使用的是singular.php),而其他页面是在主页和归档页面上使用的。事实上,当我在主页中使用show\\u all\\u posts()函数时,效果很好!

以下是我编写的split\\u posts函数,以防有帮助:

function split_posts($Query, $infinite = false) {

    $temp_query = $wp_query;
    $wp_query   = NULL;
    $wp_query   = $Query;

    if ($Query->have_posts()) : 

        $i = 1;     
        while ($Query->have_posts()) : $Query->the_post(); 

            if ($i % 4 == 1) :
                if ($infinite) echo \'<div class="pRow infinite-item">\';
                else echo \'<div class="pRow">\';
            endif;      

            $ID = get_the_ID();
            post_template($ID);

            if ($i % 4 == 0) echo \'</div>\';

        $i++;
        endwhile;

        if ($infinite) :        
            echo \'</section>
                  <p class="infinite-more-link-wrap">\'; 
                    next_posts_link(\'More...\', $Query->max_num_pages); 
            echo \'</p>\';
        endif; 

    else : 

        no_posts_error();

    endif; wp_reset_postdata();

    $wp_query = NULL;
    $wp_query = $temp_query;

}
我想出于某种原因,max\\u num\\u pages调用无法看到更多的帖子。任何帮助都将不胜感激!

1 个回复
SO网友:Bankitalia

为了子孙后代,在split\\u posts()函数的顶部调用全局$wp\\u查询变量就足够了,如下所示:

function split_posts($Query, $infinite = false) {

    global $wp_query;
    $temp_query = $wp_query;
    $wp_query   = NULL;
    $wp_query   = $Query;

    ...

}
干杯!

相关推荐

Add pagination to WP_Query

我试图在下面的代码中添加分页,但不知道如何与之集成。请帮忙在帖子上找到页码。<?php $child_query = new WP_Query(array(\'post_type\' => \'blogpost\', \'orderby\' => \'date\', \'order\' => \'DESC\')); while ( $child_query->ha