web-dev-qa-db-ja.com

サブフォルダー内のマルチサイト - 新しいサイトをメインサイトと同じレベルのサブフォルダーにする方法

次のような状況があります。サブディレクトリにWP Multisiteがインストールされています。

my-domain.com/subfolder/wp-multisite-root

通常、次に追加されるサイトはそのように作成されます。

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/wp-multisite-root/site1
my-domain.com/subfolder/wp-multisite-root/site2
my-domain.com/subfolder/wp-multisite-root/site3

このように作成する方法はありますか?

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/site1
my-domain.com/subfolder/site2
my-domain.com/subfolder/site3

もう1つトリックがあります。 my-domain.com/subfolder/には、他のワードプレス以外のアプリケーションが含まれています。

3
HoGo

これらの年後、私はこれがあなたの質問にまだ答えられることを願っています...

私はあなたが望む状況でうまくいったと思います。私はWordpressを '/ subfolder /'にインストールしていませんが、言語ごとに同じサブディレクトリにインストールしています。

 my-domain.com/nl/ -> this is primary installation, site id = 1 
 my-domain.com/en/ -> this is the first site created by multistie, site id = 2
 my-domain.com/de/ -> this is the second site created by multistie, site id = 3

データベースに少々の「ハッキング」が必要ですが、とても簡単です。

ステップ1: /あなたのマルチサイトの 'root'インストールがそのサブディレクトリで意図したとおりに動作していることを確認してください。私の場合は、「wp-config.php」に次のように書いています。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // allow sub-directory install (true for subdomain install)
define('DOMAIN_CURRENT_SITE', 'my-domain.com/subfolder');
define('PATH_CURRENT_SITE', '/wp-multisite-root/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

(実際には、 '/ subfolder'はありません:)

ステップ2: サブフォルダー内のマルチサイトを通じて最初の新しいサイトを作成します。 「site2」というフォルダ名を入力すると、Wordpressはそれが次のように作成されることを通知します。

ステップ3: / phpMyAdmin/directAdminを開く表wp_blogsで、あなたが新しく作成したサイトのエントリを編集します。それのpathを修正しなければなりません。これは次のようにして行うことができます。

UPDATE `wp_blogs` SET `path` = '/site2/' WHERE `wp_blogs`.`path` = '/wp-multisite-root/site2/';

それに応じてドメイン名とサイト名を変更してください。そこに記載されているサイトIDも探してください。最初の追加サイトが作成された場合、それは私の紹介のようにID 2になります。

ステップ4: テーブルwp_<SITEID>_optionsを調べます。サイトID 2の場合、それはwp_2_optionsになります。そこで、option_valueが 'siteurl'と 'home'であるoption_nameを変更する必要があります。これは、次のクエリを実行することによって実行できます。

UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'siteurl';
UPDATE `wp_2_options` SET `option_value` = 'my-domain.com/subfolder/site2/' WHERE `option_name` = 'home';

この場合も、ドメインとフォルダの名前をそれに応じて変更します。 URLから「wp-multisite-root」が削除されているので、site2は「wp-multisite-root」と同じレベルになります。

ステップ5: / wp-adminを更新すると、あなたのサイトがあなたが望むようにリストされます。

5
Piemol

Piemolの答えは素晴らしく、私のために働きました。しかし、私はメインサイトを除いて私のサイトのどれにもログインすることができませんでした。私のクッキーを調べたところ、私はWordPressが私のメインサイトだけにクッキーを作っていて、他のサブディレクトリにはクッキーを作っていなかったことを発見しました。 OPの例を使うために、それは/subfolder/wp-multisite-rootのためにクッキーを作っていました、それは/subfolder/site1が使うことができませんでした。

私は修正する必要があるものを見るためにWordPressコアを通して掘り下げました、そして私はクッキーに使用されるパスを修正するために私のカスタムプラグインにこのコードを追加することになった:

define('COOKIEPATH', '/subfolder');
define('SITECOOKIEPATH', '/subfolder');

私の場合、私のサイト構造は実際にはPiemolのものと同じなので、私は自分のクッキーパスをルートになるように修正しました:

define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
2
caramiki

最も簡単な解決策は、my-domain/subfolder/をWordPressのインストールディレクトリとベースURLにしてから、サブディレクトリを使用するように設定されたマルチサイトを有効にすることです。

0
Chip Bennett