如何调整以下代码段以应用于特定的自定义分类法?当前适用于职位类别
我使用以下函数:<?php display_cat_level(X,true); ?>
在我的主题文件中显示每个层次类别级别
function get_level($category, $level = 0)
{
if ($category->category_parent == 0) {
return $level;
} else {
$level++;
$category = get_category($category->category_parent);
return get_level($category, $level);
}
}
function display_cat_level( $level = 0 , $link=false){
$cats = get_the_category( );
if( $cats ){
foreach($cats as $cat){
$current_cat_level = get_level($cat);
if( $current_cat_level == $level ){
if($link==true) {
echo \'<a href="\'.get_category_link($cat->cat_ID).\'">\'.$cat->name."</a>";
} else {
echo $cat->name."";
}
}
}
}
}
Answer: Jacob的这些更新允许原始和更新的功能一起工作。。。
<?php
function get_level_subject($category, $level = 0)
{
if ($category->parent == 0) {
return $level;
} else {
$level++;
$category = get_term( $category->parent );
return get_level_subject($category, $level);
}
}
function display_cat_level_subject( $level = 0 , $link=false){
$cats = get_the_terms( null, \'subject\' );
if( $cats ){
foreach($cats as $cat){
$current_cat_level = get_level_subject($cat);
if( $current_cat_level == $level ){
if($link==true) {
echo \'<a href="\'.get_term_link( $cat->term_id ).\'">\'.$cat->name."</a>";
} else {
echo $cat->name."";
}
}
}
}
}
?>
最合适的回答,由SO网友:Jacob Peattie 整理而成
更改:
get_the_category()
到get_the_terms( null, \'taxonomy_name\' )
.get_category_link( $cat->cat_ID )
到get_term_link( $cat->term_id )
.get_category( $category->category_parent )
到get_term( $category->parent )
.
如果要对多个分类法使用相同的函数,可以接受分类法名称作为参数,并将其传递给上面的第一项:
function display_cat_level( $level = 0 , $link = false, $taxonomy = \'category\' ){
$cats = get_the_terms( null, $taxonomy );
// etc.
}
此外,即使在使用类别时,也不要使用
cat_ID
和
category_parent
. 这些在11年前被弃用,取而代之的是
term_id
和
parent
.