既存の WordPress シングルサイトをサブディレクトリ型マルチサイトに移行する最も簡単な方法
すでにシングルサイトで運用中の WordPress をマルチサイト化しようとすると、通常は「サブドメイン型」にしか移行できない。
WordPress では、すでに運用開始から1ヶ月以上経過しているシングルサイトはサブディレクトリ型マルチサイトには移行できない仕様になっている。
なんか知らんが、「運用の仕方によっては既存のパーマリンク構造に問題が生じる可能性があるから」という配慮によるものらしい。
が、絶対大丈夫だと分かっているなら この仕様は何かウザいw
既存のシングルサイトをサブディレクトリ型マルチサイトに移行する方法
というわけで、すでに運用中のシングルサイトをサブディレクトリ型マルチサイトに移行する方法を書く(こっから先の手順は質問があっても答えない。やるなら自己責任でよろしく)。
とりあえず普通にマルチサイト化の手順を踏む
wp-config.php の「/* 編集が必要なのはここまでです !」の上あたりに、
define('WP_ALLOW_MULTISITE', true);
を書いて、WordPress にログイン。
「ツール -> ネットワークの設置」に移動する。
新規インストールなら、「サブドメイン」か「サブディレクトリ」かの選択肢が出るのだが、すでに運用開始から1ヶ月以上経過してると ↑ こうなる。
WordPress 本体のソースにちょっくらメスを入れる
WordPress 本体で新規インストールかどうかの判定をしている箇所は、
/wp-admin/includes/network.php 内にある allow_subdirectory_install() という関数である。
なので、この関数に以下の2行目の部分を追加する。
function allow_subdirectory_install() {
return true; // ← コレ追加
global $wpdb;
/**
* Filters whether to enable the subdirectory install feature in Multisite.
*
* @since 3.0.0
*
* @param bool $allow Whether to enable the subdirectory install feature in Multisite. Default is false.
*/
if ( apply_filters( 'allow_subdirectory_install', false ) )
return true;
if ( defined( 'ALLOW_SUBDIRECTORY_INSTALL' ) && ALLOW_SUBDIRECTORY_INSTALL )
return true;
$post = $wpdb->get_row( "SELECT ID FROM $wpdb->posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND post_status = 'publish'" );
if ( empty( $post ) )
return true;
return false;
}
この状態で、さきほどの「ツール -> ネットワークの設置」にアクセスすると、
↑ 「サブディレクト」が選択できるようになる。
あとは手順どおり
ここまでくれば、あとは画面の指示通りに進めれば OK。
wp-config.php と .htaccess に画面に書かれている通りの内容を記述して、ログアウト -> ログインする。
↓ できあがり。
できあがってしまえば、/wp-admin/includes/network.php の中身は元に戻して OK。
ディスカッション
コメント一覧
まだ、コメントがありません