单源代码搭建多WordPress站点


本文讨论的方法是使用一套WordPress源代码,实现多站点各自的内容、模板、附件及可定制功能的实现方法。

前提条件

  • 几个站必须在同一个主机空间
  • 几个站的固定链接样式必须一样
  • 每一个网站创建一个独立的MySQL数据库,或同一个数据库不同表头
  • 将每个域名都解析到同一个网站目录

主体流程

  1. 配置域名系统指向到同一空间
  2. 配置每个站点单独的数据库(如使用同一个数据库不同表头,则此步忽略)
  3. 修改wp-config.php信息,根据不同域名设置不同的初始化值,达到使用不同变量的目的。
  4. 根据域名依次安装每个WordPress
  5. 配置每个系统的各自变量:媒体文件存放地址、CDN、备份计划等

主要实现方法

wp-config.php文件的配置

if($_SERVER["HTTP_HOST"]=="www.domain1.com" || $_SERVER["HTTP_HOST"]=="domain1.com"){

define('DB_NAME', 'database_name_1');
define('DB_USER', 'username_1');
define('DB_PASSWORD', 'password_1');
define('DB_HOST', 'host_1');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp1_';
define('WPLANG', 'zh_CN');

}else if($_SERVER["HTTP_HOST"]=="www.domain2.net" || $_SERVER["HTTP_HOST"]=="domain2.net"){

define('DB_NAME', 'database_name_2');
define('DB_USER', 'username_2');
define('DB_PASSWORD', 'password_2');
define('DB_HOST', 'host_2');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp2_';
define('WPLANG', 'zh_CN');

}

如果多余2个域名,则按需增加判断部分,另可根据wpconfig.php强大的配置功能达到特定目的,具体参见:http://codex.wordpress.org/Editing_wp-config.php(中文)

wp-content信息的配置

(推荐)
由于默认安装共享了/wp-content/文件夹下的信息,如果想针对不同站点指定不同的插件、模板、上传目录,需要针对修改,可通过自定义wp-config.php文件或在WP后台设置达到目的。

如果不修改可能会遇到上传文件名相同、架构不良好插件的配置覆盖(通过文件保存配置信息的插件),备份恢复困难等潜在风险。