在这之前我一直使用WordPress MU Domain Mapping插件,虽然该插件很方便,但本人一直以来喜欢研究非插件的方式实现一些简单的插件功能。以下是我的研究心得:
一、开启多站点模式
方法见:https://www.qqworld.org/archives/247
二、新建子站
1、添加子站
2、编辑建好的子站设置
3、更新子站域名
4、修改子站设置
需要更新的选项有两个:Siteurl和Home
三、为子站域名添加导航
刚才添加的子站SITE_ID和BLOG_ID都是3,修改wp-config.php,修改多站点常量设置:
<?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')
注意:此方法已不再适用于子目录形式的子站点,会造成上传目录紊乱。此问题择机解决。
非插件方式为WordPress多站点模式的子站绑定域名 有 1 篇评论
一直在犹豫要不要开启多站点模式