可以这样尝试:
$categories = get_the_category();
echo \'<ul>\';
echo \'<li> Parent Category: \';
foreach( $categories as $category ){
if($category->parent != 0){
$parent_category = get_term( $category->parent );
echo \'<a href="\' . esc_url( get_category_link($parent_category->term_id)) . \'">\' . esc_html($parent_category->name) . \' </a>\';
break;
}
}
echo \'</li>\';
echo \'<li>Subcategory: \';
foreach( $categories as $category ){
if($category->parent != 0){
echo \'<a href="\' . esc_url( get_category_link($category->term_id)) . \'">\' . esc_html($category->name) . \' </a>\';
}
}
echo \'</li></ul>\';
如果您的帖子的类别具有相同的父类别(例如,您的帖子具有类别“child\\u 1”和“child\\u 2”,这两个类别都是“parent\\u 1”的子类别),则这种方法非常有效。它会检查每个帖子的类别。在第一个
foreach
-循环,只要一个类别有一个父类别,它就会被回显,并且由于
break
.但是,如果您的帖子有多个具有不同父类别的类别(例如,您的帖子有“child\\u A\\u 1”类别,它是“parent\\u A”的子类别,而“child\\u B\\u 1”类别是“parent\\u B”的子类别),此代码将无法正常工作,因为它只会回显第一个子类别中出现的第一个子类别的父类别
foreach
-环