获取链接到帖子的所有术语,并包括那些未通过Get_Terms和Sort连接的术语

时间:2016-06-13 作者:Aadi

在我的WordPress项目中,我有以下术语,我的帖子可能与其中一些术语有关,有时甚至与所有术语有关。

我的第一篇文章(示例1)与术语A、B和C连接,第二篇文章(示例2)与术语A、D、E和F连接。我发现wp_get_post_terms() 将所有连接的术语返回到帖子。但是,有没有一种方法可以显示所有术语,将连接的术语放在第一位,然后在同一组中显示其他术语?示例:在后示例2的详细页面中,我想将术语显示为过滤器,如下所示,

这里B和C未与示例2连接,但我希望在禁用状态下以单柱显示。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您只需获取分配给帖子的术语id,然后将这些术语从get_terms()

您可以尝试以下操作(请注意get_terms() 已在v4中更改。5,我将使用新语法

$args       = [];
$taxonomy   = \'my_tax\';
$post_terms = get_the_terms( get_the_ID(), $taxonomy ); // Use wp_get_post_terms() if you need special ordering
// Only display the post terms and exclude them if there are terms and no WP_Error
if (    $post_terms
     && !is_wp_error( $post_terms )
) {
    $term_ids = [];
    // Display the list of post terms
    foreach ( $post_terms as $term_object ) {
        // Display term data 

        // Build an array of term ids
        $term_ids[] = $term_object->term_id;
    }

    // Set these id\'s to the exclude parameter
    $args[\'exclude\'] = $term_ids;
}

// Now we can get the list of all term
$args[\'taxonomy\'] = $taxonomy;
$terms            = get_terms( $args );
// Check if we have terms and no WP_Error
if (    $terms
     && !is_wp_error( $terms )
) {
    // Display the terms
    foreach ( $terms as $term ) {
        // Output the terms as needed
    }
}

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p