WordPressの優れた点の1つは、コード内に多数のフックがあり、コア機能を拡張またはオーバーライドできることです。
この問題に取り組む1つの方法は、WordPressブートストラッププロセスで使用できるサイトごとにvhostファイルにApache環境変数を設定して、テーマとベースURLの設定を上書きすることです。
たとえば、Apache仮想ホストで次を追加します。
SetEnv WP_CONTEXT main
と
SetEnv WP_CONTEXT mobile
(または、別のWebサーバーを使用している場合は同等です)。
wp-config.phpの場合:
switch ($_SERVER['WP_CONTEXT']) {
case 'main':
define('WP_HOME','http://maindomain.com');
define('WP_SITEURL','http://maindomain.com');
break;
case 'mobile':
define('WP_HOME','http://mobile.maindomain.com');
define('WP_SITEURL','http://mobile.maindomain.com');
break;
}
これにより、環境変数に基づいてベースURLが設定されます。
次に、プラグインに次のフィルターを追加します。
add_filter('template', 'change_theme');
add_filter('option_template', 'change_theme');
add_filter('option_stylesheet', 'change_theme');
function change_theme()
{
switch ($_SERVER['WP_CONTEXT']) {
case 'main':
return 'main';
break;
case 'mobile':
return 'mobile';
break;
}
これは、通常のテーマの読み込みプロセスの前に読み込まれるようにプラグインに含める必要があります(functions.phpはテーマの一部であるため、遅すぎます)。これらのフィルターは、データベースからのテーマ設定をインターセプトしてオーバーライドします。