WordPressの投稿データだけを完全削除する方法 – 設定は残してコンテンツをリセット
なぜこの方法が必要なのか?実際の活用シーン
WordPressを長年運用していると、こんな悩みに直面することがあります。
ケース1:企業サイトのリニューアル
5年間運用してきた企業ブログ。デザインやプラグインの設定は完璧に仕上がっているけれど、事業方針の変更で過去の記事をすべて削除して、新しいコンテンツで再スタートしたい。でも、1,000件以上ある記事を管理画面から1つずつ削除するのは現実的ではありません。
ケース2:テンプレートとして再利用
美容院のサイトを作った後、同じデザインで飲食店のサイトを作りたい。テーマやカスタムフィールドの設定はそのまま使いたいけれど、美容院の投稿データは当然不要です。
ケース3:開発環境から本番環境への移行
制作会社がクライアントに納品する際、開発中に入れたダミー記事やテスト投稿を削除したい。でも、苦労して設定したACFのフィールドグループやカスタム投稿タイプの設定は残したい。
これらの場合、WordPressの「ツール」→「リセット」では設定まですべて消えてしまいます。かといって、管理画面から削除するのも非効率的。そこで、データベースを直接操作する方法が最も効率的なのです。
事前準備:失敗しないための3つのポイント
1. 現在の状況を正確に把握する
まず、WordPressにどんなデータが入っているか確認しましょう。管理画面にログインして以下をチェックしてください:
- 投稿数:ダッシュボードまたは「投稿」→「すべての投稿」で確認
- カスタム投稿タイプ:「CPT UI」や「Custom Post Type UI」などのプラグインを使用している場合、どんな投稿タイプがあるか確認
- カテゴリー・タグの数:「投稿」→「カテゴリー」「タグ」で確認
- カスタムフィールド:ACFなどを使っている場合、フィールドグループの設定を確認
この情報は、削除後に正しく動作しているか確認する際に必要になります。
2. バックアップは2重に取る
データベースの操作は一発勝負。やり直しはできません。必ず以下の2つの方法でバックアップを取りましょう。
方法1:プラグインでバックアップ
- 「All-in-One WP Migration」や「UpdraftPlus」などのバックアッププラグインを使用
- サイト全体のバックアップを取得
方法2:データベースのバックアップ
- phpMyAdminから直接SQLファイルをエクスポート(後述)
3. できればテスト環境で練習する
本番サイトでいきなり実行するのは危険です。可能であれば以下の方法でテスト環境を用意しましょう:
- Local by Flywheelなどのローカル開発環境にサイトをコピー
- レンタルサーバーのテスト環境機能を利用
- サブドメインに複製を作成
phpMyAdminへのアクセス方法(詳細版)
エックスサーバーの場合
- エックスサーバーのサーバーパネルにログイン
- ログインURL:
https://secure.xserver.ne.jp/xapanel/login/xserver/server/ - サーバーIDとサーバーパスワードを入力
- ログインURL:
- データベース項目を探す
- サーバーパネルの中段あたりにある「データベース」セクション
- 「phpmyadmin(MySQL5.7)」または「phpmyadmin(MariaDB10.5)」をクリック
- データベースを選択
- 左側のリストから該当するデータベース名をクリック
- データベース名は通常「サーバーID_wp1」のような形式
ロリポップの場合
- ユーザー専用ページにログイン
- ログインURL:
https://user.lolipop.jp/ - ロリポップのドメインとパスワードを入力
- ログインURL:
- データベースメニューを開く
- 左側メニューの「サーバーの管理・設定」→「データベース」
- phpMyAdminを開く
- 該当するデータベースの行にある「phpMyAdminを開く」ボタンをクリック
- ユーザー名とパスワードが自動入力されるので「実行する」をクリック
さくらインターネットの場合
- コントロールパネルにログイン
- ログインURL:
https://secure.sakura.ad.jp/auth/login
- ログインURL:
- データベースメニューを選択
- 左側メニューの「Webサイト/データ」→「データベース」
- phpMyAdminにアクセス
- データベース一覧から該当するものの「phpMyAdmin」ボタンをクリック
- データベース接続用パスワードを入力
データベース名がわからない場合の確認方法
WordPressのファイルマネージャーかFTPソフトで、サイトのルートディレクトリにあるwp-config.phpファイルを確認します。以下のような記述を探してください:
/** WordPress のためのデータベース名 */
define('DB_NAME', 'ここにデータベース名が記載されています');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'ユーザー名');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'パスワード');
/** データベースのテーブルを作成する際のデータベースの文字セット */
$table_prefix = 'wp_'; // この部分も重要です!
この$table_prefixの値は後で使用するので、メモしておいてください。
phpMyAdminでのバックアップ取得(画像付き解説)
- データベースを選択
- 左側のデータベース一覧から、WordPressが使用しているデータベースをクリック
- エクスポートタブを選択
- 上部のタブメニューから「エクスポート」をクリック
- エクスポート方法を選択
- 「簡易」が選択されていることを確認
- フォーマットは「SQL」のまま
- 実行ボタンをクリック
- 画面下部の「実行」ボタンをクリック
データベース名.sqlというファイルがダウンロードされます
- ダウンロードしたファイルを確認
- ファイルサイズが数MB〜数十MBあることを確認
- ファイル名に今日の日付を追加して保存(例:
database_20240115.sql)
実践:投稿データの一括削除
ステップ1:削除前の最終確認
phpMyAdminの「SQL」タブをクリックして、以下のコードを貼り付けて実行します。これで、どんなデータが削除されるか確認できます。
-- 削除される投稿の種類と数を確認
SELECT post_type as '投稿タイプ', COUNT(*) as '件数'
FROM wp_posts
WHERE post_type NOT IN ('page', 'attachment', 'nav_menu_item', 'custom_css', 'customize_changeset', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation')
GROUP BY post_type;
-- 削除される分類の種類と数を確認
SELECT taxonomy as '削除される分類', COUNT(*) as '件数'
FROM wp_term_taxonomy
WHERE taxonomy NOT IN ('nav_menu', 'link_category')
GROUP BY taxonomy;
-- カスタムフィールドの総数を確認
SELECT COUNT(*) as '削除されるカスタムフィールド数'
FROM wp_postmeta
WHERE post_id IN (
SELECT ID FROM wp_posts
WHERE post_type NOT IN ('page', 'attachment', 'nav_menu_item', 'custom_css', 'customize_changeset', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation')
);
重要:wp_の部分は、先ほど確認した$table_prefixの値に置き換えてください。
ステップ2:完全削除の実行
以下のコードをコピーして、phpMyAdminのSQLタブに貼り付け、実行します。
-- =====================================================
-- WordPress 投稿データの完全削除
-- =====================================================
-- 1. すべての投稿を削除(固定ページとメディアは残す)
DELETE FROM wp_posts
WHERE post_type NOT IN (
'page', 'attachment', 'nav_menu_item', 'custom_css',
'customize_changeset', 'wp_block', 'wp_template',
'wp_template_part', 'wp_global_styles', 'wp_navigation'
);
-- 2. カスタムフィールドを削除
DELETE FROM wp_postmeta
WHERE post_id NOT IN (SELECT ID FROM wp_posts);
-- 3. 投稿との関連付けを削除
DELETE FROM wp_term_relationships
WHERE object_id NOT IN (SELECT ID FROM wp_posts);
-- 4. カテゴリー・タグ・カスタム分類を削除
DELETE FROM wp_term_taxonomy
WHERE taxonomy NOT IN ('nav_menu', 'link_category');
-- 5. 使われなくなった分類名を削除
DELETE FROM wp_terms
WHERE term_id NOT IN (SELECT term_id FROM wp_term_taxonomy);
-- 6. 分類の追加情報を削除
DELETE FROM wp_termmeta
WHERE term_id NOT IN (SELECT term_id FROM wp_terms);
-- 7. コメントを削除
DELETE FROM wp_comments
WHERE comment_post_ID NOT IN (SELECT ID FROM wp_posts);
-- 8. コメントの追加情報を削除
DELETE FROM wp_commentmeta
WHERE comment_id NOT IN (SELECT comment_ID FROM wp_comments);
-- 9. デフォルトカテゴリーを再作成
INSERT INTO wp_terms (term_id, name, slug, term_group)
VALUES (1, '未分類', 'uncategorized', 0)
ON DUPLICATE KEY UPDATE name = '未分類';
INSERT INTO wp_term_taxonomy (term_id, taxonomy, description, parent, count)
VALUES (1, 'category', '', 0, 0)
ON DUPLICATE KEY UPDATE taxonomy = 'category';
-- 10. 設定を更新
UPDATE wp_options SET option_value = '1' WHERE option_name = 'default_category';
-- 11. ID番号をリセット
ALTER TABLE wp_posts AUTO_INCREMENT = 1;
ALTER TABLE wp_postmeta AUTO_INCREMENT = 1;
ALTER TABLE wp_terms AUTO_INCREMENT = 1;
ALTER TABLE wp_term_taxonomy AUTO_INCREMENT = 1;
ALTER TABLE wp_term_relationships AUTO_INCREMENT = 1;
ALTER TABLE wp_termmeta AUTO_INCREMENT = 1;
ALTER TABLE wp_comments AUTO_INCREMENT = 1;
ALTER TABLE wp_commentmeta AUTO_INCREMENT = 1;
実行後、「〇〇行削除しました」というメッセージが表示されれば成功です。
削除後の確認作業(チェックリスト)
1. WordPress管理画面での確認
以下の項目を順番に確認していきます:
- [ ] ダッシュボード:「概要」ウィジェットで投稿数が0になっているか
- [ ] 投稿一覧:「投稿」→「投稿一覧」を開いて、記事が0件になっているか
- [ ] カテゴリー:「投稿」→「カテゴリー」で「未分類」のみ存在するか
- [ ] タグ:「投稿」→「タグ」でタグが0件になっているか
- [ ] メディア:「メディア」→「ライブラリ」で画像等が残っているか
- [ ] 固定ページ:「固定ページ」→「固定ページ一覧」でページが残っているか
- [ ] メニュー:「外観」→「メニュー」でメニュー設定が残っているか
- [ ] ウィジェット:「外観」→「ウィジェット」で設定が残っているか
2. プラグインの設定確認
使用しているプラグインの設定が残っているか確認します:
- [ ] ACF(Advanced Custom Fields):フィールドグループの設定が残っているか
- [ ] CPT UI:カスタム投稿タイプの設定が残っているか
- [ ] Contact Form 7:フォームの設定が残っているか
- [ ] Yoast SEO / All in One SEO:SEO設定が残っているか
3. 新規投稿のテスト
実際に新しい投稿を作成して、すべてが正常に動作するか確認します:
- 通常の投稿を作成
- 「投稿」→「新規追加」
- タイトルと本文を入力
- カテゴリーを「未分類」に設定
- 公開ボタンをクリック
- カスタムフィールドの動作確認
- ACFなどで設定したフィールドが表示されるか
- 値を入力して保存できるか
- 表示確認
- 公開した投稿がサイト上で正しく表示されるか
- アーカイブページが正常に動作するか
よくあるトラブルと解決方法
エラー1:「Table ‘wp_posts’ doesn’t exist」
原因:テーブル接頭辞が違っています。 解決方法:
- phpMyAdminの左側でテーブル一覧を確認
wp_postsではなくwp1_postsやwpx_postsなどになっている場合は、SQLコード内のすべてのwp_をその接頭辞に置換
エラー2:管理画面でエラーが表示される
原因:必要なデータまで削除してしまった可能性があります。 解決方法:
- phpMyAdminでバックアップファイルをインポート
- 「インポート」タブ→ファイルを選択→実行
エラー3:新しいカテゴリーが作成できない
原因:デフォルトカテゴリーの設定が正しくない。 解決方法:
UPDATE wp_options SET option_value = '1' WHERE option_name = 'default_category';
DELETE FROM wp_options WHERE option_name = 'default_category';
エラー4:カスタム投稿タイプが表示されない
原因:プラグインが無効になっている可能性があります。 解決方法:
- プラグイン一覧で関連プラグインが有効か確認
- 無効になっていたら有効化
- それでも表示されない場合は、プラグインを一度無効化→有効化
応用編:条件を指定した削除
古い投稿だけを削除したい場合
2年以上前の投稿のみを削除する場合:
-- 2年以上前の投稿を削除
DELETE FROM wp_posts
WHERE post_type NOT IN ('page', 'attachment', 'nav_menu_item', 'custom_css', 'customize_changeset', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation')
AND post_modified < DATE_SUB(NOW(), INTERVAL 2 YEAR);
-- 削除した投稿のカスタムフィールドを削除
DELETE FROM wp_postmeta
WHERE post_id NOT IN (SELECT ID FROM wp_posts);
-- 以下、通常の削除と同じ手順
特定のカスタム投稿タイプを残したい場合
例えば「product」という投稿タイプを残す場合:
DELETE FROM wp_posts
WHERE post_type NOT IN ('page', 'attachment', 'nav_menu_item', 'custom_css', 'customize_changeset', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation', 'product');
セキュリティ上の注意点
phpMyAdminの使用後は必ずログアウト
phpMyAdminにログインしたままにしておくと、セキュリティリスクがあります。作業が終わったら必ずログアウトしましょう。
データベースのパスワードは定期的に変更
WordPressのデータベースパスワードは定期的に変更することをお勧めします。変更した場合は、wp-config.phpの以下の部分も更新が必要です:
define('DB_PASSWORD', '新しいパスワード');
バックアップファイルの管理
ダウンロードしたSQLファイルには、すべてのデータが含まれています。以下の点に注意してください:
- パスワード付きのZIPファイルに圧縮して保存
- クラウドストレージに保存する場合は、二段階認証を設定
- 不要になったバックアップファイルは完全に削除
まとめ:成功のポイント
WordPressの投稿データだけを削除する作業は、正しい手順で行えば決して難しくありません。成功のポイントは以下の3つです:
- 事前準備を怠らない:バックアップは必須、できればテスト環境で練習
- 確認作業を省略しない:削除前の確認SQLで、何が削除されるか必ず確認
- 削除後のテストを丁寧に:新規投稿の作成テストで、正常動作を確認
この方法をマスターすれば、WordPressサイトの再利用や転用が格段に楽になります。制作会社の方であれば、クライアントへの納品前のクリーンアップ作業も効率化できるでしょう。
ただし、データベースの操作は常にリスクを伴います。不安な場合は、WordPress専門の技術者に相談することをお勧めします。また、レンタルサーバーによっては、サポートで相談に乗ってくれる場合もあるので、活用してみてください。
正しい知識と慎重な作業で、あなたのWordPressライフがより快適になることを願っています。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。