Tips

WordPressのURL変更はDBから行おう!wp-config.phpはダメ

WordPressのURLを変更する場合、「WordPress アドレス」というのと「サイトアドレス」という値を変更する必要があります。wp-config.phpでこれを変更することができるのですが、それだと問題が起こるので、DB内の値を変更しましょう。

「WordPress アドレス」と「サイトアドレス」

WordPressには「WordPress アドレス」と「サイトアドレス」という概念があります。この2つの概念の違いがわかりにくいの以下の記事で表にしました。

WordPressのsite_urlとhome_urlの違いを表にしたWordPressのURL関連の概念でわかりにくいのがsite_url()とhome_url()の違いです。これらの呼び方や意味合いや対...

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内の値がキャッシュに残っていただけかもしれないので、ちょっと断言はできませんが。