获取具有层次关系的帖子术语

时间:2013-01-14 作者:mikkelbreum

我很难在以特定方式呈现的自定义分类法中获得一组选定的术语。

我有一个层次分类法“位置”和一篇带有标记术语的帖子:

England (x)
  - London (x)
     - Venue1 (x)
France (x)
  - Paris (x)
     - Venue2
Germany
  - Berlin (x)
     - Venue3 (x)
我需要打印:

myPostTitle : Venue1 (London - England)
              Paris (France)
              Venue3 (Berlin)
我的问题是,我找不到一个能够以反映层次关系的方式返回带标签的术语的函数。我需要能够确定:

哪些术语是实际的“场所”(每个层级中“最低”标记的孩子)

  • 这些“最后一个孩子”的父母和祖父母包括哪些
  • 我在循环之外,不希望运行setup\\u postdata()。我有邮政ID。

    1 个回复
    SO网友:mrwweb

    我怀疑您是否会找到一个创建了您正在使用的确切输出的函数,因此您可能正在查看两个嵌套调用get_terms(). 我通常避免使用大多数其他与分类法相关的插件,而使用get术语。大多数其他函数都是此函数的包装器。

    下面是一些我要做的psuedo代码:

    <?php
    
    // Get all the top-level terms i.e. those without a parent
    $top_level_terms = get_terms( \'my_taxonomy\', array( \'parent\' => 0 ) );
    
    foreach( $top_level_terms as $top_term ) {
    
        // get child terms. use parent for direct descendants or child_of for all descendents
        $child_terms = get_terms( \'my_taxonomy\', array( \'child_of\' => $top_term->term_id ));
    
        // list the parent term    
        printf(
            \'<a href="%1$s">%2%s</a> (\',
            esc_url( get_term_link( $top_term->term_id ) ),
            esc_attr( $top_term->name )
        );
    
        // list all the child terms
        foreach ( $child_terms as $child_term ) {
            printf(
                \'<a href="%1$s">%2%s</a>, \',
                esc_url( get_term_link( $child_term->term_id ) ),
                esc_attr( $child_term->name )
            );
        }
    
        echo \')\';
    
    }
    
    该代码未经测试,当然需要您提供一些额外的参数,但希望这可以帮助您开始。

    结束

    相关推荐

    WP_SET_POST_TERMS仅将几个术语中的最后一个分配给帖子

    我有一个非常简单的设置,在这里我循环遍历一组演员,并为每个演员的名字成功地插入一个术语。然后,我使用wp\\u set\\u post\\u terms将这些术语分配给一篇文章,但这只会将最后一个术语分配给该文章。我不熟悉使用分类法/术语,所以可能有一个明显的解决方案。这是我的代码:foreach ($cast as $actor) { $actor_term_id = wp_insert_term( $actor[name], \'actor\', array(