@トム・J-nowell OPにコメントで言った、マルチサイトは、これを簡単に行うことができます。
パフォーマンスとセキュリティはマルチサイトの問題ではありません(少なくとも、通常のインストールの場合と同じです)が、多くのプラグイン(カスタムまたはサードパーティのいずれか)がマルチサイトで適切に動作するか、または異なるWebサイトのユーザーを完全に分離したい場合。
それはあなたが達成したいことはそれほど難しくありませんでした。
インストール間で変更する必要があるのは次のとおりです。
- プラグインフォルダー
- テーマフォルダ
- データベース設定
これらの構成は、URLに基づいて定数wp-config.php
を切り替える方法だけが問題である定数を使用して行うことができます。
サーバー変数'SERVER_NAME'
は、少なくともウェブサーバーが適切に構成されている場合に機能します。
たとえば/conf
、同じレベルのwp-config.php
ファイルと/WordPress
フォルダーという名前のフォルダーを作成できます。
そのフォルダーにいくつかのファイルを追加できます:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
それらのそれぞれの中であなたは何かのようなことができます
$branch = 'branch1';
$base_dir = dirname( __DIR__) . "/{$branch}";
defined( 'WP_CONTENT_DIR' ) or define( 'WP_CONTENT_DIR', $base_dir );
// be sure WP understand URLs correctly
defined( 'DB_HOME' ) or define( 'DB_HOME', "{$branch}.example.com" );
defined('WP_SITEURL') or define('WP_SITEURL', "{$branch}.example.com/WordPress");
// adjust DB settings as needed
defined( 'DB_NAME' ) or define( 'DB_NAME', $branch );
defined( 'DB_USER' ) or define( 'DB_USER', $branch );
defined( 'DB_PASSWORD' ) or define( 'DB_PASSWORD', '********' );
unset( $base_dir, $branch );
これは、「ブランチ」に従って各構成ファイルで変更されます。
その後、あなたのユニークでwp-config.php
あなたはそうすることができます:
$defaults_conf = [
'WP_CONTENT_DIR' => __DIR__ . '/branch1',
'DB_HOST' => 'localhost',
'DB_NAME' => 'branch1',
'DB_USER' => 'branch1',
'DB_PASSWORD' => '********',
];
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
if ($host && file_exists(__DIR__."/conf/{$host}.conf")) {
require __DIR__."/conf/{$host}.conf";
}
array_walk($defaults_conf, function($value, $name) {
defined($name) or define($name, $value);
});
unset($defaults_conf, $host);
上記は、サーバー名に基づいて別の構成ファイル(見つかった場合)をロードし、構成ファイルでデフォルト構成が定義されていない場合(またはファイルが見つからない場合)の構成がデフォルトごとに設定されていることです。
いいことは、新しいブランチを追加するには、ブランチフォルダーを作成し.conf
、新しいブランチドメインにちなんで名前を付けるだけで、完了です。WP側で変更するものは何もありません。
この線:
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
ドメイン名を取得する場所です。最初のオプションとして$_SERVER['SERVER_NAME']
、WP CLIを使用している場合など、コマンドラインコンテキストで機能しない可能性があるため、環境変数を使用しています。これらの状況では、環境変数を設定して、WPが特定のブランチからの設定を使用するように強制できます。
ブランチ固有の設定ファイルでを変更していることに注意してください。これにより、WP_CONTENT_DIR
プラグインとテーマフォルダーが関連サブフォルダー/plugins
と/themes
ブランチサブフォルダーに自動的に設定されます。
ここで考えられる問題は、/uploads
フォルダを共有する場合(ファイルがアップロードされる場所)です。
デフォルトでは、そのフォルダーはコンテンツディレクトリのサブフォルダーであるため、上記のワークフローを使用すると、/uploads
各ブランチルートフォルダーのサブフォルダーになります。
それがあなたにとって問題ではない場合は、それだけで済むのであれば、それ以外の場合の最も簡単な解決策は、共有/uploads
する実際のアップロードフォルダへのシンボリックリンクを各ブランチフォルダで作成することです。