Get the first post term

时间:2012-03-10 作者:Sagive

如何仅获取自定义帖子类型的第一个术语<我可以得到所有-没问题。这就是我用来抓取它们的

<?php foreach ($terms as $term) {echo \'<a href="\'.get_term_link($term->slug, \'sitecat\').\'">\'.$term->name.\'</a>,\';} ?> >> <a href="<?php the_permalink(); ?>"><?php the_title(\'\', \'\'); ?></a></h2></span>
如果您能使用我的代码给出答案,我将不胜感激,但欢迎您提供任何帮助

5 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

我不知道你说的“第一”分类法是什么意思。。。但是

$terms = get_the_terms( $post->ID, \'mytaxonomy\' );
返回分类术语对象的数组,因此

$term = array_pop($terms);
将给出数组中的第一个项。然后:

echo \'<a href="\'.get_term_link($term->slug, \'mytaxonomy\').\'">\'.$term->name.\'</a>,\'
(如果返回空数组或错误,可能需要包含一些if语句(请参阅is_wp_error)

SO网友:Pieter Goosen

从PHP 5.4开始,您可以直接dereference 一个数组,所以要得到第一个项,您可以简单地执行以下操作。

$first_term = get_the_terms( $post->ID, \'TAXONOMY_NAME\' )[0];
var_dump( $first_term );
如果需要第一个术语的特定属性(说出术语名称),可以执行以下操作

$first_term_name = get_the_terms( $post->ID, \'TAXONOMY_NAME\' )[0]->name;
var_dump( $first_term_name );
编辑一个注释,它有它的缩进,因为你会得到一个WP_Error 对象,如果分类法无效。此外,如果返回的数组为空,还将收到未定义的数组键警告,因此请谨慎使用。

SO网友:Lafif Astahdziq

直接访问对象的密钥如何?

$terms = get_the_terms( $post->ID, \'sitecat\' );
$first_term = $terms[0];
因此,您可以访问该对象。

echo $first_term->name;

SO网友:J. Wrong

总结前面的所有答案,这里是我使用的帮助要点。执行所有必要的检查并接受与get_the_terms() 作用

function getTheFirstTerm($post, $taxonomy) {
    $post = get_post( $post );
    if ( ! $post ) {
        return false;
    }

    $terms = get_the_terms( $post->ID, $taxonomy );

    if (!empty($terms)  && !is_wp_error( $terms )) {
        //this line effectively returns the first available term object if there is one.
        return $terms[0];
    }

    return false;
}
Further note.为了简单起见,我的大多数情况下都需要这个函数,它只返回术语object或false。如果需要检查流,您仍然可以返回WP\\u错误,即。

if (!empty($terms)) {
   if(!is_wp_error( $terms )) {
       //this line effectively returns the first available term object if there is one.
       return $terms[0];
   } else {
       return $terms; //This returns the WP_Error object
   }       
}
此外,您还可以在返回第一个术语之前对术语进行排序,即按照term\\u id、slug、name、menu order等获得第一个term对象。

SO网友:Pankaj

这对我有用。它只带来第一类文本,没有锚定。

$terms = get_the_terms( $post->ID , \'your_custom_taxonomy\' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}

结束

相关推荐

Taxonomy term in permalink

我有个大问题。我整天都在为这个头痛。这似乎是一个愚蠢而简单的问题。可能还有一个愚蠢的简单答案。但我似乎找不到它。我想要的很简单。我有一个名为“producten”的自定义\\u post\\u类型和一个名为“producten\\u categorie”的分类法。在那里,我有大约数百种产品,它们都被分配到一个“produten\\u分类”术语中。我想更改永久链接,以便它们在产品永久链接中显示分类术语。What I have now is as follows:www.domain。com/producte