更新:追加の説明を含む完全に更新されたプラグインコードはここにあります:http://justinsilver.com/technology/wordpress/wordpress-plugins/wordpress-plugin-wp-server-migration/
@user916011の助けを借りて解決策を思いつくことができました。
wp_options
テーブルには必要な構成が含まれているため、テーブルを開発環境にコピーできる必要がありました。MultiSiteでWP_SITEURLとWP_HOMEの値を設定できないという問題を克服するために、ネットワーク全体で利用可能なプラグインに含まれている非マルチサイトインストールで利用可能な関数
_config_wp_siteurl()
と関数を置き換えるカスタムフィルターを作成しました。
_config_wp_home()
で構成され
wp-config.php
ます。その後、ローカルデータベース
を除く すべてのデータベーステーブルをコピーできます。
wp_site
wp_blogs
コンテンツ内のURLの処理に役立つ、 ChrisMurphyによるWordPress3.0のURLトークン置換テクニックの記事を強くお勧めします。
example.com
この例では、ドメインがと2つのサブドメインwww.example.com
を持つサブドメインマルチサイトインストールを想定していますsecond.example.com
。ローカル開発URLはそれぞれwww.example.local
とになりsecond.example.local
ます。
データベースの変更:
のドメイン値を更新しますwp_site
:
UPDATE wp_site SET domain = 'example.local' WHERE domain = 'example.com';
のドメイン値を更新しますwp_blogs
:
UPDATE wp_blogs SET domain = 'www.example.local' WHERE domain = 'www.example.com';
UPDATE wp_blogs SET domain = 'second.example.local' WHERE domain = 'second.example.com';
プラグインコード:次のプラグインはネットワーク全体にインストールする必要があります。
<?php
/*
Plugin Name: MultiSite WP_HOME and WP_SITEURL
Plugin URI: http://doublesharp.com/
Description: Allows wp_options values to be overwritten in wp-config.php for MultiSite
Author: Justin Silver
Version: 1.0
Author URI: http://doublesharp.com
License: GPL2
*/
function _ms_config_wp_siteurl( $url = '' ) {
if (is_multisite()):
global $blog_id, $current_site;
$cur_blog_id = defined('BLOG_ID_CURRENT_SITE')? BLOG_ID_CURRENT_SITE : 1;
$key = ($blog_id!=$cur_blog_id)? $blog_id.'_' : '';
$constant = 'WP_'.$key.'SITEURL';
if ( defined( $constant ) )
return untrailingslashit( constant($constant) );
endif;
return $url;
}
add_filter( 'option_siteurl', '_ms_config_wp_siteurl' );
function _ms_config_wp_home( $url = '' ) {
if (is_multisite()):
global $blog_id;
$cur_blog_id = defined('BLOG_ID_CURRENT_SITE')? BLOG_ID_CURRENT_SITE : 1;
$key = ($blog_id!=$cur_blog_id)? $blog_id.'_' : '';
$constant = 'WP_'.$key.'HOME';
if ( defined( $constant ) )
return untrailingslashit( constant($constant) );
endif;
return $url;
}
add_filter( 'option_home', '_ms_config_wp_home' );
?>
wp-config.phpを構成します:
に新しい定数を追加しwp-config.php
ます。プライマリサイトは標準WP_HOME
とを使用する必要WP_SITEURL
があり、ターシャリURLはとを使用する必要がWP_{$blog_id}_HOME
ありますWP_{$blog_id}_SITEURL
define('WP_HOME', 'http://www.example.local');
define('WP_SITEURL', 'http://www.example.local');
define('WP_2_HOME', 'http://secondary.example.local');
define('WP_2_SITEURL', 'http://secondary.example.local');