仅列出特定父类别中的帖子所在的子类别

时间:2013-10-20 16:13:23

标签: php wordpress categories

要么这比它需要的要难,要么我只是不太了解WordPress / PHP :(我想要做的就是显示特定父类别的子/子类别......但仅限于帖子在那些子类别中。具体示例:

我正在建立一个葡萄酒评论网站,这些是类别:

  • 品牌
    • 子类别1
    • 子类别2
    • 等。
  • 地区
    • 子类别1
    • 子类别2
    • 等。
  • 葡萄
    • 子类别1
    • 子类别2
    • 等。

父类别永远不会改变,每个帖子在每个父母下面都会选择至少1个子类别,所以在LOOP中我只能按姓名列出父母。但我需要动态输出子类别,如下所示:

Brand: <?php list_post_subcategories('brand'); ?>
Region: <?php list_post_subcategories('region'); ?>
Grape: <?php list_post_subcategories('grape'); ?>

有这样简单的方法吗?看来这应该是Wordpress的基本功能?我查看了函数'get_categories'和'in_category',但它们似乎无法做到这一点。

3 个答案:

答案 0 :(得分:0)

<?php $post_child_cat = array();
foreach((get_the_category()) as $cats) {
    $args = array( 'child_of' => $cats->cat_ID );
    $categories = get_categories( $args );
    if( $categories ) foreach( $categories as $category ) {
    echo $category->cat_name; }
} ?>

试试这个

答案 1 :(得分:0)

posted to Wordpress Answers获得更多帮助,@Milo提供了一个很棒的代码解决方案:

// get top level terms
$parents = get_terms( 'category', array( 'parent' => 0 ) );
// get post categories
$categories = get_the_terms( $post->ID, 'category' );
// output top level cats and their children
foreach( $parents as $parent ):
// output parent name and link
echo '<a href="' . get_term_link( $parent ) . '">' . $parent->name . '</a>: ';
// initialize array to hold child links
$links = array();
foreach( $categories as $category ):
    if( $parent->term_id == $category->parent ):
        // put link in array
        $links[] = '<a href="' . get_term_link( $category ) . '">' . $category->name .      '</a>';
    endif;
endforeach;
// join and output links with separator
echo join( ', ', $links );
endforeach;

答案 2 :(得分:0)

您可以使用array_map,以便仅返回所需的类别。例如:

array_map( function( $cat ) {
        if ( $cat->parent != 0 ) {
            return $cat;
        }
     },
     get_the_category()
);