我在WordPress中有一个自定义模板页面,我试图让列表后的分页工作正常。我在循环之后使用了posts_nav_link()
,它确实显示了“上一页”和“下一页”链接,但是当它们被点击时它不会加载任何新帖子。 URL显示它正在分页(通过显示... / page / 2和... / page / 3等...)但是每个被分页的页面仍然具有相同的10个帖子。
自定义页面模板的代码是:
<div class="content content-page">
<main class="site-main">
<?php
$custom_loop = new WP_Query( array(
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'category_name' => 'Arcology Podcast'
) );
?>
<?php
// Start the Loop
if ( $custom_loop->have_posts() ) {
while ( $custom_loop->have_posts() ) {
$custom_loop->the_post();
// Include the page content
get_template_part( 'content', 'page' );
?>
<hr/>
<?php
}
next_posts_link("Older Entries", $custom_loop->max_num_pages);
previous_posts_link("Newer Entries");
}
// End the Loop
wp_reset_postdata();
?>
</main>
</div>
答案 0 :(得分:0)
我设法找到了解决问题的方法,因此我将其张贴在这里以造福他人:
问题是paged
对象中未设置WP_Query
参数,因此查询无法知道要显示的帖子页面。当然,它默认为第1页,所以每次我点击&#34;旧条目&#34;链接,它将重新加载页面并获取paged
参数定义的默认页面(即每次都加载第一页)。
解决方案是在paged
对象中设置WP_Query
参数。您可以致电get_query_var('paged')
查看当前页面。所以解决方案看起来像这样:
<div class="content content-page">
<main class="site-main">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$custom_loop = new WP_Query( array(
'paged' => $paged,
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'category_name' => 'Arcology Podcast'
) );
?>
<?php
// Start the Loop
if ( $custom_loop->have_posts() ) {
while ( $custom_loop->have_posts() ) {
$custom_loop->the_post();
// Include the page content
get_template_part( 'content', 'page' );
?>
<hr/>
<?php
}
next_posts_link("Older Entries", $custom_loop->max_num_pages);
previous_posts_link("Newer Entries");
}
// End the Loop
wp_reset_postdata();
?>
</main>
</div>