问题描述
我正在清理一个老的,有争议的博客条目,我需要从帖子中删除所有的评论。
令人惊讶的是,在现有的 WordPress(3.0.4)UI 中找不到一种方法。
我可以通过所有 200 多个评论点击”trash”,但这似乎过度。有没有另一种方法来做,我失踪了?
最佳解决方案
阅读此文的人对于 SQL 的恐惧……………(或者在 2011 年 Januari 之后通过 Google 发现):
等待这个动作,直到 3.1 出来,然后去一个帖子,检查所有评论和批量 「移动到垃圾」:)(它应该出来任何一天现在)(http://wordpress.org/about/roadmap/)
(或从 http://wordpress.org/download/release-archive/下载 3.1 RC3)
例:
http://edward.de.leau.net/files/bulkremove.png
次佳解决方案
WordPress 不支持通过邮寄方式批量管理对帖子的评论。虽然它直接在帖子的编辑页面上有一个注释管理部分。如您所说,您必须在每个评论上单击”Trash”:
或者,您可以备份 wp_comments 和 wp_commentmeta 表并运行以下查询:
-
查找帖子 ID 。让我们说相关的 id 是 X.
SELECT ID from wp_posts WHERE post_type='post' AND post_title='Hello world!' INTO @x;
-
添加相关评论元数据只是为了保持诚信:
INSERT INTO wp_commentmeta (comment_id, meta_key, meta_value) SELECT comment_ID, "wp_trash_meta_time", UNIX_TIMESTAMP() FROM wp_comments WHERE comment_post_ID=@x; INSERT INTO wp_commentmeta (comment_id, meta_key, meta_value) SELECT comment_ID, "wp_trash_meta_status",comment_approved FROM wp_comments WHERE comment_post_ID=@x;
-
垃圾所有评论:
UPDATE wp_comments SET comment_approved='trash' WHERE comment_post_ID=@x;
第三种解决方案
嗨 @Jeff Atwood:
我假设你有 MySQL 查询访问。这将为您的博客文章提供所有评论,其网址是'your-blog-post'
(如果您使用漂亮的永久链接,则是您的帖子网址的最后一个段落,即 http://example.com/2011/01/foo-bar-baz/您的插件将是'foo-bar-baz'
):
SELECT * from wp_comments WHERE comment_post_ID IN (
SELECT ID FROM wp_posts WHERE post_name='your-post-slug'
)
这将给你所有的评论元数据:
SELECT * from wp_commentmeta WHERE comment_id IN (
SELECT comment_ID from wp_comments WHERE comment_post_ID IN (
SELECT ID FROM wp_posts WHERE post_name='your-post-slug'
)
)
所以… 运行这两个命令 (但请确保将 post_name 值替换为等于您的)
DELETE from wp_commentmeta WHERE comment_id IN (
SELECT comment_ID from wp_comments WHERE comment_post_ID IN (
SELECT ID FROM wp_posts WHERE post_name='your-post-slug'
)
);
DELETE from wp_comments WHERE comment_post_ID IN (
SELECT ID FROM wp_posts WHERE post_name='your-post-slug'
);
附:这当然会完全删除它们,但是除非你想要将它们保存在垃圾箱中,否则将它们移动到垃圾桶中更容易。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。