Php 仅列出文章所属的特定父类别的子类别
要么这比需要的更难,要么我只是不太理解WordPress/PHP:(我想做的只是显示特定父类别的子/子类别…但只有在帖子位于这些子类别中时才显示。具体示例: 我正在建立一个葡萄酒评论网站,其类别如下:Php 仅列出文章所属的特定父类别的子类别,php,wordpress,categories,Php,Wordpress,Categories,要么这比需要的更难,要么我只是不太理解WordPress/PHP:(我想做的只是显示特定父类别的子/子类别…但只有在帖子位于这些子类别中时才显示。具体示例: 我正在建立一个葡萄酒评论网站,其类别如下: 品牌子类别1子类别2等 地区子类别1子类别2等 葡萄子类别1子类别2等 父类别永远不会更改,每个帖子都会在每个父类别下选择至少一个子类别,因此在循环中,我可以按名称列出父类别。但我需要动态输出子类别,如下所示: Brand: <?php list_post_subcategories('
- 品牌
- 子类别1
- 子类别2
- 等
- 地区
- 子类别1
- 子类别2
- 等
- 葡萄
- 子类别1
- 子类别2
- 等
Brand: <?php list_post_subcategories('brand'); ?>
Region: <?php list_post_subcategories('region'); ?>
Grape: <?php list_post_subcategories('grape'); ?>
品牌:
地区:
葡萄:
有没有像这样简单的方法?这似乎应该是Wordpress中的一个基本函数?我已经看过了“get_categories”和“in_categories”函数,但它们似乎无法做到这一点。
<?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; }
} ?>
尝试此我可以获得更多帮助,并提供了一个很棒的代码解决方案:
// 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;
//获取顶级术语
$parents=get_术语('category',数组('parent'=>0));
//获取帖子类别
$categories=获取术语($post->ID,'categories');
//输出顶级猫和它们的孩子
foreach($parents作为$parent):
//输出父名称和链接
回声':';
//初始化数组以保存子链接
$links=array();
foreach($类别作为$类别):
如果($parent->term_id==$category->parent):
//将链接放入数组
$links[]='';
endif;
endforeach;
//使用分隔符连接和输出链接
回显联接(“,”,$links);
endforeach;
您可以使用数组映射
,以便只返回所需的类别。例如:
array_map( function( $cat ) {
if ( $cat->parent != 0 ) {
return $cat;
}
},
get_the_category()
);
谢谢,但这只是输出帖子的所有子类别。它不是特定于每个父类别的。如果您只需要特定类别的子类别,您可以像
$args=array('child\u of'=>''类别名称或id在此);
然后$categories=get\u categories($args)这样做
现在打印$categories
Hmmm…像这样吗?可能不是,我尝试过,但没有得到任何输出: