回答:
これははるかに安全なクエリであり、彼の回答のdeathlocksクエリとは異なり、postmetaとterm_relationshipから関連するエントリが削除されます。
{id}を各ブログ投稿テーブルのIDに変更します。このクエリを組み合わせてすべてのpostテーブルを一度に実行できますが、最初に1つのテーブルでこれを試してください。単一のWPインストールで何度も使用しました。
DELETE a,b,c
FROM wp_{id}_posts a
LEFT JOIN wp_{id}_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_{id}_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'
実行後、phpmyadminでデータベースを最適化します。
そして、今後の改訂を防ぐために、この行をwp-config.phpの上部近くに追加します。
define('WP_POST_REVISIONS', 0);
または、1つのリビジョンを保存します。
define('WP_POST_REVISIONS', 1);
これを行うのに役立つプラグイン、WP Optimizeもあります
ウェブサイトから:
WP-Optimizeは、WordPress 2.9 ++データベースのクリーンアップおよび最適化ツールです。データベーステーブルを最適化するためにPhpMyAdminは必要ありません。
数回のクリックで、投稿の改訂、スパムキュー内のコメント、未承認のコメントを削除できます。
このコードをテーマのfunctions.php
ファイルに追加することもできます:
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 3);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);
このコードは、WP_POST_REVISIONS
制限がで設定されているかどうかをチェックしwp-config.php
、設定されていない場合は、ポストリビジョンを制限する関数にパラメーターを渡します。上記の例では、投稿は3つのリビジョンに制限されています。
これは、コードを追加する方法がわからない(またはしたくない)人々のためにテーマを作成する場合の優れたソリューションです。
答えをありがとう、マークラットレッジ。{id}に関する構文の一部が機能しませんでした。私は{id}を私の投稿IDの1つである4009に変更しましたが、成功しませんでした。私はhttps://dev-notes.eu/2017/11/manage-and-safely-delete-revisions-in-wordpress/で解決策を見つけました
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';
それはうまくいきました。