問題描述
我正在清理一個老的,有爭議的部落格條目,我需要從帖子中刪除所有的評論。
令人驚訝的是,在現有的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
