是否显示自定义分类的所有术语?

时间:2014-03-04 作者:David H

我制作了一些自定义分类法,我需要显示其中的所有术语,到目前为止,我实现的是显示在自定义帖子类型中选择/选择的分类法,但我需要所有分类法都显示出来,无论它是否被选中。因此,稍后我可以制作一个过滤器,根据自定义post类型值包含的术语进行过滤。

<?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 
                }
              }
            }  
            ?>
到目前为止我所拥有的。

提前感谢!

4 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您需要将附加参数传递给get_terms(). 默认设置为隐藏;“空”;术语——不分配给任何职位的术语。

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

如果要显示$terms变量所持有的已登记自定义分类的名称或slug,可以使用下面的代码:

foreach ($terms as $term){
  echo $term->slug." : ";
  echo $term->name;
  echo "<br><br>";
}
在哪里$term->slug 输出已登记的分类项目的slug,并$term->name 输出相应分类项目的名称。

SO网友:Lawrence Oputa

自4.5.0以来,应通过$args数组中的“taxonomy”参数传递分类法,以便:

$terms = get_terms( array(
    \'taxonomy\' => \'post_tag\',
    \'hide_empty\' => false,
) );
默认情况下隐藏没有帖子的术语。

SO网友:amit gangrade

此代码使用以下方法获取所有类别和子类别自定义分类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; 
   ?>

SO网友:Mahesh
<div class="col-sm-4">  
                <?php 
                $categories = get_terms( array(
                        \'taxonomy\' => \'freelancer_type\',
                        \'hide_empty\' => false,
                        \'parent\' => 0,
                    ) );
                ?>
                <select class="form-control" name="parent_category" id="parent_category">
                    <option value="">Select Category</option>
                    <?php  
                        foreach($categories as $category) {
                            ?>
                                <option value="<?php echo $category->term_id; ?>"><?php echo $category->name; ?></option>
                            <?php 
                        }   
                            
                    ?>      
                </select>
                <select class="form-control" name="child_category" id="child_category">
                    <option value="">Select Sub Category</option>
                </select>
            </div>
结束

相关推荐

是否可以基于meta_Query过滤器在Single.php中加载不同的侧边栏?

我有一个自定义的帖子类型“演讲者”,我有一个复选框自定义字段(meta\\u查询),用于将我的会议演讲者与我的研讨会演讲者分开。我可以用这个meta\\u查询过滤我的演讲者,一切正常。但是,如何根据会议或研讨会发言人meta\\u查询使用不同的侧栏?当我单击扬声器查看其详细信息时(无论是会议还是研讨会扬声器),详细信息页面将加载我的单个扬声器。php和在我的单个扬声器中获取侧栏的代码。php是:<?php get_sidebar(); ?> 如何指定不同的侧栏,例如get\\u侧栏(