面向对象(OOP)的使用Wordpress系统 一拖N的用法[原]
30 Jun 2008
今天和一位网友交流cacheAsFile的使用,从中得知他的网站空间为了实现三个各不相同的网站,已放置三个Wordpress系统来实现。
操作实现是在网站的根目录下放置一个Wordpress系统,再建立子目录来放置其他的Wordpress系统。可真难为了这位朋友。
这个其实是很简单而且很实在的方法,但是维护成本确是很高的,而且目录结构也不怎么不雅观。
这种模式看来有点像传统的面向过程编程,复用性太低,那么面向对象编程(OOP)怎么来处理好这个需求呢?
一般情况可以这样理解,Wordpress.org提供的Wordpress系统就像是一个Class,放置在网站上被访问时会根据不同的配置(数据库中保存的设置)生成出一个Wordpress运行实例,各不同的配置(设定的主题,插件)实例化出各不相同的基于Wordpress系统的网站。
反过来说,各不相同的Wordpress网站的原因在于不相同的配置。
如果在同一个服务器上可以根据不同的域名访问来指定不同的配置的话,这样即可实现不同的网站。
很高兴,php能做到这很基本一点判断。答案是肯定的。
很巧,在我的本地机器上,配置有自己的2个站,一个就是cbmland.com,另外一个是iFlex.com.cn,现在都是基于Wordpress系统的,在我的wp-config.php里面有我加了这样一段:
if($_SERVER["HTTP_HOST"]=="www.cbmland.com" || $_SERVER["HTTP_HOST"]=="cbmland.com"){ define('DB_NAME', 'cbmland'); define('DB_USER', 'cbmland'); define('DB_PASSWORD', 'http://cbmland.com'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); $table_prefix = 'cbm_'; define ('WPLANG', 'zh_CN'); }else if($_SERVER["HTTP_HOST"]=="www.iflex.com.cn" || $_SERVER["HTTP_HOST"]=="iflex.com.cn"){ define('DB_NAME', 'cbmland'); define('DB_USER', 'cbmland'); define('DB_PASSWORD', 'http://iFlex.com.cn'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); $table_prefix = 'ifx_'; // define ('WPLANG', 'zh_CN'); }
很明显,这个配置文件会根据不同的$_SERVER["HTTP_HOST"]来给出不同的数据库表的配置,一个数据表的前缀是 cbm_ 而另外一个是ifx,就算在同一个数据库里面也不会冲突。各自有了独立的数据库配置,在同一个优化好的Wordpress系统下能互不干扰的运行起来。再加上不同的主题风格、和插件,各自选择性的使用。
怎么样?这样就可以基于一份Wordpress系统拷贝,理论上可以无限的运行多个不同风格的Wordpress实例了。
怎么样?整一整,送个给女友?送个给老婆?送个给爸妈?嘿嘿!别以为不要钱,可要悠着点~邻居们都看着呐~
小提示:虚拟主机需要先绑定域名才能实现。
72 Responses for "面向对象(OOP)的使用Wordpress系统 一拖N的用法[原]"
-

终于搞定了.目录的绑定有问题.域名要指向同一个目录.cpanel空间的目录指定有点特殊.呵呵.
-

我的出现这样的错误
Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/koryi/public_html/wp-includes/widgets.php on line 1044
Warning: Cannot modify header information – headers already sent by (output started at /home/koryi/public_html/wp-includes/widgets.php:1044) in /home/koryi/public_html/wp-includes/pluggable.php on line 850
-

一套程序,使用两个不同的数据库,根据访问的域名来判断具体使用那个数据库,但你程序本身是通过什么来判断的?
-

我使用的cpanel,在附加域中添加的了新的域名,然后把你的代码贴到wp-config.php中,但是访问第一个地址没有问题,访问第二个地址时,自动跳到wpadmin/install.php后,提示Firefox 检测到该服务器正在将此地址的请求循环重定向。
把新域名添加到暂停的域时也是这样的问题。两个域名的目录是一个,能帮我看看这是什么问题么? -

我可以在 host下放多一个 Movable Type的博客程序 吗?
这样把一个子域名挂在下面写多一个博客~
-

测试不成功,还是用我的笨方法吧。建连个站哈。
-

很好很强大!在本机已经测试成功!
-

但是又有个问题。这是在顶级域名根目录的时候是OK的。
而我的顶级域名是做主站,用wordpress搭建的几个博客却是子域名,也就是用了子目录,而虚拟主机的同一个子目录不支持绑定两个子域名。
那么有没有什么方法可以解决呢?
谢谢!
-

你好,我想在本机先试验一下
但是本地访问都是通过127.0.0.1或localhost
wp-config的 http-host部分应该怎么写呢? -

Great Success !
Apache is working on your cPanel® and WHM™ ServerIf you can see this page, then the people who manage this server have installed cPanel and WebHost Manager (WHM) which use the Apache Web server software and the Apache Interface to OpenSSL (mod_ssl) successfully. They now have to add content to this directory and replace this placeholder page, or else point the server at their real content.
请问,我的为什么会出现这个呢?不是wp的安装界面,
-

管理入口好像不能判断啊??只能进入一个后台,不知道该如何处理。
-

呵呵.在这里找到了.thanks…
-

请问能解决模板共存的问题吗?或者说可把模板存放于另一目录
请回电邮
-

怎么能联系您啊 有点问题想请教您 qq309834850
-

安装了新的WP。提示说已经安装过了。之后再找了教程来看,完全看的头晕脑胀。
一个域名下只能安装一个WP。例如A文件夹。
那么我新建了一个B的文件夹安装,不行吧。也改了下数据表前缀,发现还是不行,仍然提示已经安装过了。
分别安装在两个子目录不行吗?orz
是不是一定要一个安装在根目录呢?谢谢。 -

多谢,经过多次试验后终于搞懂了。囧……
-

if ($_SERVER['HTTP_HOST']==’host1.cn’):
define(”WP_SITEURL”, “http://host1.cn”);
define(”WP_HOME”, “http://host1.cn/blog”);
elseif ($_SERVER['HTTP_HOST']==’host2.cn’):
define(”WP_SITEURL”, “http://host2.cn”);
define(”WP_HOME”, “http://host2.cn”);
endif;啊啊啊。上面那条因为加了php标签 没显示啊,WordPress怎么处理comment的
已经被你彻底打败。
新建的不行啊.再试试
我这样理解不知道对不:国外空间,我现在已经在子目录建立了一个wp网站A了,如果再绑定一个域名,就会在根目录生成一个新的子目录B,A,B是两个平级的文件夹。咋办?
我不懂技术.
是不是要把wp安装的linux空间的根目录下呢
只需要一份wp程序放在根目录,绑定多个域名,子目录的没测试过。