[WordPress] 投稿IDを手動で変更

公開

スポンサーリンク

WordPressの投稿IDは自動的に割り振られます。データベースのwp_postsテーブルにあるIDカラムがそれです。諸事情でこのIDを強制的に変更する必要があったので、その手順についてメモを残しておきます。なお、ここではテーブルの接頭辞がデフォルトの“wp_”のままであるものとして説明しています。接頭辞を変更している場合は“wp_”の部分を設定した接頭辞に読み替えてください。

WordPressに記事を投稿すると自動的に投稿IDが割り振られます。パーマリンク設定でURLに投稿名を設定していても、内部的にはこの投稿IDがすべての基準になっています。管理者ページの投稿一覧で、投稿済みのページの編集画面を開くと、URLはこのようになっています。

http://domain.com/wp-admin/post.php?post=777&action=edit

post=の後の777が投稿IDです。この投稿IDを777から1に変更するとします。

データベースの操作にphpmyadminを使っている場合なら、wp_postsテーブルからID=777を見つけだし、これを1に変更します。これで投稿IDの変更は終了です。

さて問題は、元の投稿IDに紐付けられたデータの変更です。IDを変更した投稿に、カテゴリーやタグのほかカスタムタクソノミー、さらにはSEO関連のメタ情報などが設定されている場合、それらのデータが元のID=777に紐付けられた形で別のテーブルに保存されています。これらを間違うことなく変更しないといけません。

まず、カテゴリー、タグ、カスタムタクソノミー類ですが、記事との紐付けに関する情報はwp_term_relationshipsテーブルに保存されています。このテーブルのobject_idが777のものを1に変更します。変更対象のカラムは状況に応じて複数存在するので、見落としがないように気をつけてください。SQLが分かる人はUPDATE文で変更した方が確実でしょう。

UPDATE 'wp_term_relationships' SET object_id=1 WHERE object_id=777

次はwp_postmetaテーブルです。All in One SEOやWordPress SEO by YoastなどのプラグインでSEO関連の項目を設定している場合やカスタムフィールドを有効にしている場合、投稿に紐付けられたメタ情報はwp_postmetaテーブルに保存されます。これらにも投稿IDの変更を反映させなければなりません。こちらのテーブルではpost_id=777が変更対象の情報です。post_idが777のものを1に書き換えます。これも複数存在する可能性があるので見落としがないように気をつけてください。

以上で投稿IDの変更は完了です。

スポンサーリンク


Comment