3

同じデータベース(コンテンツ/ユーザー/コメント/メタ/カテゴリなど)をサブディレクトリの別のワードプレスインストールに使用したいと思います。

私は実際に自分のサイトのモバイル版を作成したいと思っています。しかし、私は使用したくありません、モバイル検出スクリプトorycss3メディアクエリ。私の新しいテーマを作成したいだけです(モバイル版用)

例えば;

メインドメインには、;のようなサブドメインもあります。

maindomain.com // root
mobile.maindomain.com // sub directory

これはどのように可能でしょうか?

4

3 に答える 3

8

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はテーマの一部であるため、遅すぎます)。これらのフィルターは、データベースからのテーマ設定をインターセプトしてオーバーライドします。

于 2013-01-20T05:21:45.713 に答える
0

WP はその URL をデータベースに保存するため、直接行うことはできません。私の知る限り、SQLでテーブルを「リンク」する方法があるため、それが方法かもしれません-たとえば、wp_options以外のすべてをリンクしますが、それでもトリッキーな方法です。

于 2013-01-17T14:25:00.517 に答える