質問: ### 前提・実現したいこと Wordpress案件で、運用している本番環境と同じDBを使用するテスト環境を作る必要があり、 全く同じファイル構成で2つのサーバーにWordpress環境を作りました。 CPIのSmartReleaseでWordPressの開発と運用を参考に、 テストサーバー内の`wp-config.php` に データベースのWPオプション変数siteurl, homeをオーバーライドするため 下記コードを追加しました。 ``` define('WP_HOME','http://staging-example.com'); define('WP_SITEURL','http://staging-example.com'); ``` しかし、http://staging-example.comにアクセスしても本番URLにリダイレクトされてしまいます。 `http://staging-example.com/wp-admin` にはリダイレクトされることなくアクセスすることができ、問題なく動作します。 どうしたら共通DBのままで、テスト環境だけsiteurl, homeを変えられるでしょうか。 ググったところ一般には `define('WP_HOME'...`追記のみで上手くいく(テスト環境URLがアクセスできる)という記載が見られますが、 今回うまくいかない可能性にはどのようなものがあるでしょうか。 試したこと ----- ### 1. DBを書き換える このwp-config.phpの記載を ``` update_option( 'siteurl','http://staging-example.com'); update_option( 'home','http://staging-example.com'); ``` と変え、本番DBのデータを更新した場合は、DBのデータが無事書き換えられ、 http://staging-example.com にアクセスできます(本番URLが今度はリダイレクトされてしまいますが)。 ### 2. `get_site_url()`をオーバーライドする APIの`pre_option_{$option}`を利用し、 ``` add_filter('pre_option_siteurl', 'change_get_option_siteurl'); function change_get_option_siteurl($option) { if (defined('WP_SITEURL')) { return WP_SITEURL; } return false; } ``` をテストサーバーの`themename/functions.php`に追記しましたが、変化が見られませんでした。
回答: パーマリンクURLとかリダイレクトに関わってくるのはsite_urlよりhome_url フィルタフックで対応するなら`pre_option_home`