Вы можете установить и изменить столько ролей, сколько хотите.
дал Woocommerce Store (префикс базы данных wp_) и блог Wordpress (префикс базы данных wp_new_), в которых используются одни и те же пользователи (одни и те же таблицы wp_users и wp_user_meta).
Я хочу синхронизировать не только пользователей, но и роли пользователей (несколько пользовательских ролей) всех пользователей.
Для этого я попробовал решение, предлагаемое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 );
Приведенное выше решение прекрасно работает, когда пользователю назначена только одна роль пользователя. Но если пользователю назначено несколько ролей, это не сработает. Я имею в виду, он не синхронизирует все роли пользователей.
Покопавшись в базе данных, я понял, что решение заключается в клонировании "meta_value" из "wp_capabilities" в "wp_new_capabilities" (в wp_usermeta)
Есть ли способ скопировать полное «meta_value» для «user_id» из «wp_capabilities» в «wp_new_capabilities»?
Если мы можем скопировать полное значение meta_value из «wp_capabilities» в «wp_new_capabilities», то все роли пользователя, назначенные пользователю, могут быть синхронизированы.
Итак, какие изменения необходимо внести в вышеупомянутый код для достижения этой цели?
Спасибо!