WordPressでサイトURL設定を間違えたとき

WordPressはユーザの目的に合わせて様々なカスタマイズに対応していますが、それゆえ僕のような初心者が弄ってしまうと途端に動かなくなってしまう場合があります(ありました)。
そのうちの1つが、設定 › 一般設定 にある「サイトアドレス(Site URL)」です。

WordPressのサイトアドレス設定
WordPressのサイトアドレス設定

そのBlogの各ページへのリンク生成に必要となる文字列で、この値を間違えるとスタイルシートが読み込めずに表示が崩れたり、正しく別ページへ移動できなくなってしまいます。
最悪の場合、WordPressの管理ページにもアクセスできなくなりますので、お手上げになってしまいかねません。

検索してみると、このミスは大変多くの人が経験しているようで、解決策もあっさり発見できました。
もしかして定番中の定番なのでしょうか。
今回、修正の参考にしたのは以下のページです。

WordPress › フォーラム » 階層変更後ログインできない

この問題の修正方法は、大雑把に分けて2つ。

  1. データベース(DB)を直接編集
  2. wp-config.phpで設定を上書き

WordPressの投稿データや設定等は、基本的にDBに格納されます。これを直接編集してしまえば当然ですが元に戻ります。
また、DBに設定が保存されていてもwp-config.phpに記載があればそちらが優先されるらしく、その仕組みを利用することも出来ます。
手軽なのは2番でしょうか。

wp-configを上書きする

FTPでウェブサーバにアクセスし、WordPressディレクトリの直下にあるwp-config.phpをダウンロードします。
[php]
define(‘WP_SITEURL’, ‘http://odproject.net/blog’);
[/php]
PHPには余り明るくないのですが、定数定義の構文のようですので、これを追記してみます。
ローカルマシンで修正した後はウェブサーバに戻す(アップロードする)必要があります。
この一手間が面倒なら、ターミナルでログインし、直接phpファイルを編集してしまいましょう。

いずれにせよ、復旧したら管理画面からサイトアドレスを再設定しておいた方が良さそうです。

データベースを編集する

今回、実はこちらの面倒な方法を使って復旧させました。
昨今のレンタルサーバですと、ウェブからDBを操作できるツール「myPHPadmin」が導入されていることが多いので、そちらを使用するのが得策です。
ただし僕はmyPHPadminを使ったことが無く、また変な操作をしてしまっては面白くありません。
ですので確実な方法でDBにアクセスすることにしました。はい、例によってターミナルからログインです。

[bash]
% mysql -u USER_NAME -h mysql***.db.sakura.ne.jp -p
[/bash]
ターミナルからコマンドラインツールのmysqlを起動します。
WordPressのDBは別の場所にあるらしく、サーバを指定しなければなりません。
オプションの意味についてはMySQLのリファレンスを参照してください。

[sql]
mysql> use DATABASE_NAME;
Database changed

mysql> show fields from wp_options;
+————–+———————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+———————+——+—–+———+—————-+
| option_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| option_name | varchar(64) | NO | UNI | | |
| option_value | longtext | NO | | NULL | |
| autoload | varchar(20) | NO | | yes | |
+————–+———————+——+—–+———+—————-+
4 rows in set (0.00 sec)
[/sql]
WordPressの各種設定は、wp_optionsテーブルに保存されています。
option_nameフィールドからそれっぽいものを探してみると、「siteurl」という文字列を発見しました。

[sql]
mysql> select * from wp_options where option_name =’siteurl’;
+———–+————-+————————-+———-+
| option_id | option_name | option_value | autoload |
+———–+————-+————————-+———-+
| 1 | siteurl | http://example.net/blog | yes |
+———–+————-+————————-+———-+
1 row in set (0.00 sec)

mysql> update wp_options set option_value="http://odproject.net/blog" where option_name =’siteurl’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
[/sql]

というわけで、さくっとUpdateしてしまいましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です