默认情况下,Wordpress会按逆时间顺序显示所有帖子(首先是最新帖子)。
我想按时间顺序显示所有wordpress帖子(首先显示最旧的帖子)。
我正在尝试使用自定义循环查询来执行此操作,但是我无法使其工作。我在这里缺少什么?
<?php query_posts(array('orderby'=>'date','order'=>'ASC'));
if ( have_posts() ) :
while ( have_posts() ) : the_post(); ?>
<div class="postTitle"><?php the_title(); ?></div>
<div class="postContent"><?php the_content(); ?></div>
<?php endwhile; endif;
wp_reset_query();
?>
我认为这很简单,虽然我发现尝试的一切我也无法工作。谢谢!
答案 0 :(得分:0)
使用自定义循环:
如果您要创建自定义循环,则可能需要使用WP_Query
。
<?php
$the_query = new WP_Query([
'order'=>'ASC'
]);
// The Loop
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) :
?>
<div class="postTitle"><?php the_title(); ?></div>
<div class="postContent"><?php the_content(); ?></div>
<?php
endwhile;
/* Restore original Post Data */
wp_reset_postdata();
?>
<?php else: ?>
// no posts found
<?php endif; ?>
使用过滤器
或者另一种方法是使用functions.php
文件中的过滤器更改主循环。
function alter_order_of_posts( $query ) {
if ( $query->is_main_query() ) {
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'alter_order_of_posts' );
我建议使用过滤器路径以避免更改当前的模板。