获取所有子类别,但不指定任何类别

时间:2013-03-20 作者:KarSho

我有两个级别的类别(仅一个子类别。否sub-sub 类别)。我需要得到没有父类别的所有子类别。(我不想指定任何父类别。)

示例:

p_cat1
   s_cat1
   s_cat2
p_cat4
p_cat3
   s_cat4
   s_cat5
   s_cat7
从这里开始,我需要

s_cat1
s_cat2
s_cat4
s_cat5
s_cat7
而且,我需要为每个子类别都提供一个URL。我想给<a> 对于每个子类别。

我该怎么做?

3 个回复
最合适的回答,由SO网友:Mike Madern 整理而成

你可以使用get_categories().

返回与查询参数匹配的类别对象数组。

参数与wp_list_categories 和可以作为数组或查询语法传递。

// Fetch parent categories
$parent_categories = get_categories( \'parent=0\' );

foreach ( $parent_categories as $parent_category ) {
  // Fetch child categories
  $args = array(
    \'parent\' => $parent_category->term_id
  );

  $categories = get_categories( $args );

  foreach ( $categories as $category ) {
    printf( \'<div>%s</div>\', $category->name );
  }
}
这是一个非常简单的代码示例,没有额外的参数,如hide_empty, type

SO网友:Hameedullah Khan

这个get_categories Wordpress的函数返回所有类别,您可以循环查看get\\u categories返回的类别列表,并检查parent 属性,如果父类别为“0”,则它是父类别,否则它是子类别。

function get_sub_categories() {
    $cats = get_categories();
    $subcats = array();
    foreach( $cats as $cat ) {
        if ($cat->parent != \'0\') {
            $subcats[] = $cat;
        }
    }
    return $subcats;
}
我不知道您希望如何使用URL,但您可以尝试以下功能,该功能将只返回子类别名称,并将其超链接到其类别URL

function get_sub_categories() {
    $cats = get_categories();
    $subcats = array();
    foreach( $cats as $cat ) {
        if ($cat->parent != \'0\') {
            $subcats[] = \'<a href="\' . get_category_link( $cat->term_id ) .\'">\' . $cat->name . \'</a>\';
        }
    }
    return $subcats;
}

SO网友:Dmitriy Filimonov
function kill_childcat_postlink($link) {
    $result = $link;
    $bloghome = get_bloginfo( \'home\' );
    if (preg_match(\'%\' . $bloghome . \'/(.*?)/(.*?)/(.*?)/$%i\', $link))
        $result = preg_replace(\'%\' . $bloghome . \'/(.*?)/.*?/(.*?)/$%i\', $bloghome . \'/$1/$2/\', $link);     
    return $result;
}
add_filter(\'post_link\',\'kill_childcat_postlink\');
结束

相关推荐

Sort post's categories by ID

我有一个博客,其中几个帖子的类别必须先输出,然后再输出其他类别。与其他类别相比,这些类别的ID较低。我正在使用get_the_category_list 但它并没有像我预期的那样工作。这让我很困惑,因为我记得有一个主题做得很好。有人能给我指出正确的方向吗?谢谢<?php get_the_category_list( array( \'orderby\' => \'ID\', \'order\' => \'ASC\' ) ); ?>&