【问题标题】:Wordpress - Delete all tags by Post IDWordpress - 按帖子 ID 删除所有标签
【发布时间】:2010-07-28 18:58:58
【问题描述】:

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

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

-哈德森

【问题讨论】:

    标签: wordpress tags


    【解决方案1】:

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

    查看法典中的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';
    

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

    【讨论】:

    • 我相信这也可能会删除类别关联。
    • 是的。要仅删除标签,此代码必须精确(通过 wp_term_taxonomy 上的条件,但由于我没有数据库,我现在不能说什么条件:/)
    • 我查看了一个 WP 数据库并编辑了我的回复。新的 SQL 请求只删除 post 标签。
    • where-clause 中使用的 wp_term_taxonomy 表未连接,因此删除将失败。以下将起作用,因此更加危险;-) DELETE FROM wp_term_relationships WHERE object_id = 'yourPostId' AND term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'post_tag')
    【解决方案2】:

    应该可以帮助您到达那里:

    Wordpress API: Add / Remove Tags on Posts

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

    【讨论】:

    • 我找到了那个,这就是我获得添加标签脚本的地方,但我不阅读或理解删除该资源中的所有标签功能。
    【解决方案3】:

    这是我拼凑起来的。它的纯数据库工作,因为我相信没有快速的功能可以通过 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2019-02-15
      • 2013-11-01
      • 1970-01-01
      相关资源
      最近更新 更多