使用一个WordPress创建多个不同的网站

以前Wopus团队分别用Wordpress建立了Wopus中文平台、WopusIDC平台

WordPress主题站、WordPress插件基地等系列网站。这个方法虽然很简单很实用,但确实很傻瓜,一点也不牛B!其实,我们完全可以用一个Wordpress对应不同的数据库,建立这些网站群。牛B吧?那就接下去看到底是如何牛B的,哈哈!
首先,合并站点之前,请确保:

  1. 备份wp-content目录数据
  2. 各站永久链接格式必须一致
  3. 最好新建几个不同的数据库表(视你要建立的网站数量而定)

如果以上条件都满足,那你可以继续看下去:
假设我们现在有两个网站,一个是www.wopus.org,一个是themes.wopus.org,要把他们合并到同一个Wordpress中,那么,我们只需要在wp-config.php加上如下代码即可:

if($_SERVER[“HTTP_HOST”]==”www.wopus.org” || $_SERVER[“HTTP_HOST”]==”www.wopus.org”){

define(‘DB_NAME’, ‘www’);
define(‘DB_USER’, ‘www_usr’);
define(‘DB_PASSWORD’, ‘www_psw’);
define(‘DB_HOST’, ‘localhost’);
define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ”);

}else if($_SERVER[“HTTP_HOST”]==”themes.wopus.org” || $_SERVER[“HTTP_HOST”]==”themes.wopus.org”){

define(‘DB_NAME’, ‘themes’);
define(‘DB_USER’, ‘themes_usr’);
define(‘DB_PASSWORD’, ‘themes_psw’);
define(‘DB_HOST’, ‘localhost’);
define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ”);

}

这段代码来自cbm’s land的面向对象(OOP)的使用Wordpress系统 一拖N的用法
代码很简单,就是根据不同的$_SERVER[“HTTP_HOST”]来读取不同的数据库表的配置,再加上不同的主题风格、和插件,看起来就像不同的网站了,其实一个Wordpress做出来的。国内著名的博客服务商–Yo2,就是在此基础上建立起来的,而不是用的Wordpress mu。
牛B吧?!大家将首页样式改一改,说不一定下一个Yo2就是你哦!

Comments

