ワードプレスの投稿内容を一括置換


別のブログですが、もともとサクラのドメインで書いていたのですが、最近独自ドメインを取りました。
その際に、投稿内容のドメイン部分を書き換えるのにMySQLのREPLACE関数が便利でした。

一つ一つの記事内で使用しいるURLを編集画面から変更していると非常に手間が掛かりますが、REPLACE関数を使用するとSQL文1つで終わります。

PHPMyAdminにアクセスして、ワードプレスで使用しているデータベースを選択後、SQLタブでSQL文を1つ実行するだけです。

UPDATE `wp_posts` SET post_content=REPLACE (post_content,”http://hoge.sakura.ne.jp”,”http://hoge.net”);

 

wp_posts:投稿記事や固定ベージ、リビジョンなどが格納されているテーブルです
post_content:本文が格納されているカラムです

REPLACE (カラム名,”検索文字列”,”置換文字列”)
post_content 内の http://hoge.sakura.ne.jp を http://hoge.net に置換します。

この一文で、固定ページも含めた全ての投稿で指定している、ドメイン名の書き換えが終わります。

ただ、検索文字列の指定などが間違っていると全ての記事が間違った内容で書き換えられてしまうため、大変危険です。
実行前には一度テストをしてみることをオススメします。

例えば、あらかじめテストしたい投稿記事を一つ決め、そのID(番号)を調べます。

IDを調べる方法ですが、主に二通りあります。

  • 投稿の編集画面のパーマリンク(記事のURL)内の数字が、その記事のIDです
  • PHPMyAdminを開き、ワードプレスで使用しているデータベースを選び、wp_postsテーブルを表示して、テストしたいIDを選びます

IDが分かったら、先ほどのSQL文の後ろに条件指定「where ID=x」を追加します。

UPDATE `wp_posts` SET post_content=REPLACE (post_content,”http://hoge.sakura.ne.jp”,”http://hoge.net”) where ID=x;

 

条件指定を追加することで、IDが「x」の値のレコードだけを置換します。

これで、置換後の投稿記事を確認して、特に問題がなければ「where ID=x」を外して、全レコードに対して置換を実行します。