Wordpress - 按帖子ID删除所有标签

时间:2010-07-28 18:58:59

标签: wordpress tags

我有一个按帖子ID添加标签的功能,但现在我想在添加新标签之前删除该ID的所有当前标签?

有没有人知道内置函数或wordpress查询来执行此操作?

-Hudson

3 个答案:

答案 0 :(得分:2)

如果可以直接访问数据库(PhpMyAdmin),最快的方法是SQL请求。

查看codex中的database schema

DELETE FROM wp_term_relationships
WHERE wp_term_relationships.object_id = 'yourPostId'
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.taxonomy = 'post_tag';

警告:显然,直接修改数据库是危险的。小心这样做。

答案 1 :(得分:1)

应该帮助你实现目标:

Wordpress API: Add / Remove Tags on Posts

我找到了这个功能:wp_delete_term看看它是否对你有帮助......

答案 2 :(得分:0)

我把它拼凑在一起。它的纯数据库工作,因为我认为没有通过ID删除标签的快速功能,(但我仍然不是100%确定)。

//define array of tags
$tags = array("new tag","new tag 2");     
//define post ID
$val = 254;

 //delete tags associated to post id
$query = "SELECT * FROM ".$table_prefix."term_relationships tr JOIN ".$table_prefix."term_taxonomy tt ON tr.term_taxonomy_id=tt.term_taxonomy_id WHERE tr.object_id='$val' AND tt.taxonomy='post_tag'";
$result = mysql_query($query);
if (!$result){echo $query; echo mysql_error();}

while ($arr = mysql_fetch_array($result))
{
        $tid = $arr['term_taxonomy_id'];
        $query2 = "DELETE FROM ".$table_prefix."term_relationships WHERE term_taxonomy_id='$tid'";
        $result2 = mysql_query($query2);
        if (!$result2){echo $query2; echo mysql_error();}
}


//add tags to post id           
wp_add_post_tags($val,$tags);