面向对象(OOP)的使用WordPress系统 一拖N的用法[原]
30 六 2008
今天和一位网友交流cacheAsFile的使用,从中得知他的网站空间为了实现三个各不相同的网站,已放置三个Wordpress系统来实现。
操作实现是在网站的根目录下放置一个Wordpress系统,再建立子目录来放置其他的Wordpress系统。可真难为了这位朋友。
这个其实是很简单而且很实在的方法,但是维护成本确是很高的,而且目录结构也不怎么不雅观。
这种模式看来有点像传统的面向过程编程,复用性太低,那么面向对象编程(OOP)怎么来处理好这个需求呢?
一般情况可以这样理解,Wordpress.org提供的Wordpress系统就像是一个Class,放置在网站上被访问时会根据不同的配置(数据库中保存的设置)生成出一个Wordpress运行实例,各不同的配置(设定的主题,插件)实例化出各不相同的基于Wordpress系统的网站。
反过来说,各不相同的Wordpress网站的原因在于不相同的配置。
如果在同一个服务器上可以根据不同的域名访问来指定不同的配置的话,这样即可实现不同的网站。
很高兴,php能做到这很基本一点判断。答案是肯定的。
很巧,在我的本地机器上,配置有自己的2个站,一个就是cbmland.com,另外一个是iFlex.com.cn,现在都是基于Wordpress系统的,在我的wp-config.php里面有我加了这样一段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
if($_SERVER["HTTP_HOST"]=="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实例了。
怎么样?整一整,送个给女友?送个给老婆?送个给爸妈?嘿嘿!别以为不要钱,可要悠着点~邻居们都看着呐~
小提示:虚拟主机需要先绑定域名才能实现。
91 Responses for "面向对象(OOP)的使用WordPress系统 一拖N的用法[原]"
-
我尝试一下…这样做的话一方面是可以节省网站空间是吧?
谢谢博主分享。
另外请问一下,为什么if后面的括号里把$_SERVER["HTTP_HOST"]==”cbmland.com”重复了2遍?||应该是“或”的意思吧,||前后应该不同才有意义吧?
很酷的博客啊,呵呵。
发现这个方法的一个小漏洞,具体可参见:http://www.minc.me/?p=56
对php也不是很熟,多多交流!
非常感谢提供这么好的方法。有一个问题请教:按照上述方法新建了第二个站之后,我想把原来站的数据库导入到新站中,新站选取原站点部份内容,请问应该怎样进一步操作?谢谢
请教下,这样做会不会对seo造成什么影响呢?
请教,这个与wordpress MU有区别么?
正在测试
这位兄台的想法固然很好,但是怎么样公用user表呢?请指教~~~
hi,请问这种方法对子目录有用吗?
比如www.abc.com/def
谢谢!这个方法真的很不错,自己也想这样做来实现多站点,但是试了一下午,都不行,后台并没有任何变化,求教,谢谢!
怎一个牛叉了得,很牛,喜欢,收藏了O(∩_∩)O~
其实.wordpress本来就支持的,请看
http://codex.wordpress.org/Create_A_Networkif ($_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的
Leave a Reply
2010-05-06 08:05