这里有几件事我不明白,但我会尽力回答。
你有一个家。php,我假设它是您的默认主页。这里有一行代码,那就是调用另一个页面模板。这是您的代码
<?php require dirname( __FILE__ ) . \'/blog-page.php\';
在博客页面中。php您拥有完整的页面模板。我的问题是,你为什么要这样做。为什么不直接添加博客页面的内容呢。php进入主页。php?会更有意义。
您不是使用主查询来运行循环,而是一个自定义查询,我也不理解,因为您的自定义查询与主查询完全相同,除了每页的帖子。只需使用pre_get_posts
在主页上设置自定义帖子数。
function posts_on_homepage( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'posts_per_page\', \'5\' );
}
}
add_action( \'pre_get_posts\', \'posts_on_homepage\' );
您可以将其添加到函数中。php,它将您在主页上的帖子数量设置为5,然后您可以用普通循环替换自定义查询。
这里需要记住的一点是,无论何时运行自定义查询,分页都将失败,正如注释中所述。
你需要看看WP_Qeury
\'s分页参数。
paged (int) - 页码。显示在使用“";“旧条目”;链接
page (int) - 静态首页的页数。显示通常只显示在静态首页的第X页上的帖子。
因此,对于普通页面,您的查询应该如下所示
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$query = new WP_Query( array( \'paged\' => $paged ) );
静态页面也是这样
$paged = ( get_query_var(\'page\') ) ? get_query_var(\'page\') : 1;
$query = new WP_Query( array( \'paged\' => $paged ) );
您还将重置postdata两次。你应该只做一次。顺便提一下
wp_reset_query();
是错误的,它只用于
query_posts
不应使用该选项。您应该使用
wp_reset_postdata();
最后,使用自定义查询时,必须指定next_posts_link
通过使用$max_pages
参数,否则将失败。
next_posts_link( \'Older Entries\', $the_query->max_num_pages );
下面是一个正确工作的自定义查询示例,来自codex
<?php
// set the "paged" parameter (use \'page\' if the query is on a static front page)
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
// the query
$the_query = new WP_Query( \'cat=1&paged=\' . $paged );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php
// the loop
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php
// next_posts_link() usage with max_num_pages
next_posts_link( \'Older Entries\', $the_query->max_num_pages );
previous_posts_link( \'Newer Entries\' );
?>
<?php
// clean up after our query
wp_reset_postdata();
?>
<?php else: ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>
我希望这能说明你的问题