显示自定义分类法的所有条款?


18

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

<?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 
                }
              }
            }  
            ?>

到目前为止我所拥有的。

提前致谢!


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

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

Answers:


39

您需要将额外的参数传递给get_terms()。默认设置是隐藏“空”字词-未分配给任何帖子的字词。

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

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

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

非常感谢:)那让我很感动。对此,我真的非常感激!
David H

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

6

从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; 
   ?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.