通过ID获取某个帖子的WordPress标签?

时间:2015-04-11 21:02:06

标签: php wordpress tags

我已经搜遍了整个地方并搜索了API。我提出的所有方法都是通过TAG获取POSTS的方法,但不能通过其ID获取SPECIFIC帖子的TAGS。

我尝试做的事情很简单 - 我有一个帖子,我想查看它是否有特定的标签 - ' specialtag' - 如果它有此标记,则在该页面上执行某些操作。似乎没有什么能指引我走向正确的方向。有没有我没见过的东西?

3 个答案:

答案 0 :(得分:5)

很简单,您可以使用get_the_tags这样的功能:

  

CODEX:该函数返回一个对象数组,每个标记分配一个对象   帖子。

示例1:

如果您有帖子ID,则可以通过此代码检索与帖子相关联的标签

$postid = $post->ID; 
get_the_tags($postid);

示例2:

检索与循环内的帖子相关联的标签

$posttags = get_the_tags();
if ($posttags) {
  foreach($posttags as $tag) {
    echo $tag->name . ' '; 
  }
}

此功能在循环中使用,则无需传递ID

示例3:

检索与循环外的帖子相关联的标记

global $post;
   foreach(get_the_tags($post->ID) as $tag) {
      echo $tag->name . ', ';
   }

答案 1 :(得分:4)

get_the_tags将获取特定帖子的所有标记。它可以将帖子ID作为参数在循环之外使用:

https://codex.wordpress.org/Function_Reference/get_the_tags

如果您只想确定帖子是否包含特定标记,则可以使用has_tag

https://codex.wordpress.org/Function_Reference/has_tag

if( has_tag($tag_slug_or_id, $post_id_or_object) ) {
    //...
}

答案 2 :(得分:0)

如果您需要通过帖子ID获取标签,则可以使用followng函数。由于该方法基于数​​据库查询,因此可以在任何地方使用。

function sc_tf_get_tags_as_array($post_id){
    global $wpdb;
    $tbl_terms = $wpdb->prefix . "terms";
    $tbl_term_relationships = $wpdb->prefix . "term_relationships";

    $sql = "SELECT name FROM $tbl_terms WHERE term_id in (SELECT term_taxonomy_id FROM $tbl_term_relationships WHERE object_id='$post_id');";
    $results = $wpdb->get_results($sql);

    if($results){
        foreach($results as $row){
            $tags_list[] = $row->name;
        }
    }

    return $tags_list;
}