我一直感觉多个wordpress程序搭建不同的网站有点太浪费了,对于空间资源的优化利用,我感觉可以一个wordpress程序带动多个网站。
首先是wordpress的运行原理
wordpress也是一个内容管理架构,通过调用数据库里的不同表而实现了不同样式。
在创建wordpress网站初期,我们会自动创建一系列数据库表,并给它们一个统一的前缀名。那么,我们将两个不同前缀名的数据表放在一起,然后有选择性的让wordpress调用不就可以实现了不同网站了吗!?
带着这个思路,我开始着手修改wordpress程序。
找到表数据的存放文件:wp-config.php
它在wordpress文件的子目录里,记录了安装wordpress后所有的数据库相关信息,其中的变量$table_prefix
就是表前缀名。
我想使用GET和cookie来改变变量$table_prefix
,使得网站可以随时调用不同的数据库表。于是我修改成了这段代码:
if(!empty($_COOKIE['rujuestyle'])){
$rujuestyle = $_COOKIE['rujuestyle'];
}
if (!empty($_GET['rujuestyle'])) {
$rujuestyle = $_GET['rujuestyle'];
setcookie('rujuestyle',$rujuestyle,time()+3600);
}
switch ($rujuestyle) {
case 'wp':
$table_prefix = $rujuestyle.'_';
break;
default:
$table_prefix = 'rj_';
break;
}
代码解读
如果网站保留了相关cookie值那么我们就调用对应的前缀,有get值时我们会优先调用其数据,并改变其cookie值。最后通过判断变量确认最终$table_prefix
值。
我们在切换网站时候只需要输入类似代码即可:网址?rujuestyle=wp
写在结尾的话
虽说已经有很多插件可以改变主题模板,但它们没有改变调用的数据库表,所有网址内容还是一样的,而我这种做法可以完全搭建出不同的网站效果,当然,建议多个网站在demo环境中测试完毕后再迁入真实环境中。