gpt4 book ai didi

php - 在共享相同 wp_users 和 wp_usermeta 表的两个 Wordpress 安装之间同步所有用户角色。

转载 作者:可可西里 更新时间:2023-11-01 08:24:12 25 4
gpt4 key购买 nike

我创建了一个共享相同用户(共享相同的 wp_users 和 wp_user_meta 表)的 Woocommerce 商店(数据库前缀 wp_)和一个 Wordpress 博客(数据库前缀 wp_new_)。

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

为此,我尝试了 https://kinsta.com/blog/share-logins-wordpress/ 提供的解决方案

    function ksu_save_role( $user_id, $role ) {

$prefix_1 = 'wp_';
$prefix_2 = 'wp_new_';

$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 );

当只有一个用户角色分配给用户时,上述解决方案非常有效。但是,如果一个用户被分配了多个用户角色,那么它就不起作用了。我的意思是,它不会同步所有用户角色。

通过数据库挖掘后,我了解到解决方案在于将“wp_capabilities”的“meta_value”克隆到“wp_new_capabilities”(在 wp_usermeta 中)

有没有办法将“user_id”的整个“meta_value”从“wp_capabilities”复制到“wp_new_capabilities”?

如果我们可以将整个元值从“wp_capabilities”复制到“wp_new_capabilities”,那么可以同步分配给用户的所有用户角色。

那么需要对上述代码做哪些更改才能实现这一点?

谢谢!

最佳答案

我在同步用户角色(每个用户多个用户角色)方面遇到了问题。经过两个多晚上的挑灯夜战,我找到了愚蠢的神奇解决方案:)

我只是在“add_action( 'set_user_role', 'ksu_save_role', 10, 2 );”中将 'set_user_role' 更改为 'add_user_role'

小魔法调整后的结束代码

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 ); // THE MAGIC MODIFICATION

代码学分:https://kinsta.com/blog/share-logins-wordpress/

将它添加到 functions.php,你就可以开始了。

它与“Woocommerce Subscriptions”和“YITH Automatic Role Changer for WooCommerce Premium”等角色转换器插件兼容

您可以根据需要设置和更改任意数量的角色。

关于php - 在共享相同 wp_users 和 wp_usermeta 表的两个 Wordpress 安装之间同步所有用户角色。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49279891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com