WordPress 投稿・固定ページのIDをSQLで変更する方法

WordPress 投稿・固定ページのIDをSQLで変更する方法

WordPressでは、投稿や固定ページ、カスタム投稿タイプの各コンテンツに一意のID(投稿ID)が割り当てられており、
このIDは内部データベース(主に wp_posts テーブル)で管理されています。
通常、投稿IDは自動採番され変更不可ですが、サイト移行やリンク調整などの理由で投稿IDを直接変更したい場合があります。

本記事では、SQLを用いて投稿・固定ページのIDを安全に変更する手順を解説します。
また、ID変更に伴う関連データの更新方法や注意点も詳述しますので、ぜひ参考にしてください。

作業前の準備

  • 必ず事前にデータベースの完全バックアップを取得してください。
    phpMyAdminやMySQLダンプ、もしくはバックアッププラグインを活用してください。
  • 作業はメンテナンスモード下で行うことを推奨します。
  • wp_ の部分は環境によって異なるテーブルプレフィックスに置き換えてください。

投稿IDの管理と関連テーブル

テーブル名カラム名用途
wp_postsID投稿・固定ページの主キー
wp_postmetapost_id投稿に紐づくカスタムフィールド
wp_term_relationshipsobject_id投稿とカテゴリー・タグの紐付け
wp_commentscomment_post_IDコメントの投稿ID紐付け
(プラグイン固有テーブル)post_id またはobject_idプラグインによって異なる参照

ID変更時は、これら全てのテーブルで該当IDを一括更新しなければなりません。

注意事項

  • 新しいID(例:456)が既に存在しないことを事前に確認してください。
  • ID変更は非常にリスクが高いため、本番環境ではなく、ステージング環境等で十分に検証してから実施してください。
  • テーマやプラグインでIDをハードコーディングしている場合は、それらも適宜修正してください。
  • ID変更により内部リンク切れや表示不具合が発生することがありますので、作業後にサイト全体の動作確認を入念に行ってください。

投稿IDを変更するSQL操作手順

以下の例では、投稿IDを 123 から 456 に変更する手順を示します。

-- 変更対象の投稿を確認
SELECT * FROM wp_posts WHERE ID = 123;

-- 1. 投稿本体のID変更
UPDATE wp_posts SET ID = 456 WHERE ID = 123;

-- 2. カスタムフィールドのpost_id更新
UPDATE wp_postmeta SET post_id = 456 WHERE post_id = 123;

-- 3. カテゴリー・タグ関連のobject_id更新
UPDATE wp_term_relationships SET object_id = 456 WHERE object_id = 123;

-- 4. コメントのcomment_post_ID更新
UPDATE wp_comments SET comment_post_ID = 456 WHERE comment_post_ID = 123;

-- 5. 必要に応じてプラグイン独自のテーブルも更新
-- 例:WPML多言語対応テーブル
-- UPDATE wp_icl_translations SET element_id = 456 WHERE element_id = 123;

※環境によりプラグイン独自のテーブルが存在する場合は、同様にやカラムの更新が必要です。

作業後の対応

  • WordPress管理画面の「設定」→「パーマリンク」画面で「変更を保存」をクリックし、パーマリンク設定を再生成してください。
  • キャッシュ系プラグインを利用している場合は、キャッシュをクリアしてください。
  • IDを直接指定したショートコードやカスタムリンクがある場合は、手動で修正が必要です。
関連記事
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
目次 プラグイン「Zipaddr-JP」とは 「Zipaddr-JP」の特徴 プラグイン「Zipaddr-JP」の使い方 プラグイン「Zipaddr-JP」のインストール お問い合わせフォームとの連携 さいごに プラグイン「Zipaddr- […]
メモ・ノートスケ
メモ・ノートスケ
1ヶ月前
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】
目次 1. お問い合わせフォーム系プラグイン Contact Form 7 2. 柔軟なカスタムフィールドを追加できる定番プラグイン Advanced Custom Fields(ACF) 3. SNS連携・インスタ埋め込みプラグイン Sm […]
メモ・ノートスケ
メモ・ノートスケ
21日前
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】
WordPressサイトでメルマガ運用する時の注意点|簡単にできることには注意が必要でやんす。
「一括管理って響き最高!」だけど…WordPressでメルマガ配信するならセキュリティにご用心!メリットと落とし穴、そしてBenchmark Emailの使い方まで、編集長がゆるっと解説!
WASABI
WASABI
22日前
WordPressサイトでメルマガ運用する時の注意点|簡単にできることには注意が必要でやんす。
【WordPress】Openverseを完全に無効化・削除する方法|functions.phpと.htaccessで徹底対応
WordPressに標準搭載されているOpenverse(オープンソース画像検索)を完全に削除したい方へ。functions.phpでの無効化から、.htaccessによるAPI接続のブロックまで、技術者向けに詳しく解説します。
キウイフルーツ
キウイフルーツ
1ヶ月前
【WordPress】Openverseを完全に無効化・削除する方法|functions.phpと.htaccessで徹底対応
PHPで日本語の日付形式をタイムスタンプに変換する方法【午前/午後対応】
日本語の「2025年6月24日」や「2025年6月24日 午後3時30分」といった形式の日付を、PHPで正確にタイムスタンプへ変換する方法を解説。DateTimeクラスを使ったベストプラクティスや、午前・午後を含む特殊な形式の処理例も紹介します。日本向けWordPress開発にも最適。
キウイフルーツ
キウイフルーツ
1ヶ月前
PHPで日本語の日付形式をタイムスタンプに変換する方法【午前/午後対応】
PHPでMySQLのバージョンを確認する方法
PHPを使ってMySQLのバージョンを取得する方法には、mysqli_get_server_info()、PDO::getAttribute()、および SELECT VERSION() という3つの一般的な方法があります。それぞれの方法でMySQLへの接続が必要です。
Details
Details
1ヶ月前
PHPでMySQLのバージョンを確認する方法
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
ブラウザのキャッシュによる古いJavaScript、CSS、画像の表示を防ぐには、URLにバージョン番号や日時パラメータを付けてリソースを更新する方法が有効です。 毎回タイムスタンプを使うとキャッシュ効果がなくなるため、手動や適切なタイミングでバージョン番号を管理するのがおすすめです。
Details
Details
2ヶ月前
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?