在共享同一数据库的两个Wordpress安装之间同步多个用户以及分配的用户角色。

时间:2018-03-13 19:56:56

标签: mysql wordpress multisite

我正在创建一个Woocommerce商店(SITE 1)和一个Wordpress博客(SITE 2),它将由同一组用户访问。

为了方便用户,网络将共享用户和登录。

我已经在这些帖子的帮助下成功实现了90%的结果

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

https://trickspanda.com/wordpress-share-users-login/

所以我成功完成了

1)在第1站和第2站之间共享用户和用户META

2)在站点1和站点2之间共享登录COOKIES

所以一切都很好,直到这里。

现在,我不仅要同步所有用户的用户,还要同步用户角色(多个用户角色)。

为此,我尝试了https://kinsta.com/blog/share-logins-wordpress/

提供的解决方案
function ksu_save_role( $user_id, $role ) {

    $prefix_1 = 'SITE1_'; // SITE 1's Table Prefix
    $prefix_2 = 'SITE2_'; // SITE 2's Table Prefix

    $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( 'set_user_role', 'ksu_save_role', 10, 2 );

当仅为用户分配单个用户角色时,上述解决方案很有效。但是,如果为用户分配了多个用户角色,则它不起作用。我的意思是,它不会同步所有用户角色。

在挖掘数据库后,我明白解决方案在于克隆" meta_value" " SITE1_capabilities"到" SITE2_capabilities"

有没有办法将'user_id'的整个'meta_value'从“SITE1_capabilities”复制到“SITE2_capabilities”?

enter image description here

如果我们可以将整个meta_value从“SITE1_capabilities”复制到“SITE2_capabilities”,则可以同步分配给用户的所有用户角色。

那么需要对上面提到的代码做些什么改变呢?

谢谢!

0 个答案:

没有答案