使分页(WP-PageNavi)不起作用

时间:2015-09-20 作者:Manu Zi

我有几个问题需要分页工作。

我有一个自定义页面模板,在那里我需要显示所有博客文章。我构建以下“查询”并构建html结构:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array( 
    \'post_type\'         => \'post\',
    \'orderby\'           => \'date\',
    \'order\'             => \'DESC\',
    \'post_status\'       => \'publish\',
    \'posts_per_page\'    => 5,
    \'paged\'             => $paged,
);
$posts = get_posts( $args );

if ( ! empty( $posts ) && ! is_wp_error( $posts )) {
   $displaylist = \'<div class="list-group">\';

    foreach ( $posts as $post ) {
        /* loop stuff */
    }

    $displaylist .= \'</div>\';

    echo( $displaylist );
    wp_pagenavi( array( \'type\' => \'multipart\' ) );
}
有了它,我得到了预期的帖子,但没有得到分页控件。

请注意:这不是“主页”,而是一个子页。

经过研究,我注意到许多人使用这种方法:

$posts = new WP_Query( $args );
而不是这样:

$posts = get_posts( $args );
如果我使用WP_Query($args) 我有很多空帖子,而我只有3篇帖子。

我不知道我做错了什么,但我绝对是wordpress和php的新手。

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

这里有几个问题;

不要使用get_posts 用于分页查询。它在经过时合法地中断/忽略分页no_found_rows=trueWP_Query. 此外,get_posts 仅返回$posts 属性,而分页需要查询对象中的其他属性来计算分页。您可以分页get_posts, 但这真的是一件麻烦事is just a wrapper function forWP\\U查询“”。

不要使用全局$posts 变量(或Wordpress或PHP中的任何其他全局变量)作为自定义变量。这会在为变量指定不同内容时打断全局变量。这是最可能导致查询结果与不一致的问题WP_Query. 始终使用自定义变量。唯一的例外是当您使用setup_postdata( $post ) 具有get_posts 或类似功能,setup_postdata() 需要使用$post 全球的这里您需要记住使用wp_reset_postdata() 完成恢复后$post 全球的

使用时get_posts, 你不需要支票WP_Error 对象为get_posts 仅返回帖子数组或空数组。它永远不会返回WP_Error 对象

您应该尝试以下方法:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array( 
    \'post_type\'         => \'post\',
    \'orderby\'           => \'date\',
    \'order\'             => \'DESC\',
    \'post_status\'       => \'publish\',
    \'posts_per_page\'    => 5,
    \'paged\'             => $paged,
);
$q = new WP_Query( $args ),

if ( $q->have_posts() ) {

    $displaylist = \'<div class="list-group">\';

    while ( $q->have_posts() ) {
    $q->the_post();

        // LOOP STUFF HERE

    } // endwhile

    $displaylist .= \'</div>\';

    wp_pagenavi( array( \'query\' => $q ) );

    wp_reset_postdata(); // VERY VERY IMPORTANT

} // endif

相关推荐

Custom pagination structure

当前我的分页工作方式如下http://example.com/city/usa/ #for page 1 http://example.com/city/usa/page/2 http://example.com/city/usa/page/3 ...and so on 我想将其更改为:http://example.com/city/usa/ #for page 1 http:/