開発環境で本番環境を再現したいのだ
開発していて、めんどくさいのは、ローカルの開発環境と本番環境で、同じソースで動くか確認することである。
環境は勿論のこと、完全同じソースが使えないと面白くない。
本番公開中サイトのソースを、完全にそのままローカル開発環境で使いたいのだ!
SSHでrsyncしたら、そのままでは動かないから書き換えるなんて、めんどくさいことはしたくないのだ!
というわけで、開発環境で本番環境を再現する方法。
データベースのURLを自動的に書き換えてくれる機能がある
調べてみたらWordPressのVersion 2.2(2007)から対応になっているステキな機能があった。
define('WP_HOME', 【WordPress アドレス (URL)】);
define('WP_SITEURL', 【サイトアドレス (URL)】);
公式の機能だから、バージョンアップ時も、何かを書き換える必要もなく安心!
きっと他の人も求めていたんだろうね!
そこで開発環境・本番環境等どこに置こうが自動的に書き換えるようにしてみた。
wp-config.phpの設定
$_private_config = [];
$_private_config['protocol'] = ($_SERVER['SERVER_PORT'] == 443)? "https://" :'http://';
$_private_config['host'] = (isset($_SERVER['HTTP_HOST']) && strlen($_SERVER['HTTP_HOST'])>0)? $_SERVER['HTTP_HOST'] :$_SERVER['SERVER_NAME'];
$_private_config['directory'] = str_replace($_SERVER['DOCUMENT_ROOT'],'',dirname(__FILE__));
$_private_config['home'] = $_private_config['protocol'].$_private_config['host'].$_private_config['directory'];
$_private_config['siteurl'] = $_private_config['protocol'].$_private_config['host'].$_private_config['directory'];
define('WP_HOME', $_private_config['home']);
define('WP_SITEURL', $_private_config['siteurl']);
これで開発環境と本番環境を書き換えることなく使える。
自分でテストした限り、パーマリンク設定でも問題なかった。
個人的にはDB設定も、環境毎に変わるように、上記同様の方法で何やかんやしている。
内部記事リンクを貼るときのアドバイス
あくまで記事のURLを書き換えるだけに過ぎない。
記事内のURLまで変更してくれるわけじゃあ、ないんだよね…
なので、記事内でURLを書き換える必要がないように、元々書くようにしておくと安心。
wp-config.phpの
require_once(ABSPATH . 'wp-settings.php');
以降に以下を追加する。
// WordPressアドレス(システム用):WP_SITEURL
add_shortcode('wp_site_url', function() {
return site_url();
});
// サイトアドレス(一般公開用・リンク用):WP_HOME
add_shortcode('wp_home', function() {
return home_url();
});
<a href="[wp_site_url]/wordpress/">こう呼び出す</a>
すると、こうなる→ こう呼び出す
ただ、見ての通りショートコードなので、
[blogcard url="[wp_site_url]/wordpress/"]
みたいなショートコード IN ショートコードは動かない。
マルチサイトで対応する場合
マルチサイトの場合は、この設定では使えない。
その方法については長くなるので、別記事にしました。
こちらを確認してくださいね⇩

【WordPress】本番マルチサイトをローカル開発環境で表示・確認する方法
開発環境でマルチサイト環境の本番WordPress表示させたい通常のシングルサイト状態なら確認できる。でもマルチサイトになると偽造しきれなくて、延々ループする。「でも何とか、データ変更することなく、開発環境で見たい!」て人のための対応方法


コメント