如何在两个WordPress安装之间共享数据库用户信息?

时间:2017-01-09 14:23:49

标签: wordpress

我目前正在使用PointFinder主题进行两次WordPress安装。一个是主网站(网站A),而另一个是通过主网站(网站B)访问的子网站。

目标是,网站A与网站B共享其用户信息(usersusermetacomments)。

Website A
   |_ Website B (this one should access the user info from website A)

我已经研究过数据库模式和一些php文件。从理论上讲,我可以在'wp-config.php'中定义第二个数据库连接,并将每个对网站B的php文件中的usersusermetacomments表的调用指向数据库来自网站A.

但这似乎相当广泛且容易出错。任何其他想法如何解决这个问题?

UPDATE /溶液

如下面的答案中提出的codiiv,在不同的WP站点之间共享用户/元数据非常容易。添加新用户时,不要忘记添加更新缺少的用户角色的脚本。这是我发现的最全面的链接:

https://kinsta.com/blog/share-logins-wordpress/

2 个答案:

答案 0 :(得分:1)

1)要共享用户和usermeta信息,您可以在辅助(子站点)wp-config.php文件中添加以下代码行

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

您需要将 wp _ 替换为正确的前缀

2)对于评论或其他表格,我没有做足够的研究,但我认为只要两者在同一台服务器上就可以实现。或者,您可以为注释创建自定义RSS源(包括完整注释),并在子网站中解析该注释。

答案 1 :(得分:0)

Sync all User Roles between two Wordpress Installs sharing the same wp_users and wp_usermeta tables.

function ksu_save_role( $user_id, $role ) {

    // Site 1
    // Change value if needed
    $prefix_1 = 'first_';

    // Site 2 prefix
    // Change value if needed
    $prefix_2 = 'second_';

    $caps = get_user_meta( $user_id, $prefix_1 . 'capabilities', true );
    $level = get_user_meta( $user_id, $prefix_1 . 'user_level', true );

    if ( $caps ){
        update_user_meta( $user_id, $prefix_2 . 'capabilities', $caps );
    }

    if ( $level ){
        update_user_meta( $user_id, $prefix_2 . 'user_level', $level );
    }
}

add_action( 'add_user_role', 'ksu_save_role', 10, 2 );