按帖子顺序查看相关类别

时间:2016-10-03 作者:Rafael

在类别页面中,我有一个查询,显示与父类别相关的每个类别的最后一篇文章。问题是这个列表只是按字母顺序显示类别,但我希望它按日期帖子显示。

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; 
}
?> 

1 个回复
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());
  }

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla