设置%3个站点以连接到%1数据库并共享数据

时间:2016-06-22 作者:Corey

如何在3个不同的服务器上安装3个不同的Wordpress安装,所有这些服务器都连接到一个数据库并共享相同的数据?

我想设置3个不同的服务器。一个用于开发、QA/准备和生产。每个站点应相互隔离,它们仅用于显示数据库中的相同数据,这意味着:

开发人员将在开发服务器中工作,这意味着此安装将处于不断变化的状态

2 个回复
最合适的回答,由SO网友:majick 整理而成

为了详细说明我的建议,以下是一些工作代码:

// hook in before theme is loaded
add_action(\'plugins_loaded\',\'custom_maybe_switch_themes\');
function custom_maybe_switch_themes() {
    if (!is_user_logged_in()) {return;}
    if (!current_user_can(\'manage_options\')) {return;}

    // check for query request eg. ?usertheme=theme-slug
    if (isset($_REQUEST[\'usertheme\'])) {
        // sanitize request
        $usertheme = strtolower(sanitize_title($_REQUEST[\'usertheme\']));
        global $current_user; $current_user = wp_get_current_user();

        // maybe reset user meta stylesheet
        if ($usertheme == \'reset\') {delete_user_meta($current_user->ID,\'stylesheet\'); return;}

        // validate theme
        $theme = wp_get_theme($usertheme);
        if ($theme->exists()) {
             delete_user_meta($current_user->ID,\'stylesheet\');
             add_user_meta($current_user->ID,\'stylesheet\',$usertheme);
        }
    }
}

// add filter to stylesheet option
add_filter(\'pre_option_stylesheet\', \'get_user_stylesheet\');
function get_user_stylesheet($stylesheet) {
    if (!is_user_logged_in()) {return $stylesheet;}
    if (!current_user_can(\'manage_options\')) {return $stylesheet;}

    // check user meta stylesheet
    global $current_user; $current_user = wp_get_current_user();
    $userstylesheet = get_user_meta($current_user->ID,\'stylesheet\',true);
    // if we have a value use it instead
    if ($userstylesheet) {return $userstylesheet;}
    return $stylesheet;
}
要根据用户切换到主题,请使用?usertheme=theme-slug

。。。要重置,只需使用?usertheme=reset

由于所有主题代码都是根据所使用的样式表加载的,因此您可以为Live、Staging和Development(使用相同的父模板)设置子主题目录,并作为开发人员轻松地在主题之间切换,并立即在同一域上查看结果。:-)

我能想到的唯一警告是测试主要的插件更新,您仍然需要一个用于此目的的开发环境,并且可能需要同步数据库以测试它们与当前数据库内容。这只是因为你不知道他们是否会改变他们的选项数据库表结构(虽然很少见,但没有回头路,所以你可以通过这种方式破坏一个活动站点。)

需要进一步测试注销用户的站点输出,但可以使用不同的查询字符串进行一次性加载,也可以使用cookie而不是用户元来实现类似的持久结果。

无论如何,能够将代码片段组织在文件中,以便在同一个域上进行开发测试和登台,使在它们之间推动新的更改变得非常容易,并且不必一直担心数据库同步(尽管这是另一种可行的方法),这一优势使我认为这是一种非常方便的方法。

SO网友:stoi2m1

您可以使用子域进行开发和QA安装。如qa。领域com和dev.domain。com。创建子域时,通常也会创建子目录。您可以在每个子域目录中安装额外的wordpress。然后创建另外两个数据库。备份生产数据库并将其加载到2个新数据库。设置配置。这些新数据库的php文件,您有2个新服务器。您必须对数据库进行一些更新。选项表中至少有两个位置home和site\\u url。我通常打开。文本编辑器中的sql文件,并查找和替换域。com与sub.domain。com。

相关推荐

Wordpress Database Cleanup

重建WordPress数据库和更改网站的目录结构有多困难?我继承了两个网站的维护工作,我很确定目录结构设置不正确,数据库一团糟(两个网站有6个数据库?)。我是WordPress的新手,我怀疑现在使用现有网站重建网站会更容易。丢失数据没什么大不了的,网站也没什么特别的。该网站运行正常,但维护起来越来越困难。这是一个合理的计划吗?