我们的团队在使用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 当网站上线时。
如果我们必须为每个数据库设置不同的数据库,手动更改域和路径,然后在数据库之间复制帖子、博客和用户数据以进行调试并继续开发,那就有点过头了。。
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());
}
}
}