別URLの開発環境で確認を完了してから、本番URLに差し替えたいときに必ずハマるWordPressのサイトURL問題。ご丁寧にサイトURLをDB内に持っていて、一時的に別URLで動かしてから元に戻したい場合に、なかなかうまくいきません。
やり方をググるとダメな例ばかり引っかかるので、うまくいった例を載せておきます。
ダメな例(defineを使う)
これでも一応動いてログインできますが全ての参照が上書きされるわけではなく、一部DBに保存されているURLも参照されてしまうため、あまりよく無いです。しかも、設定のサイトURLがグレーアウトしてしまい修正できません。
$ vi /var/www/html/wp-config.php
-----------------------------------------------------
.
.
# 一時URL(ダメな例)
define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
-----------------------------------------------------
:wq
うまくいった例(update_optionを使う)
update_optionを使うと、設定のサイトURLがグレーアウトせずに修正することができました。これはサイトURLを間違えてしまい二度とログインできなくなって困ってしまったときにも有効かと思います。require_onceよりも下、つまりwp-config.phpの一番下に追加してください。
$ vi /var/www/html/wp-config.php
-----------------------------------------------------
.
.
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
# 一時URL
update_option( 'siteurl','https://example.com');
update_option( 'home','https://example.com');
-----------------------------------------------------
:wq