在这之前我一直使用WordPress MU Domain Mapping插件,虽然该插件很方便,但本人一直以来喜欢研究非插件的方式实现一些简单的插件功能。以下是我的研究心得:

一、开启多站点模式

方法见:https://www.qqworld.org/archives/247

二、新建子站

1、添加子站

新建子站
新建子站

2、编辑建好的子站设置

编辑子站设置
编辑子站设置

3、更新子站域名

更新子站域名
更新子站域名

4、修改子站设置

更新子站选项
更新子站选项

需要更新的选项有两个:Siteurl和Home

三、为子站域名添加导航

刚才添加的子站SITE_ID和BLOG_ID都是3,修改wp-config.php,修改多站点常量设置:

define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'PATH_CURRENT_SITE', '/' );
$host = $_SERVER['HTTP_HOST'];
switch ($host) {
	case 'sub-site.com.cn':
		define( 'DOMAIN_CURRENT_SITE', 'sub-site.com.cn' );
		define( 'SITE_ID_CURRENT_SITE', 3 );
		define( 'BLOG_ID_CURRENT_SITE', 3 );
		break;
	default:
		define( 'DOMAIN_CURRENT_SITE', 'wordpress.com.cn' );
		define( 'SITE_ID_CURRENT_SITE', 1 );
		define( 'BLOG_ID_CURRENT_SITE', 1 );
		break;
}

该代码的作用是,通过判断用户输入的网站域名自动对应修改当前站点的SITE_ID和BLOG_ID。

貌似新版的WP已经支持解析子域名了,所以这一步可以省略了。

四、高级

如果在更改上述设置之前已经发布了很多文章、媒体、分类,就会导致分类,媒体,文章,页面无法访问,这时候就需要在phpMyAdmin中将所有的http://wordpress.com.cn/sub-site/改为http://sub-size.com.cn

可以先搜索一下看看哪些表里有这些数据,然后用类似下面的SQL语句来进行批量修改:

update `wp_3_posts` set `guid`=REPLACE(`guid`,'http://wordpress.com.cn/sub-site','http://sub-site.com.cn')
update `wp_3_posts` set `post_content`=REPLACE(`post_content`,'http://wordpress.com.cn/sub-site','http://sub-site.com.cn')
update `wp_3_options` set `option_value`=REPLACE(`option_value`,'http://wordpress.com.cn/sub-site','http://sub-site.com.cn')

注意:此方法已不再适用于子目录形式的子站点,会造成上传目录紊乱。此问题择机解决。

喜欢这篇文章吗,不妨分享给朋友们吧!