我正在尝试显示自定义帖子类型所在的分类法列表,不包括那些不是分层的分类法。
下面的代码目前有效但显示了所有分类法,但是我无法检查分类法是否在分层次之前是否已经分层。
我知道有一个运行此检查的WordPress函数,但由于我通常在前端工作,我似乎无法弄清楚将它放在哪里以使其生效:
is_taxonomy_hierarchical( $taxonomy )
以下是我用来输出分类法列表的函数:
// get taxonomies terms links
function custom_taxonomies_terms_links(){
// get post by post id
$post = get_post( $post->ID );
// get post type by post
$post_type = $post->post_type;
// get post type taxonomies
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
$out = array();
echo '<a href="';
echo '/';
echo '">';
echo 'Home';
echo "</a> / ";
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// get the terms related to post
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if (!empty( $terms )) {
foreach ( $terms as $term ) {
$out[] =
'<a href="'
. get_term_link( $term->slug, $taxonomy_slug ) .'">'
. $term->name
. "</a> / ";
}
$out[] = " ";
}
}
return implode('', $out );
}
答案 0 :(得分:1)
如果我理解你的正确,你就不能像以下那样测试分类:
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
if ($taxonomy->hierarchical) {
// get the terms related to post
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if (!empty( $terms )) {
foreach ( $terms as $term ) {
$out[] =
'<a href="'
. get_term_link( $term->slug, $taxonomy_slug ) .'">'
. $term->name
. "</a> / ";
}
$out[] = " ";
}
}
}
当您使用&#39;对象&#39;作为第二个参数:
get_object_taxonomies( $post_type, 'objects' );
你得到的是一系列分类学对象,而不仅仅是分类学名称(另一种选择)。分类对象具有属性&#34; hierarchical&#34;这表明该分类是否是分层的。您可以对此进行测试,以选择所需的分类法(分层或非分层)。