显示按日期排序的所有帖子

时间:2014-10-22 18:10:24

标签: php wordpress

默认情况下,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' );

1 个答案:

答案 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