在类别页面中,我有一个查询,显示与父类别相关的每个类别的最后一篇文章。问题是这个列表只是按字母顺序显示类别,但我希望它按日期帖子显示。
Order by posts (I want that!):
B类
发布日期:2016年3月10日
A类
职位:2016年1月10日
C类
发布时间:2016年9月30日
Order by categories:
A类
职位:2016年1月10日
B类
发布日期:2016年3月10日
C类
发布时间:2016年9月30日
<?php
$thiscat = get_query_var(\'cat\');
$catobject = get_category($thiscat,false);
$parentcat = $catobject->category_parent;
$news_cats = get_categories( "parent=$parentcat" );
if( $parentcat ) {
$news_query = new WP_Query();
foreach ( $news_cats as $news_cat ) :
$news_query->query( array(
\'post_type\' => \'post\',
\'cat\' => array($news_cat->term_id),
\'posts_per_page\' => 1,
\'category__not_in\' => $thiscat,
\'ignore_sticky_posts\' => true,
)
);
while ( $news_query->have_posts() ) : $news_query->the_post();
get_template_part( \'content\', get_post_format() );
endwhile;
wp_reset_postdata();
endforeach;
}
?>
SO网友:cjbj
你正在按类别循环浏览帖子,只有在你的循环中你才能得到发布日期。到那时,你再也不能改变顺序了,除非你把回复帖子的时间推迟到第二个循环,在那里你按日期排序。因此,在foreach循环中,您可以执行以下操作:
$post_array[$news_query->ID] = $news_query->post_date;
这将为您提供一个ID和数据对数组。现在,您可以按日期对该数组排序,如下所示:
arsort ($post_array); // use asort to order the other way around
现在可以像这样循环遍历数组
foreach ($post_array as $post_ID => $post_date) {
get_post ($post_ID);
get_template_part (\'content\',get_post_format());
}