面向对象(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实例了。
怎么样?整一整,送个给女友?送个给老婆?送个给爸妈?嘿嘿!别以为不要钱,可要悠着点~邻居们都看着呐~
小提示:虚拟主机需要先绑定域名才能实现。
82 Responses for "面向对象(OOP)的使用Wordpress系统 一拖N的用法[原]"
-

-

請問我如果新安裝一個空wordpress的話,比如我加了10個會員。用上述方法怎么操作呢?因為同一個wordpress的不是只有一個網址嗎?網址怎么指呢。
謝謝啊,最近在找好用的php多用戶程序,死都找不到合適的。唉,極度痛苦。 -

感谢cbm,没想到这么快就回复了。。
我有点明白了。。那10个人的代码结构是:if,else if,else if,else if….吗?(不好意思没学过编程什么都不懂)。还有就是,如果弄个首页,一进去是调用 所有会员 的新文章,可以实现吗?
多谢多谢。。。
-

这个Wordpress技术应该很具有冲击性。
我也很有兴趣,也想尝试一下,不过有一点儿不太懂:
1)我已经安装了自己的Wordpress,在wp-config.php里面当然没有数据表的 前缀。
2)如果我想按照你本文的说明,另外再建立一个Wordpress,那么我在原来的wp-config.php文件里是否需要改动?也就是说-必-须-要添加数据表的前缀?如果必须的话,我原来的数据库不是就要乱了吗?所以,我就需要先把我原来的数据库弄干净之后再重新安装我的Wordpress了?谢谢!
-

谢谢指教,还有一点不太明白。
在wp-config.php添加你说的代码就行,那么是不是-之-前要在一个干净的数据库里另外建立两-个-表wp_1和wp_2 ?这个不明白,难道数据库会自行建立这两个表吗?
对数据库一点儿也不懂,幸亏wordpress安装不用管这个。
期待答复。谢谢了! -

这样也不错 可以用来做BSD吗? 我想不能把,那样容易出问题吧
-

又是一个高手,太多的高手了.学都学不来.回去一定试试.
-

原来可以这样操作wordpress,多谢博主经验
-

测试成功,不过有一个问题,就是robots.txt却无法分开了,难道还要做个判断?
-

请教一下,我的域名1是绑定到根目录的,程序安装在wordpress目录;我把域名2绑定到了”根目录\wordpress”,然后按照上面的方法进行了设置。但是域名1没有什么影响,而域名2刷新后是一个空白页面,请教一下是怎么回事
-

我是新手。请问如何将所有域名都解析到wp服务器上呢?又如何在虚拟主机绑定域名?我是用DirectAdmin。域名在godaddy买的。
-

这个方法应该是在两个博客都已经建立好的情况下吧.
如果是一开始新建的博客支不支持这种方法呢 -

或者说支不支持二级域名呢.
二级域名下没有能搞通
很有创意的做法!
但是如果WP升级会有问题吗?