この記事は?
マルチドメイン化したWordpressのドメイン名(URL)の変更に四苦八苦した証跡ですw
きっかけ
マルチドメイン化したWordpressで動いている、1つ目のブログのドメイン名がIPになっていて気に喰わない。
このままなのも癪なので変更しようとしたら、添付の画像の通りグレーアウトしていて変更できず。
ちょっと調べてみたら、
上記のページに
注: 以下の手順はシングルインストールの WordPress 向けのものです。WordPress マルチサイトをお使いの場合は、データベースを手動で編集する必要があります。
…まじかよ。知らなかったよ…。もっとデカデカと書いておいて欲しい(´・ω・`)
ダメ元でマルチドメイン→シングル化し、URL変更→再度マルチドメイン化をトライしたところ、下記の表記を確認。
「既存のネットワークがあります、ネットワークのデータベースのテーブルを空にするか削除してください。」
http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?Wordpress
調べてみたら、
「既存のネットワークがあります、ネットワークのデータベースのテーブルを空にするか削除してください。」 となった場合は以下のレコードを削除する
*_blogs, *_registration_log, *_site, *_sitemeta, *_blogs_versions, *_signups (例: drop table wp_blogs;)
とある。
ああ。どうやら、上記のテーブルを削除すればいけるようだ。
ここで折角なので、レコード削除せずにDB修正で乗り切ることにする。
その前に、関連テーブル調査。
http://www.doya-doya.com/word-press/2011/11/22/8274#c2
ふむふむ、どうやら「domain」ってカラムにサイトのドメイン名を書いてあるらしい…。
mysql> USE information_schema;
mysql> select table_name, column_name from information_schema.columns where column_name like '%domain';
+---------------+-------------+
| table_name | column_name |
+---------------+-------------+
| wp_blogs | domain |
| wp_signups | domain |
| wp_site | domain |
+---------------+-------------+
6 rows in set (0.01 sec)
mysql>
上記のテーブルの中身を見てみると、マルチドメイン化して使っている2つのURLが入っていた。
mysql>USE <wordpressで使用しているdb名> ;
mysql> SELECT * FROM wp_blogs ;
+---------+---------+------------------+------+---------------------+---------------------+--------+----------+--------+------+---------+---------+
| blog_id | site_id | domain | path | registered | last_updated | public | archived | mature | spam | deleted | lang_id |
+---------+---------+------------------+------+---------------------+---------------------+--------+----------+--------+------+---------+---------+
| 1 | 1 | <変更前のIP> | / | 2015-03-23 03:24:16 | 2015-06-12 19:47:29 | 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 1 | test.example.com | / | 2015-03-30 06:24:39 | 2015-06-12 19:46:18 | 1 | 0 | 0 | 0 | 0 | 0 |
+---------+---------+------------------+------+---------------------+---------------------+--------+----------+--------+------+---------+---------+
なんか「domain」カラムにあるIPをドメイン名に置換してやれば、行けそうな気がするぞ…!!
というわけで、「wp_blogs」、「wp_signups」、「wp_site」テーブルにある「domain」カラムを書き換えることにする。
その前にバックアップ。
切り戻しが楽なように、テーブルごとコピーしとく。
mysql>CREATE TABLE wp_blogs_bk LIKE wp_blogs ;
mysql>INSERT INFTO wp_blogs_bk SELECT * FROM wp_blogs;
mysql>
mysql>CREATE TABLE wp_blogs_bk LIKE wp_blogs ;
mysql>INSERT INFTO wp_blogs_bk SELECT * FROM wp_blogs;
mysql>
mysql>CREATE TABLE wp_blogs_bk LIKE wp_blogs ;
mysql>INSERT INFTO wp_blogs_bk SELECT * FROM wp_blogs;
念には念を入れて、dumpも取得。
# mysqldump --all-databases --events -u root -p > /root/all_dump.20150613
# mysqldump --databases <wordpressで使用しているdb名> -u root -p > /root/wp_dump.20150613
ドメイン名修正。
1件ずつ調べながらやるのは、流石に吐きそうになるので、師匠から教えてもらった技でまとめてUPDATE文を作成。
mysql> SET sql_mode='PIPES_AS_CONCAT' ;
mysql> SELECT 'UPDATE ' || TABLE_SCHEMA ||'.' || TABLE_NAME || ' SET domain = \'<変更したいドメイン名>\'' || ' WHERE domain = \'<変更前のドメイン名>\' ;' FROM information_schema.columns WHERE column_name like '%domain' AND TABLE_NAME NOT LIKE '%_bk';
+----------------------------------------------------------------------------------------------------------------------------------+
| 'UPDATE ' || TABLE_SCHEMA ||'.' || TABLE_NAME || ' SET domain = \'<変更したいドメイン名>\'' || ' WHERE domain = \'<変更前のドメイン名>\' ;' |
+----------------------------------------------------------------------------------------------------------------------------------+
| UPDATE <wordpressで使用しているdb名>.wp_blogs SET domain = '<変更したいドメイン名>' WHERE domain = '<変更前のドメイン名>' ; |
| UPDATE <wordpressで使用しているdb名>.wp_signups SET domain = '<変更したいドメイン名>' WHERE domain = '<変更前のドメイン名>' ; |
| UPDATE <wordpressで使用しているdb名>.wp_site SET domain = '<変更したいドメイン名>' WHERE domain = '<変更前のドメイン名>' ; |
+----------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.01 sec)
mysql>
出来上がったUPDATE文をそのままコンソールで流す。
wp-config.phpの修正。
あとは、下記のサイトを参考に、wp-config.phpを修正すれば無事完了。
http://www.doya-doya.com/word-press/2011/11/22/8274#c2
http://snickerjp.blogspot.jp/2014/01/WordPress-MultiSite-Migration.html
http://seihiguchi.com/2012/10/moving-wordpress-multisite/
http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?Wordpress
http://wpdocs.osdn.jp/%E3%82%B5%E3%82%A4%E3%83%88_URL_%E3%81%AE%E5%A4%89%E6%9B%B4#wp-config.php_.E3.81.AE.E7.B7.A8.E9.9B.86
お疲れ様でした。
今のところ無事動いているけど、きっとこのやり方は邪道な気がするぞいw