Ordering Subcategories

时间:2013-07-21 作者:Dave

我使用以下代码显示子类别中的数据。子类别为“英国”、“仅英格兰”、“仅北爱尔兰”、“仅苏格兰”、“仅威尔士”。

按日期或asc/desc排序,英国子类别位于中间位置,威尔士或英格兰位于顶部。我需要英国子类别位于顶部。它拥有最多的帖子-那么可以在查询中使用orderby来解决这个问题吗?或者你认为我只需要为UK子类别创建自己的循环吗?

$parentCatID = get_cat_ID(\'Grants and Incentives\');
$childCats = get_categories( \'child_of=\'.$parentCatID.\'&orderby=date&order=asc\' );
if(is_array($childCats)):
foreach($childCats as $child){ ?>
<h2 class="experts <?php echo $child->name; ?>"><?php echo $child->name; ?> Grants and Incentives</h2>
<?php query_posts(\'cat=\'.$child->term_id.\'&post_type=grants-and-incentive\');
while(have_posts()): the_post(); $do_not_duplicate = $post->ID;
编辑:我现在正在使用Category Order and Taxonomy Terms Order Pluginorderby=term_order. 这很有效。如果有人能解释的话,如果不使用插件就知道它是如何工作的,那就太好了!

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我从来没有使用过你找到的插件,但它看起来很重,至少在后端是这样,而且可能有些过头了,除非你需要比问题中描述的更多的功能。

get_categories 从操作cached data 因此,我的想法是简单地修改返回的数组,而不是执行另一个查询或更复杂的查询。

function move_cat_to_top_wpse_107314($move, $cats = array()) {
  if (empty($move) || empty($cats)) {
    return false;
  }
  $cat = array_search($move,wp_list_pluck($cats,\'slug\'));
  if (false !== $cat) {
    $tmp = $cats[$cat];
    unset($cats[$cat]);
    array_unshift($cats,$tmp);
  }
  return $cats;
}

$parent = get_cat_ID(\'aciform\');
$children = get_categories( 
  array( 
    \'child_of\' => $parent,
    \'orderby\' => \'date\',
    \'order\' => \'asc\',
  )
);
// var_dump($children);
var_dump(move_cat_to_top_wpse_107314(\'sub\', $children));
Themove_cat_to_top_wpse_107314 功能就是你所需要的。其余部分说明了我的沙盒站点上的数据的使用和使用情况。

而且please don\'t use query_posts.

结束

相关推荐

按MENU_ORDER列出CPT,子项紧随父项之后

我注册了自定义帖子类型drawer 我的帖子是使用menu_order. 每个抽屉可以是另一个抽屉的子抽屉,在多个深度上(父>子>子的子>子的子……你知道了;))。到目前为止,我的代码如下所示:$args = array( \'numberposts\' => -1, \'orderby\' => \'menu_order\', \'order\' => \'DESC\',&#x