想要wp_get_post_Terms以任意顺序返回,该怎么办?

时间:2013-12-20 作者:Charles

下面的函数按字母顺序返回,而不是按任意顺序返回
是否可以-不-按字母顺序返回,但按数组中给出的确切顺序返回?

add_filter(\'the_content\', \'my_function\');
function my_function($content) {
if ( is_single() && in_category( \'5\' ) ) {
the_post_thumbnail(\'thumbnail\', array(\'class\' => \'top-post-img\' ));    

global $post;
$term_list=wp_get_post_terms($post->ID,array(\'school\',\'article\',\'teacher\'),array( "fields" => "names"));
?>
<div style="margin:45px;">
    School: <strong><?php print_r($term_list[0]); ?></strong><br />
    Article: <strong><?php print_r($term_list[1]); ?></strong><br />
    Teacher: <strong><?php print_r($term_list[2]); ?></strong>
</div>
<?php       
return $content;
} else { 
return $content;
}
}
我尝试添加:

array (\'orderby\' => \'post__in\'),  array (\'post__in\' => \'24\', \'10\', \'3\', \'46\' )
数字是分类ID,但它不会更改任何内容,也不会引发错误。

为了找到分类ID,我使用了以下代码,还是这是错误的代码?

$terms = get_the_terms( $post->ID , \'taxonomy-name\' );
if($terms) {
foreach( $terms as $term ) {
    echo $term->term_id.\'<br />\';
}
}
我应该使用list_filter 在代码中的某个地方或下面的某个地方print_r ?

已添加

 var_dump($term_list);
看看输出是否会显示其他内容,但不是,它是相同的。。按字母顺序排列
我肯定忘了一些,但忘了什么,忘了在哪里。还是我的方法完全错了

很想找到一个解决方案
提前感谢您花费的所有时间和精力。

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

add_filter(\'the_content\',\'my_function\');
function my_function($content){
    the_post_thumbnail(\'thumbnail\', array(\'class\' => \'top-post-img\' ));

  if (is_single() && in_category(\'5\')){
    global $post;
    $term_list = wp_get_post_terms ($post->ID,\'school\',array(\'fields\'=>\'names\'));
    ?>
    <div id="some_class">
    <span>School:<strong><?php print_r($term_list[0]); ?></strong></span>
    <?php
    if (is_single() && in_category(\'5\')){
        $term_list = wp_get_post_terms ($post->ID,\'article\',array(\'fields\' =>\'names\'));
        ?>
        <span>Article:<strong><?php print_r($term_list[0]); ?></strong></span>
        <?php
        if (is_single() && in_category(\'5\')){
            $term_list = wp_get_post_terms ($post->ID,\'teacher\',array(\'fields\'=>\'names\'));
            ?>
            <span>Teacher:<strong><?php print_r($term_list[0]); ?></strong></span>
            </div>
            <?php
            return $content;
            }
        }
    } else {
        return $content;
    }
}
Output as shown in Post

感谢您的建议Rarst, 这个代码很有魅力
如您所见,它确实显示了Featured Image 它属于该post,
并且按照代码中所希望的顺序返回输出
它还使用一些CSS来设置样式(在style.CSS中),因此它在标题下方和内容上方都显示得很好。

Update获取通知:未定义的偏移量:0

周围有人帮我吗?

SO网友:Rarst

如果您查看源代码wp_get_object_terms() 许多相关函数在内部使用,没有自定义选项orderby 在里面。为此,我可能会用PHP对返回的数据重新排序。

然而,更实际的是,我只需要分别检索不同分类法的术语。从逻辑上来说,你所拥有的东西看起来有点脆弱——例如,如果缺少一个术语,或者错误地分配了比预期更多的术语,该怎么办?输出将很快变差。

结束

相关推荐

Show terms in archive page

我试图在存档页上显示特定帖子类型的术语。我不明白如何“呼应”术语名称。这是我的代码:<?php $terms = get_terms(\"event_cat\"); ?> <?php while (have_posts()) : the_post(); ?> print term->name here <?php endwhile; ?>