Hello,
我有一个带有8个分类法的“自定义帖子类型”,我假装显示一个只有6个分类法的列表,并且不清空每个分类法的术语,隐藏2个分类法。
我当前的代码显示了所有分类法,所有术语都隐藏了空的分类法,但我无法获得如何隐藏我想要的两个分类法。
这是我的代码:
<? php
$args = array(
\'public\' => true,
\'_builtin\' => false
);
// $output = \'names\'; // or objects
// $operator = \'and\'; // \'and\' or \'or\'
// $taxonomies = get_taxonomies( $args, $output, $operator );
$object = \'my-cpt-name\';
$output = \'names\';
$taxonomies = get_object_taxonomies( $object, $output );
if ( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
echo \'<h3>\' . $taxonomy . \'</h3>\';
$args = array( \'hide_empty=0\' );
$terms = get_terms( $taxonomy, $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
$count = count( $terms );
$i = 0;
$term_list = \'<ul class="term-list">\';
foreach ( $terms as $term ) {
$i++;
$term_list .= \'<li><a href="\' . esc_url( get_term_link( $term ) ) . \'" >\' . $term->name . \'</a></li>\';
if ( $count != $i ) {
}
else {
$term_list .= \'</ul>\';
}
}
echo $term_list;
}
}
}
?>
我已将“public”分类法$arg设置为“false”,但不起作用。
$args = array(
\'labels\' => $labels,
\'hierarchical\' => true,
\'public\' => false,
\'show_ui\' => true,
\'show_admin_column\' => true,
\'show_in_nav_menus\' => true,
\'show_tagcloud\' => true,
);
还有,如何显示分类名称而不是
echo \'<h3>\' . $taxonomy . \'</h3>\';
最合适的回答,由SO网友:andresgl 整理而成
@darrinb
我已经解决了这个问题。虽然有一个错误,但您的代码对我帮助很大。:)
获取“术语”时出错:
$terms = get_terms( array(
\'taxonomy\' => $taxonomy->name,
\'hide_empty\' => true,
) );
遵循
codex:
正确的方法如下:
$arg = array(
\'hide_empty\' => true,
);
$terms = get_terms($taxonomy->name, $arg );
谢谢大家!
SO网友:darrinb
尝试以下操作:
<?php
$object = \'post\';
$output = \'objects\';
$taxonomies = get_object_taxonomies( $object, $output );
$exclude = array( \'post_tag\', \'post_format\' );
if ( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
if( in_array( $taxonomy->name, $exclude ) ) {
continue;
}
$terms = get_terms( array(
\'taxonomy\' => $taxonomy->name,
\'hide_empty\' => true,
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
echo \'<h3>\' . $taxonomy->label . \'</h3>\';
$term_list = \'<ul class="term-list">\';
foreach ( $terms as $term ) {
$term_list .= \'<li><a href="\' . esc_url( get_term_link( $term ) ) . \'" >\' . $term->name . \'</a></li>\';
}
$term_list .= \'</ul>\';
echo $term_list;
}
}
}
?>
对于本例,我设置了一些参数:
我们正在搜索的帖子类型:$object = \'post\';
我们要排除的分类:$exclude = array( \'post_tag\', \'post_format\' );
然后我们得到所有相关的分类法并循环使用它们。在循环遍历它们的过程中,我们根据排除数组检查每个分类法,如果适用,则跳过它。
然后,我们从每个分类中获取所有术语,并构建链接列表。