WordPress開発環境と本番環境にて、完全に同じファイルを使う方法

WordPress

開発環境で本番環境を再現したいのだ

開発していて、めんどくさいのは、ローカルの開発環境と本番環境で、同じソースで動くか確認することである。
環境は勿論のこと、完全同じソースが使えないと面白くない。
本番公開中サイトのソースを、完全にそのままローカル開発環境で使いたいのだ!
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表示させたい通常のシングルサイト状態なら確認できる。でもマルチサイトになると偽造しきれなくて、延々ループする。「でも何とか、データ変更することなく、開発環境で見たい!」て人のための対応方法

コメント

タイトルとURLをコピーしました