我已经搜遍了整个地方并搜索了API。我提出的所有方法都是通过TAG获取POSTS的方法,但不能通过其ID获取SPECIFIC帖子的TAGS。
我尝试做的事情很简单 - 我有一个帖子,我想查看它是否有特定的标签 - ' specialtag' - 如果它有此标记,则在该页面上执行某些操作。似乎没有什么能指引我走向正确的方向。有没有我没见过的东西?
答案 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;
}