为什么我的分类代码显示第一个字母术语?

时间:2012-05-16 作者:PaulB

我想做的是呼应分类法的最后一个层次子术语。我的分类法是propertytype.

我的层次结构是:

房地产(母公司)

  • 商业(子公司)
  • 办公室(商业子公司)
  • 地下室(商业子公司)
    • 因此,在上述情况下,我只想回应一下Offices, 或者最后一个层级子项是哪个。

      我原以为下面的代码可以做到这一点,但它实际上与Commercial 因为Commercial 按字母顺序排在办公室之前。现在Basement 可以,因为它是按字母顺序排列的Commercial.

      如何始终只回显最后一个层次子项?

      我的代码是:

      $terms = get_the_terms($wp_query->post->ID, \'propertytype\');                    
      //die(print_r($terms));
      $props = array();
      foreach ($terms as $term) { 
          $hasChildrenTest = get_term_children($term->ID, \'propertytype\' );
          if ($term->parent) {
              if (empty($hasChildrenTest) && !is_wp_error($hasChildrenTest)) {
                  $props[] = $term->slug;
              }
          }
      }
      echo $props[0];
      

    1 个回复
    SO网友:Michael Ecklund

    具有wp_get_object_terms() 您可以操纵排序。

    确保根据需要调整排序。

    Try something more or less like this (Updated: 5/17/2012 -- 8:15AM):

    $taxonomyName = \'producttype\';
    $terms = wp_get_object_terms($wp_query->post->ID, $taxonomyName, array(\'orderby\' => \'name\', \'order\' => \'ASC\', \'fields\' => \'all\'));
    if(!empty($terms)){
        if(!is_wp_error($terms)){
            for($i = 0; $i < count($terms); $i++){
                if($terms[$i]->parent != 0){
                    $termChildren[] = $terms[$i];
                }
            }
        }
    }
    print_r($termChildren);
    
    输出所有公共自定义分类的列表
    <?php 
    $args=array(
      \'public\'   => true,
      \'_builtin\' => false
    
    ); 
    $output = \'names\'; // or objects
    $operator = \'and\'; // \'and\' or \'or\'
    $taxonomies=get_taxonomies($args,$output,$operator); 
    if  ($taxonomies) {
      foreach ($taxonomies  as $taxonomy ) {
        echo \'<p>\'. $taxonomy. \'</p>\';
      }
    }
    ?>
    
    输出所有公共自定义帖子类型的列表
    <?php 
    $args=array(
      \'public\'   => true,
      \'_builtin\' => false
    ); 
    $output = \'names\'; // names or objects, note names is the default
    $operator = \'and\'; // \'and\' or \'or\'
    $post_types=get_post_types($args,$output,$operator); 
      foreach ($post_types  as $post_type ) {
        echo \'<p>\'. $post_type. \'</p>\';
      }
    ?>
    

    结束

    相关推荐

    Custom taxonomy admin page

    如果要为分类法创建自定义管理页面,可以设置\'show_ui\' => false 当您注册它以抑制默认管理页,然后创建新的管理页以替换它时。然而edit-tags.php?taxonomy=taxonomy-slug 仍然会将您带到“隐藏”默认管理页面。是否有办法将其定向到自定义管理页面。或者有没有其他方法可以绕过这个问题?