使用‘GET_OBJECT_TAXONIES’从分类列表中隐藏特定的分类

时间:2016-04-20 作者:andresgl

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>\';

2 个回复
最合适的回答,由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\' );

然后,我们从每个分类中获取所有术语,并构建链接列表。

相关推荐

Custom Taxonomy Page

我正在尝试创建一个显示特定类别的所有子类别的页面。所以在上下文中,我有一个标题为“目的地”的父类别。我希望能够点击目的地,并被引导到一个页面,显示子类别或国家的列表。下面是我试图实现的一个示例,减去顶部的地图-https://www.vagabrothers.com/destinations. 在理想情况下,类别页面的布局将与此页面相同。你可以从上面的例子中看出我的意思。它会使网站上的导航像这样:目的地>国家>个人帖子。我正在使用CPT UI,设置了一个名为“目的地”的自定义帖子类型和类别,然