使用Get_the_Terms列出自定义分类的子类别

时间:2018-10-02 作者:dtrinh

目前,我使用以下代码以自定义帖子类型输出此自定义分类法中的所有类别:

<?php
  $args = array(
        \'post_type\'      =>  \'video_cpt\',
        \'post_status\'    =>  \'publish\',
        \'posts_per_page\' =>  -1,
        \'orderby\'        => \'publish_date\',
        \'order\'          => \'DESC\',
  );

  $video_query  = new WP_Query( $args );

  $videos_post_objects = $query;

  while ($video_query->have_posts()) {
    $video_query->the_post();
    $terms = get_the_terms( $post->ID, \'video_categories\' );
    $term = array_shift( $terms );
  }
?>
是否可以使用get_the_terms (最好是通过名称而不是分类ID)以相同的方式从自定义帖子类型中的自定义分类中获取类别的子类别?

ie。

video categories
    fruits
       apples
       oranges
       bananas
    vegetables
       lettuce
       kale
       broccoli
我将如何使用get_the_terms (以与上述类似的方式)仅列出apples, oranges, bananas?

1 个回复
SO网友:Linda Paiste

使用get\\u the\\u terms()时,它会返回一个term对象。其中一个字段是“parent”,它存储术语parent的ID。因此,您可以将当前术语的父项与要查找的父项进行比较。

$desired_parent_name = \'fruits\';    
$desired_parent_id = get_term_by(\'name\', $desired_parent_name)->term_id;

foreach ($terms as $term) {
    if $term->parent == $desired_parent_id {
        //do something here
        echo $term->name;
    }
}
老实说,我不太理解这行代码>$term=array\\u shift($terms);因为我看不出你在用这个术语变量做什么。

有两种方法可以找到所有具有匹配帖子的术语。一是找到所有的帖子并检查它们的所有条款,这就是你正在做的。另一个是查找所有术语,看看它们是否有匹配的帖子。使用哪一个可能取决于你有多少术语和多少帖子,但我倾向于认为循环使用术语更快。

下面是如何获取父级“fruit”的所有术语,然后查看您的类型中有哪些帖子。

$allterms = get_terms( array( \'parent\' => $desired_parent_id ) );
foreach ($allterms as $term) {
    $args = array(
        \'post_type\'      =>  \'video_cpt\',
        \'post_status\'    =>  \'publish\',
        \'posts_per_page\' =>  1,
        \'tax_query\'      => array ( array (
            \'taxonomy\' => \'video_categories\',
            \'terms\'    => $term->term_id,
         ))
        \'fields\'         => \'ids\'
  ); //the fields parameter is to return just the post ids rather than the whole posts
      $video_query  = new WP_Query( $args );
      if ($video_query->have_posts()) {
         //there\'s videos that match this term, so do something
         echo $term->name;
      }
}

结束

相关推荐

分类模板中的GET_TERMS

我有两个自定义分类法和两个模板归档:分类法品牌。php和分类生产者。php如果我插入$terms = get_terms(\'brand\'); 在分类生产者中。phpI无法获取分类的术语brand.如果我写的是echo $terms->slug;, 它没有显示任何内容。