我做了一些自定义分类法,我需要显示其中的所有术语,到目前为止,我所获得的是显示在自定义帖子类型中选择/选择的分类法,但是无论是否已选择,我都需要显示所有这些分类法
,以便以后可以制作一个过滤器,以根据自定义帖子类型值包含的术语进行过滤。

<?php 
$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and';
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    $terms = get_terms($taxonomy);
        foreach ( $terms as $term) {
?>
        <li><br><a href="#"><input type="checkbox" name="profile[]" value=""><?php echo $term->name; ?> <br/></a></li>
       <?php 
                }
              }
            }  
            ?>


我到目前为止所拥有的。

提前谢谢!

评论

在什么时候失败?它有多少以您想要的方式工作?

它起作用的问题是我只能以自定义帖子类型显示SELECTED术语。我希望所有人都显示是否选择了,我不想有一个虚拟的帖子类型只选择了要显示的所有内容。

#1 楼

您需要将附加参数传递给get_terms()。默认设置是隐藏“空”字词-分配给没有帖子的字词。

$terms = get_terms([
    'taxonomy' => $taxonomy,
    'hide_empty' => false,
]);


评论


非常感谢!但是我想问一个问题,为什么要在变量内创建一个数组而不是在显示第一个数组的上方声明它呢?

– David H
2014年4月4日14:48

简单。如果参数数组更复杂,我会首先(最有可能)声明它,但是对于单个参数来说,这是最简单的方法。无论哪种方式,它都应同样有效地工作。

– s_ha_dum
2014年4月4日14:53

非常感谢:)那让我很感动。我真的很感激!

– David H
2014年4月4日15:17

作品!!现在,我可以看到所有分类法选项的内容!一些插件在其中创建复杂的结构。

–eyal_katz
18年6月22日在16:41

#2 楼

从4.5.0开始,分类法应通过$ args数组中的'taxonomy'参数传递,这样:

$terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
) );


其中默认无帖子的术语被隐藏。

#3 楼

此代码使用get_terms()获取所有类别和子类别的自定义分类法:

<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0)); 
   foreach($wcatTerms as $wcatTerm) : 
   ?>
<ul>
   <li>
      <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>
      <ul class="megaSubCat">
         <?php
            $wsubargs = array(
               'hierarchical' => 1,
               'show_option_none' => '',
               'hide_empty' => 0,
               'parent' => $wcatTerm->term_id,
               'taxonomy' => 'product_cat'
            );
            $wsubcats = get_categories($wsubargs);
            foreach ($wsubcats as $wsc):
            ?>
         <li><a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"><?php echo $wsc->name;?></a></li>
         <?php
            endforeach;
            ?>  
      </ul>
   </li>
</ul>
<?php 
   endforeach; 
   ?>