我有一个按帖子ID添加标签的功能,但现在我想在添加新标签之前删除该ID的所有当前标签?
有没有人知道内置函数或wordpress查询来执行此操作?
-Hudson
答案 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)
答案 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);