phpMyAdminでWordPressの投稿データの特定URLを書き換えてみた

去年の末頃に思い立ってドメインをwp-study.netからthecontent.jpというのに変更したのですが、投稿に入れた画像のURLが新しいURLに変わってなくて画像が壊れていたのでphpMyAdminからSQLを打ってURLを一括変換してみました!

ちなみにこのSQL(クエリ)での一括変換は僕もまだ未熟で不具合が出ないとも限らないのと、ひとつ間違うと全投稿データがおしゃかになる可能性も有るので試すならバックアップを取ってから、自己責任でお願いします。SQLは危ないぜぇ〜(笑)

MySQLとは

WordPress使っている方で知らない人はあんまりいないと思うんですが、WordPressの各種設定だったり投稿データだったりはMySQLというデータベースに保存されています。(なのでFTPではWordPressの投稿データは見れないし、バックアップもFTPで画像ファイルとかとは別にMySQLのデータベースからも投稿データ等をバックアップしないといけない)

そのMySQLというデータベースに対しての命令がSQLで、このSQLで特定のデータを表示したり、変更したり、削除したり出来ます。基本的にWordPressでブログを書いていて普段使う事は無いんですが、今回のような ”記事内容を一括で変えたい” とかの場合にはSQLで一括で変えるのが危険では有るが一瞬で出来そうなので只今絶賛MySQLの勉強中です。便利な反面、間違うと一発でWordPressが死にますので非常にシビアな作業

で、そのSQL(クエリ)はサーバーのMySQLにログインして実行しないといけないんですが、有名どころのホスティングサービスには大体phpMyAdminという管理画面が用意されてまして、そこからMySQLにアクセスして中身が見れたりSQL(クエリ)が打てたりします。

今回もXSERVERの管理画面からphpMyAdminに入り、そこから画像のURLを一括変換してみたいと思います。

ドメインを変えたら各投稿に挿入した画像のURLも変えなきゃいかん

WordPressに記事を投稿した時に画像も入れた場合、その画像のURLは絶対パスでhttp://〜書かれちゃうのでもしドメインを変えたら画像が壊れて読み込めなくなります。画像URLをショートコードで書いとけばこういう時良いけど、めんどいよね・・・。

もしかしたら良さげなプラグインが有りそう(てか絶対需要あるし有りそう)ですが、ただいま絶賛MySQLの勉強中なので試しにやってみたいと思います。

phpMyAdminへログイン

1

サーバーの管理画面に大体こんなん付いててそこから入れます。入るときにMySQL(データベース)のID/PASS聞かれますが、WordPress自動インストールなどで覚えてない人はFTPでサーバに有るwp-config.phpファイルの中を見れば書いてます。

2

ログインしたら左側にデータベースが表示されますので、WordPressで使っているやつをクリック。なんていうデータベース使ってるかもwp-config.phpに書いてますね。

3

WordPressのデータベースに入ったらこんな具合にデータベースの中に保存されているテーブルの一覧が表示されます。データベースの構造を詳しく知りたい方はcodexで。

データベース構造 / codex

phpMyAdminからクエリを打つ

で、ここの上ナビにある「SQL」っていうところからSQL命令のクエリっていうのが打てて、そのクエリに応じて表示やら更新やらが出来ます。

4

たとえば「select * from wp_posts limit 10;」と書いて実行を押すと、wp_posts(ここに投稿データが保存されてる)から10件データが表示されます。

5

簡単な抽出方法はいつものドットインストールか、詳しく勉強するなら本が良いと思います。

MySQL入門 (全19回) / ドットインストール

投稿内のURLを一括変換するクエリ

で、色々調べてみた結果、投稿内のデータの更新は以下のクエリで無事に出来ました!不具合出てないしいまのとこ大丈夫ぽいですが、自己責任でよろ。wp-studyからthecontentへ変えるやつなので、中をいじればいろいろ適用出来ます。繰り返しですが、試すならバックアップを取ってから、自己責任でお願いしまする。

このクエリを実行した後はpost_content内に有る投稿データのURLが全て置換され、画像も無事に表示されてました!

データベースを触るのは危険は伴いますがWordPressを理解&いろんな事象に対応出来るようになるには避けて通れないかと思うので、今後もMySQLの勉強は続けていかねば。