默认情况下,WordPress主页会显示最新帖子。如何在不是主页的页面上显示最新帖子?
我的第一个目标"目标A"是为主页显示一个名为"热门帖子的特定类别" (而不是最新的帖子)。 "目标B"是在菜单上有一个链接到按日期排序的所有帖子,又名"最新帖子"。
我已经使用下面的代码完成了目标A.我怎样才能完成"目标B" ?我可以创建一个名为" New"并在菜单上创建一个链接,但如何显示按日期排序的所有帖子?还是有更好的方法?
。
"目标A"代码:在主页上显示特定类别
function popular_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'popular' );
}
}
add_action( 'pre_get_posts', 'popular_category' );
答案 0 :(得分:2)
我认为这里最好的是创建一个带有博客页面的静态首页。这似乎适合你想要做的事情
第1步
您应该删除问题中的代码。这不是必需的
第2步
复制page.php
(或index.php
)并将其重命名为front-page.php
。打开它,用自定义查询替换循环,自定义查询只显示所需类别的帖子。遗憾的是,pre_get_posts
无法在静态首页上运行,因此您必须使用自定义查询。
<?php
// set the "paged" parameter (use 'page' if the query is on a static front page)
$paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1;
// the query
$the_query = new WP_Query( 'category_name=popular&posts_per_page=10&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 the query and pagination
wp_reset_postdata();
?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
请记住,对于静态首页上的分页,您必须使用page
,而不是paged
,就像使用其他所有自定义查询一样。
第3步
复制index.php
并将其重命名为home.php
。这将是您的博客页面模板
第4步
您现在可以在后面设置静态首页和博客页面。您应该阅读有关设置静态首页和博客页面的here