循环访问特定的父类别

时间:2017-10-23 作者:muser

我有一个区域列表(NA、EUW等)设置为子类别,父类为regions. 我需要为我的帖子类型列出这些区域。

<?php
$posts = get_posts(array(
    \'post_type\' => \'packages\',
    \'category_name\' => \'NA\',
    \'meta_key\' => \'package_order_id\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'ASC\'
));

if ($posts)
    {
    foreach($posts as $post)
        {
        setup_postdata($post);
?> 
。。

哪里category_name\' => \'NA\', 反而会是category_name\' => <?php regions[i] ?>,. 这将在类别循环中。

我在另一个答案中的尝试只在所有类别中循环。

<?php 
$categories = get_categories(
    array( \'regions\' => $cat->cat_ID )
);

foreach ($categories as $c) {
    var_dump($c);
}

?>
但我只需要在regions 子类别名称的父类别。我该怎么做?

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

您需要获取regions 分类,然后使用get_categories() 要获取将该ID作为其父级的所有类别,请执行以下操作:

$parent = get_category_by_slug( \'regions\' );

$regions = get_categories( array(
    \'parent\' => $parent->term_id,
) );

foreach ( $regions as $region ) {
    // Do stuff.
}
您是否考虑过为您的帖子类型创建一个“区域”自定义分类法?让类别像这样工作有点不寻常。它也很脆弱,因为它依赖于具有特定名称的类别。

如果这样做了,并将分类名称设置为region, 你可以这样循环:

$regions = get_terms( array( \'taxonomy\' => \'region\' ) );

foreach ( $regions as $region ) {
    // Do stuff.
}

结束