【发布时间】:2018-08-24 16:46:04
【问题描述】:
复制meta_key_capabilities并将前缀从st_pr59t_capabilities更改为wp_capabilities,然后将st_pr59t_capabilities中的meta_value复制为wp_capabilities
Take a look at this image: Phpmyadmin Image Illustration
我正在创建将由同一组用户访问的 wordpress 网站 SITE 1 (st_pr59t_) 和 SITE 2 (wp_)。
我已经成功完成
1) 在站点 1 和站点 2 之间共享用户和用户元数据
2) 在站点 1 和站点 2 之间共享登录 Cookie
到目前为止一切都很好。
现在我不仅要同步用户,还要同步所有用户的用户角色(多个用户角色)。
为此我尝试了solution offered HERE:
function ksu_save_role( $user_id, $role ) {
$prefix_1 = 'st_pr59t_'; // SITE 1's Table Prefix
$prefix_2 = 'wp_'; // 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 );
当仅向用户分配一个用户角色时,上述解决方案非常有效。但是如果一个用户被分配了多个用户角色,那么它就不起作用了。我的意思是,它不会同步所有用户角色。
通过数据库挖掘后,我了解到解决方案在于将“st_pr59t_capabilities”的“meta_value”克隆为“wp_capabilities”
有没有办法将“user_id”的整个“meta_value”从“st_pr59t__capabilities”复制到“wp_capabilities”?
如果我们可以将整个meta_value从“st_pr59t__capabilities”复制到“wp_capabilities”,那么分配给用户的所有用户角色都可以同步。
那么需要对上面提到的代码做哪些修改来实现呢?
【问题讨论】:
标签: php sql wordpress woocommerce user-roles