覆盖WordPress多博客的数据库配置

时间:2010-09-29 作者:Michael Lindfors

我们的团队在使用wordpress 3多博客时遇到了一个问题。我们通常使用站点的本地副本(localhost/testsite),但使用相同的数据库来保持所有更改都是最新的。

这在一次安装中就可以很好地工作,因为您可以使用以下内容覆盖php中的数据库配置:

define(\'URL\',$path);  
define(\'WP_HOME\',$path);  
define(\'WP_SITEURL\',$path);  
define( \'WP_CONTENT_URL\', $path.\'/wp-content\');  
但这在多站点上不起作用,因为有额外的表(wp_blogs, wp_site) 他们在自己的设置中有博客的路径。

有人知道如何覆盖这些设置吗?我希望该网站在域上运行localhost 对于我们的开发人员,developerdomain.com 对于我们的测试服务器realdomain.com 当网站上线时。

如果我们必须为每个数据库设置不同的数据库,手动更改域和路径,然后在数据库之间复制帖子、博客和用户数据以进行调试并继续开发,那就有点过头了。。

3 个回复
SO网友:hakre

如果您想做到这一点,您将有一个用于开发的数据库,一个用于登台,然后是实时数据库。只是Wordpress在软件工程中并不是为了与这样的公共空间共存而设计的。

我仍然公开看到缺少的组件是一个完整的迁移脚本,它能够将数据库中的所有wordpress设置和数据从一个域转换到另一个域,因为域名被“硬编码”到帖子中,并嵌入到多个(通常是序列化的)选项值中。

只要你只关心列出的几个选项,你就可以pre_option_... 根据您的设置筛选和更改这些内容。您可以在配置文件中写入define并相应地更改值。这可能适用于多站点设置以及从数据库中过滤实际值。

这是一个方向吗?

SO网友:Nabha

它并没有我想要的那么优雅,但确实有效:您可以将主机文件更改为指向www.realdomain。com到本地主机。

您对www.realdomain的请求。com将返回到您的本地计算机,找到WordPress(如果一切都设置正确),WordPress将正常工作,因为它没有意识到这是一个本地开发环境。

有缺点,但这是一个非常快速和肮脏的修复。

SO网友:Nabha

好吧,这是另一个愚蠢的解决方案,但它似乎有效。替换链接到www.realdomain的内容。com,你必须做得更多。

把这个放在你的wp配置中。定义数据库信息后的php文件。

    if( \'example-local\' == $_SERVER[\'SERVER_NAME\'] ) {

        mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
        mysql_select_db(DB_NAME) or die(mysql_error());

        $queries[0] = <<<HEREDOC

        UPDATE wp_blogs
        SET domain="example-local"
        WHERE domain="www.example.org"; 

HEREDOC;

        $queries[1] = <<<HEREDOC

        UPDATE wp_options 
        SET option_value = replace( option_value, "www.example.org", "example-local" ); 

HEREDOC;

        for ($i = 4; $i < 9; $i++) {

            $queries[] = \'UPDATE wp_\' . $i . \'_options 
        SET option_value = replace( option_value, "www.example.org", "example-local" );\';

        }   

        foreach( $queries as $query ) { 

            $result = mysql_query( $query );

            if (!$result) {
                die(\'Invalid query: \' . mysql_error());
            }

        }

    }

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo