【发布时间】:2017-02-07 20:52:11
【问题描述】:
我无法理解甚至诊断为什么在我的 27 岁儿童主题中创建的 home.php 文件中没有显示分页。我有 3 篇博文,我只想显示一篇,底部有分页。
我正在运行 WordPress 4.7.2,根据this 文章,我应该使用 the_posts_pagination() 来显示我的帖子的分页,但没有出现任何内容。我已经按照here 的描述设置了一个自定义查询(将参数作为数组而不是查询字符串传递):
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );
有 3 个帖子,如果我将查询设置为此,那么我会在 home.php 页面上看到所有三个帖子:
$query = new WP_Query( array( 'posts_per_page' => 3, 'paged' => $paged ) );
当我将 'posts_per_page' 设置为 1,然后调用 the_posts_pagination() 时,我只看到第一个帖子,没有分页。我不明白为什么没有出现分页,因为还有更多页面要显示。不过,我对 WordPress 还是很陌生,所以我确定我只是遗漏了一些明显的东西。
这是我的完整代码供参考:
<?php
get_header();
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );
?>
<div class="wrap">
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
if ( $query->have_posts() ) :
/* Start the Loop */
while ( $query->have_posts() ) : $query->the_post();
the_title('<h1>', '</h1>');
the_content();
endwhile;
the_posts_pagination();
else :
get_template_part( 'template-parts/post/content', 'none' );
endif;
?>
</main><!-- #main -->
</div><!-- #primary -->
</div><!-- .wrap -->
<?php get_footer();
问题回答后编辑
好的,看来即使我设置了我想在此处显示的“posts_per_page”:
$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );
Wordpress 仍然依靠 Dashboard->Settings->Reading->博客页面最多显示 中的设置来确定分页,所以我不得不进去并设置它。我仍然无法让 the_posts_pagination 正常工作,但是这样做了:
previous_posts_link( ' << Newer Entries ' );
next_posts_link( ' Older Entries >> ', $query->max_num_pages);
【问题讨论】:
-
@EdDogan 感谢您的文章,这有助于我了解分页与分页的区别。我认为我正确使用了分页,因为这是一个博客文章索引页面(home.php),对吗?如果我删除条件语句并只获得“分页”查询变量,我仍然会得到相同的结果。
-
如果使用
<?php next_posts_link(); ?><?php previous_posts_link(); ?>等其他分页功能,结果是否一样 -
@EdDogan 是的,我最初尝试这些是因为我遵循较旧的教程,但后来发现了使用 the_post_pagination() 的新材料
标签: php wordpress pagination