Last Updated on 2015年5月20日 by かんりにん
職場でイントラ用に利用しているwordpressサイトを別サーバーに引っ越した際、サイトURLのメンテを忘れてしまい、後から手動で直すことに。
直す必要があるのは”WordPress アドレス”に該当するフィールド”home”とサイトアドレスに該当する”siteurl”と思われるので、この二つを探してみることに。
テーブルの数がデフォルト状態で少なかったので、ちょっと手間をかけて各テーブルのフィールドを色々調べてみたところ
wp_optionsテーブル内のoption_nameフィールドにあるカラムにhomeを発見。
mysql> select * from wp_options where option_name='home'; +-----------+-------------+----------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+----------------------------------------+----------+ | 37 | home | http://intranet.example.com/wordpress | yes | +-----------+-------------+----------------------------------------+----------+ 1 row in set (0.00 sec)
あわせてsiteurlも調べてみたら、同様に発見。
mysql> select * from wp_options where option_name='siteurl'; +-----------+-------------+----------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+----------------------------------------+----------+ | 1 | siteurl | http://intranet.example.com/wordpress | yes | +-----------+-------------+----------------------------------------+----------+ 1 row in set (0.00 sec)
option_idの値がなぜかhomeよりsiteurlのほうが若いが、siteurlは1、homeは37で決まっている様子?あるいはバージョンにより変わるのか、暇なときにでも調べてみる。
ひとまずこの二つを直せばいけそうなので、そのままupdateをかましてみる。
update分を実行するときのwhere句での指定は、option_nameでなくoption_idで該当のIDを指定。
修正例としては
http://intranet.example.com/wordpress
↓
http://intranet.example.jp/wordpress
で。
1.homeの設定値を手直し
mysql> update wp_options -> set option_value='http://intranet.example.jp/wordpress' -> where option_id=37; Query OK, 1 row affected (0.07 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from wp_options where option_id=37; +-----------+-------------+---------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+---------------------------------------+----------+ | 37 | home | http://intranet.example.jp/wordpress | yes | +-----------+-------------+---------------------------------------+----------+ 1 row in set (0.00 sec) mysql>
2.siteurlの設定値を手直し
mysql> update wp_options -> set option_value='http://intranet.example.jp/wordpress' -> where option_id=1; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from wp_options where option_id=1; +-----------+-------------+---------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+---------------------------------------+----------+ | 1 | siteurl | http://intranet.example.jp/wordpress | yes | +-----------+-------------+---------------------------------------+----------+ 1 row in set (0.00 sec) mysql>
と、ここまで直した後で
WordPress Codexに解説があるのを発見…初めからここを見ればよかったorz
-WordPress Codex : Changing The Site URL
http://codex.wordpress.org/Changing_The_Site_URL
とりあえず作業の進め方は問題なかった様子なのと、サイトのリンクの更新も確認できたので、ひとまずOK。
備考
間に合わせとして、wp-config.php内に設定値を固定で指定することもできる様子。
define('WP_HOME','http://intranet.example.jp'); define('WP_SITEURL','http://intranet.example.jp');
ただし、この対応だと、いかにも場当たり的な対処になるので、あまりやるべきではないかな、と。
wp-config.phpを見れば判るからこちらのほうが良い、という人もいるかもだけどw