根据您的评论进行编辑,front-page.php
仅当页面设置为静态首页时使用。普通主页,即当首页显示设置为您的最新帖子时,index.php
已使用。
所有存档页和首页使用paged
而不是page
, 所以你需要设置get_query_var( \'page\' )
到get_query_var( \'paged\' )
.
无论如何,您不应该在主页上使用自定义查询,您应该使用pre_get_posts
根据需要更改主查询
add_action( \'pre_get_posts\', function ( $q )
{
if ( $q->is_home()
&& $q->is_main_query()
) {
$q->set( \'category_name\', \'featured\' );
$q->set( \'posts_per_page\', 4 );
}
});
您的分页链接应该是
next_posts_link( \'Next\' );
previous_posts_link( \'Previous\' );
您的循环输入
index.php
应该是这样的
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// Your markup and template tags
}
}
如果你真的需要
front-page.php
作为一个普通的主页,而不是静态的首页,那么您需要执行以下操作
- 使用分页链接将循环更改为我上面建议的内容
使用pre_get_posts
如上所述,根据需要更改主查询
使用home_template
要使用的筛选器front-page.php
作为主页模板
您可以尝试以下方法
add_filter( \'home_template\', function ( $template )
{
$locate_template = locate_template( \'front-page.php\' );
if ( !$locate_template )
return $template;
return $locate_template;
});
原始答案功能next_posts_link()
和previous_posts_link()
不要在开箱即用的静态首页上工作。问题是,分页使用get_query_var( \'paged\' )
保存在$paged
全球的因为静态首页使用get_query_var( \'page\' )
而不是get_query_var( \'paged\' )
, 您的链接将永远不会分页超过第1页。我们可以欺骗next_posts_link()
和previous_posts_link()
通过设置$paged
全局收件人get_query_var( \'page\' )
.
您可以尝试以下方法
$paged = get_query_var( \'page\', 1 );
$args = [];
$args[\'post_type\'] = \'post\';
$args[\'post_status\'] = \'publish\';
$args[\'category_name\'] = \'featured\';
$args[\'posts_per_page\'] = 4;
$args[\'paged\'] = $paged;
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post() ;
the_title();
} // End of: while ($the_query->have_posts())
next_posts_link(\'Next\', $the_query->max_num_pages );
previous_posts_link(\'Previous\');
wp_reset_postdata(); // VERY VERY IMPORTANT
} // End of: if ($the_query->have_posts())
编辑您还可以在静态首页上使用以下内容$query = new PreGetPostsForPages(
251, // Page ID we will target, your static front page ID
\'content\', //Template part which will be used to display posts, name should be without .php extension
false, // Should get_template_part support post formats
true, // Should the page object be excluded from the loop
[ // Array of valid arguments that will be passed to WP_Query/pre_get_posts
\'post_type\' => \'post\',
\'category_name\' => \'featured\',
\'posts_per_page\' => 4
]
);
$query->init();
其中PreGetPostsForPages
类由支持my answer hereadd_action( \'pregetgostsforgages_after_loop_pagination\', function ()
{
$paged = get_query_var( \'page\', 1 );
next_posts_link( \'Next\' );
previous_posts_link( \'Previous\' );
});