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を自動的に変更するように書き換えておくと良い。
ピンバックがうざい人にもオススメ。

Exec-PHP等PHP実行できるプラグインを入れて

<a href="<?php form_option( 'home' ); ?>/wordpress/">こう呼び出す</a>

すると、こうなる→ こう呼び出す

呼び出し方としては、以下のような種類がある。

<a href="<?php echo esc_url( site_url() ); ?>/">TOP</a>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>/">TOP</a>

<a href="<?php form_option( 'siteurl' ); ?>/">TOP</a>
<a href="<?php form_option( 'home' ); ?>/">TOP</a>

個人的には『form_option』は、表示(echo)までがセットだから、そっちの方がおススメかなと。
他の関数の呼び出し方については『wordpressのアドレスとサイトアドレス

マルチサイトの場合

マルチサイトの場合は、この設定だけでは使えない。
その方法については長くなるので、別記事にすることにした。
WordPressマルチサイトでも、開発環境と本番環境にて、完全に同じファイルを使う方法

コメント

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