40 responses to “使用一个WordPress创建多个不同的网站”

  1. kjkjkljkj Avatar

    这个方法赞!!非常赞!!等会就去试试

  2. kjkjkljkj Avatar

    这样子不就可以用一个WP程序建立多个博客了,确实是很节约空间啊,赞!

  3. Toby Avatar

    这个东西很强哦!真的很强!学习了~

  4. ThinkAgain Avatar

    Hack了wp-config.php,很有借鉴意义。呵呵。

  5. rain Avatar

    正好需要

  6. EaSy Avatar

    很强很厉害!

  7. 辐射鱼 Avatar

    to ThinkAgain:相互学习,重在分享,Wordpress这个毛胚房还需要你这样的插件、主题作者进行精装修啊,期待你的佳作

  8. 辐射鱼 Avatar

    to kj:嗯,理论上是多个
    to rain:希望对你有帮助,常来看看,也翻翻以前的

  9. 老N Avatar


    这个真是好教程,我有需要时机会一定尝试!先标记着。

  10. 大排 Avatar

    很黄很暴力!很强悍

  11. Fishtimes Avatar

    非常有意义
    学习

  12. rain Avatar

    我现在不支持多数据库,所以改成在下级目录安装前修改表头就行了

    示范

    http://ww.israin.info

    http://deeepin.israin.info

  13. 辐射鱼 Avatar

    @大排 这个不黄啦
    @Fishtimes 确实有意义,理论上只要不同的表前缀就行

  14. 亢龍有悔 Avatar

    呵呵,确实很牛x.

  15. dken Avatar

    呵呵,,借用到其它程序上了..哈哈..

  16. 辐射鱼 Avatar

    @dken 对,就是要这种发散思维

  17. […] 9月 20, 2008 at 2:27 上午 参考文章:使用一个Wordpress创建多个不同的网站和面向对象(OOP)的使用Wordpress系统 […]

  18. Joe Avatar

    有个小问题问一下,WP-CONFIG.PHP里这里:
    $table_prefix = ‘wp_’;
    没有定义好可以使用两个吗?如果我合并之前一个博客用了wp_1另一个用了wp_2如何处理?

  19. dken Avatar

    @Joe
    同一数据库下更简单。只须判断$table_prefix就可可能了。

    define(‘DB_NAME’, ‘chrome’);
    define(‘DB_USER’, ‘chrome’);
    define(‘DB_PASSWORD’, ‘ggchrome.com’);
    define(‘DB_HOST’, ‘localhost’);
    define(‘DB_CHARSET’, ‘utf8’);
    define(‘DB_COLLATE’, ”);
    if($_SERVER[“HTTP_HOST”]==”www.cbmland.com” || $_SERVER[“HTTP_HOST”]==”cbmland.com”){
    $table_prefix = ‘wp_1’;
    }else if($_SERVER[“HTTP_HOST”]==”www.ggchrome.com” || $_SERVER[“HTTP_HOST”]==”ggchrome.com”){
    $table_prefix = ‘wp_2’;
    }
    define (‘WPLANG’, ‘zh_CN’);

  20. Joe Avatar

    不错不错.如果是不同数据库按上面的也可以吗?

  21. Joe Avatar

    有大侠可以发一个已经写好的“不同数据库”并且“不同表前缀”的WP-CONFIG.PHP文件给我吗?自己写怕出错。

    有了这个两个博客就不用升两次级了

  22. dken Avatar

    @Joe

    不同数据库,不同表前缀按下面地址的改一下就可以了。
    http://www.cbmland.com/post/544/oop-use-wordpress-as-class.html

  23. Sixianglu Avatar

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

    国庆愉快!谢谢!

  24. kjkjkljkj Avatar

    其实很多程序都可以利用这种方法的,自己稍微思考下就可以获得很多惊喜

  25. jack Avatar
    jack

    @dken @dken
    问一个很菜的问题,在wp-config.php按照你上面的这个添加代码,之前是不是也需要在数据库里建立两个表,wp_1和wp_2?还是数据库会自建??

  26. qian Avatar
    qian

    我也想这么做,但我有个顾虑:domain1的静态页面(wordpress以外的页面)或domain1/wp-content/uploads/file可以用domain2访问到。而我想做到domain1和domain2在内容上是完全独立的,有什么办法可以割断这种联系?

    服务器环境是lamp,我曾想过domain1和domain2使用不同的docuemntroot,把wordpress安装在domain1,domain2除wp-config.php,.htaccess以外大部分文件用软连接建立,但是发现php中大量使用的__FILE__识别的是目标文件名,不是symbolic文件名。针对wordpress 2.6.2我可以修改wp-load.php使之满足我的要求(至少看上去是这样,但我无法保证wordpress在其他地方使用了__FILE__带来某些隐患。

    有什么好办法?

  27. ernsky Avatar

    @dken 如果是三个以上,应该怎么弄,麻烦指点!

  28. dken Avatar

    @ernsky

    增加一个else if

  29. 静水 Avatar

    我现在就去做测试。不行的话就明早去找酋长

  30. rich Avatar

    恩
    这个方法很好
    让我见识不少
    看来积累很重要,创意也很重要!

  31. Lyman Avatar

    用switch( $_SERVER[‘HTTP_HOST’] )
    {
    case ‘www.host.com’:
    define(‘DB_NAME’, ‘themes’);
    define(‘DB_USER’, ‘themes_usr’);
    define(‘DB_PASSWORD’, ‘themes_psw’);
    define(‘DB_HOST’, ‘localhost’);
    define(‘DB_CHARSET’, ‘utf8’);
    define(‘DB_COLLATE’, ”);
    break;
    default :
    define(‘DB_NAME’, ‘themes’);
    define(‘DB_USER’, ‘themes_usr’);
    define(‘DB_PASSWORD’, ‘themes_psw’);
    define(‘DB_HOST’, ‘localhost’);
    define(‘DB_CHARSET’, ‘utf8’);
    define(‘DB_COLLATE’, ”);
    break;
    }

  32. leesum Avatar

    以前看到这招的介绍忘了备份,找了半天终于找到了,谢谢

  33. 桔小溪 Avatar

    有个疑问:这个教程和 面向对象(OOP)的使用Wordpress系统 一拖N的用法[原]
    两篇教程都是说两个站点都安装了wordpress,然后加以合并
    如果目前我的网站,www.juxiaoxi.com没有安装wordpress,而子站blog.juxiaoxi.com安装了wordpress,
    想将主站与子站公用一个wordpress,直接修改PHP可行了
    还是说,我需要将www.juxiaoxi.com先装wordpress再按这个教程的方法合并?

    总觉得应该有方法的,可惜自己不懂。。。

    1. 酋 长 Avatar

      其实在3.0之后,这种方法,就已经失效了。WordPress 3.0开始,多站点功能很强大,可以搜索一下我们网站的内容。

      1. 桔小溪 Avatar

        谢谢酋长提醒,好在没来得及动手这么改,刚好也在关注3.0开始的多站点功能呢,wopus的资源也看了些,这几天就专门抽个时间好好整