未显示导航链接的WP_Query上的分页

时间:2014-09-04 作者:Francesca

我在向页面添加分页时遇到问题。我正在使用WP_query 并希望每页收回4篇帖子。基本查询似乎工作正常,但我必须缺少一些关于分页的内容。

// The query for 4 posts
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$query = new WP_Query();
$query->query(\'showposts=4\'.\'&paged=\'.$paged);

if ( $query->have_posts() ) : 
    while ( $query->have_posts() ) : $query->the_post(); ?>
    <div class="post">
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
      <p class="author">by <?php the_author(); ?></p>
    </div>
    <?php endwhile; ?>
    <!-- end of the loop -->
    <nav>
        <?php previous_posts_link(\'&laquo; Newer posts\') ?>
        <?php next_posts_link(\'Older posts &raquo;\') ?>
    </nav>

        <?php wp_reset_postdata();

        // If no results appear
        else : ?>
            <p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
        <?php endif; ?>
我在顶部为分页设置了var,如下所示:

$query->query(\'showposts=4\'.\'&paged=\'.$paged);
Am包括分页导航:

<nav>
    <?php previous_posts_link(\'&laquo; Newer posts\') ?>
    <?php next_posts_link(\'Older posts &raquo;\') ?>
</nav>
但我只得到空HTML<nav></nav> - 但没有错误,我也无法找出我遗漏了什么。

Edit: 根据建议,我已更新为:

        $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
        $args = array(
            \'posts_per_page\' => 4,
            \'paged\'          => $paged,
        );
        $query = new WP_Query( $args );
并将按钮链接更新为:

<?php next_posts_link( \'Older posts &raquo;\', $query->max_num_pages ); ?>
我仍然没有看到分页链接。

2 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

请不要使用showposts 它被替换为posts_per_page 很久以前。

就我个人而言,我会在WP_Query 如下图所示,另外分页应如下图所示:

$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$args = array(
    \'posts_per_page\' => 4,
    \'paged\'          => $paged,
);
$the_query = new WP_Query( $args );

global $wp_query;
// Put default query object in a temp variable
$tmp_query = $wp_query;
// Now wipe it out completely
$wp_query = null;
// Re-populate the global with our custom query
$wp_query = $the_query;

if ( $the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : $the_query->the_post();
        // loop code
    endwhile;

    previous_posts_link( \'&laquo; Newer posts\' );
    next_posts_link( \'Older posts &raquo;\', $the_query->max_num_pages );
    wp_reset_postdata();

else :
    // no post found code 
endif;

// Restore original query object
$wp_query = null;
$wp_query = $tmp_query;
与Q&;相同;A.How to fix pagination for custom loops? 我把你和ChipBennett联系了起来。

另请注意,如果这在作为静态首页的页面模板中工作,则必须使用查询变量page 而不是paged:

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

SO网友:Andreas Rex

这是一件好事posts_per_page 来自wordpress的值。您可以在wordpress管理菜单中更改此值。

$page = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
if(!$page)
    $page = ( get_query_var( \'page\' ) ) ? get_query_var( \'page\' ) : 1;

$posts_per_page = get_option( \'posts_per_page\' );

$query = new WP_Query( array(
    \'posts_per_page\' => $posts_per_page,
    \'paged\'          => $page,
    \'post_status\'    => \'publish\',
    \'orderby\'        => \'title\',
    \'order\'          => \'ASC\',
) );

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

    // Code for Output
}

结束

相关推荐

Custom template pagination

我有一个自定义的帖子类型“新闻”。我创建了id为55的“News”页面和一个自定义模板文件。我想实现分页。问题是,当我访问设置了页码的新闻时,会出现错误“404未找到”。URL类似于“/新闻/页面/2/”。我使用paginate_links 函数以显示分页。如何显示正确的页面?