WordPressで記事IDを任意のものに変更する手順

2+

WordPressの引っ越しをした等、記事IDをいじりたい場合があります。
その際は、内部 MySQL の幾つかのテーブルを更新すれば良い模様。
私が行った手順を以下に示します。

1.Excel で対応表を作る

Excelにて、旧番号(変更前)と新番号 (変更後) の対応表を作ります。

2.更新用のSQL文を作る

私のケースでは、更新対象となるMySQLのテーブルは、wp_posts, wp_postmeta, wp_term_relationships の3つでした。

wp_posts では、ID列と、post_parent 列の2列が変更対象です。
残りのテーブルでは、変更対象はそれぞれ1列でした。

Excel の C列に次のように入力します。

=”UPDATE wp_posts set ID =”&B1&” where ID =”&A1&”;”

Excel の D列に次のように入力します。

=”UPDATE wp_posts set post_parent =”&B1&” where post_parent =”&A1&”;”

Excel の E列に次のように入力します。

=”UPDATE wp_postmeta set post_id =”&B1&” where post_id=”&A1&”;”

Excel の F列に次のように入力します。

=”UPDATE wp_term_relationships set object_id =”&B1&” where object_id=”&A1&”;”

(3)SQL文の実行

上図のC列からF列まで、文の入っている範囲をコピーして、phpMyAdminのSQLエディタに貼り付けます。その際、画面左側のツリーにて、データベース(例ではwp)を選択しておくこと。[クエリをシミュレート]にてエラーの有無をチェックし、問題なければ[実行]を押します。

4. 記事IDの現在の値の更新

記事を投稿した際のIDは、自動的に+1 されるようになっています。これは、MySQLの AUTO_INCREMENT によって行われています。記事のIDを任意の値に更新すると、将来的に AUTO_INCREMENT がその値に追いついて、不具合を引き起こす恐れがあります。例えば、現在の記事ID が5のものを100に更新した場合、暫く経った後に AUTO_INCREMENT が 98, 99, 100 と増えていった際に、記事ID 100 が重複して不具合となる可能性がある。これを事前に回避するため、 AUTO_INCREMENT の値を大きな値に設定しておきます。

以下のSQL文を実行し、現在の記事IDの最大値+1 を取得します。

SELECT max(ID)+1 FROM wp_posts;

AUTO_INCREMENT の値はテーブルに対し設定されているため、以下のSQL文にて現在値を変更しておきます。値は適宜変更します。

ALTER TABLE wp_posts auto_increment = 3093;

これにて、 AUTO_INCREMENT の値が wp_posts のどの記事ID よりも大きくなるため、将来的に既存の記事IDに追いつく恐れは無くなります。

以上です。しばらくは様子見ですが、思ったよりも大変じゃなかったです。

参考記事

[WordPress]記事番号(投稿id)を手動で変更

2+
カテゴリー:


2+