WordPressのURLを変更する場合、「WordPress アドレス」というのと「サイトアドレス」という値を変更する必要があります。wp-config.phpでこれを変更することができるのですが、それだと問題が起こるので、DB内の値を変更しましょう。
「WordPress アドレス」と「サイトアドレス」
WordPressには「WordPress アドレス」と「サイトアドレス」という概念があります。この2つの概念の違いがわかりにくいの以下の記事で表にしました。
WordPressで運営するサイトのURLを変更する場合、これらの値を変更する必要があります。
そうでないと管理画面にログインもできません。
しかし、管理画面にアクセスできないので、管理画面からこの値を変更できないことになります。しかし、wp-config.php内に記載することで、この値を変更することができます。
wp-config.php内で新しい値を設定するとログインできるようになるので、管理画面から「WordPress アドレス」と「サイトアドレス」の欄を見ると、値が変更できないようになっています。
つまり、wp-config.phpで設定した値は、DBの値より優先されるということです。
これらの値は基本的に変更することはないので、ここで変更できないのは別に構いません。
古いURLからCSSやJSを読み込んでしまう
しかし、問題が発生しました。
別件でCSSの変更を行なっていたのですが、なぜか変更が反映されませんでした。
HTMLのソースを開いて原因を調査していると、CSSやJSのファイルを古いURLから読み込んでいました。古いURLの環境にもファイル群を残していたので、すぐに気がつきませんでした。もしそれらを早めに削除していたら、表示が崩れてすぐに気がついていたでしょう。
どうやら、DB内にある「WordPress アドレス」や「サイトアドレス」の値を参照して、これらCSSやJSの読み込むためのURLを生成しているようです。
DB内の値を変更したら直った
以下の記事を参考に、DB内にある値を変更したところ、CSSやJSも新しいURLから読み込むようになりました。
[WordPress + MySQL] DBからサイトURLを変更
この記事はコマンドラインから変更していますが、phpMyAdminなどからでも大丈夫です。
これってバグかな?
wp-config.phpで設定できるようにしているのに、DBの値を読んでしまうというのは仕様的におかしいのでは?と思えます。
ただ、使用しているテーマの問題かもしれないし、DB内の値がキャッシュに残っていただけかもしれないので、ちょっと断言はできませんが。