mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
Fix WP roles synchronisation on UM role update
This commit is contained in:
@@ -6,14 +6,35 @@
|
||||
add_action('um_after_user_role_is_updated','um_setup_synced_wp_role', 50, 2);
|
||||
function um_setup_synced_wp_role( $user_id, $role ) {
|
||||
global $ultimatemember;
|
||||
|
||||
$meta = $ultimatemember->query->role_data( $role );
|
||||
$meta = apply_filters('um_user_permissions_filter', $meta, $user_id);
|
||||
$meta = apply_filters('um_user_permissions_filter', $meta, $user_id );
|
||||
$wp_user_object = new WP_User( $user_id );
|
||||
|
||||
if ( isset( $meta['synced_role'] ) && $meta['synced_role'] ) {
|
||||
$wp_user_object = new WP_User( $user_id );
|
||||
$wp_user_object->set_role( $meta['synced_role'] );
|
||||
$wp_user_object->add_role( $meta['synced_role'] );
|
||||
}elseif( ! $wp_user_object->roles ) { // Fallback user default role if nothing set
|
||||
$wp_user_object->add_role( 'subscriber' );
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
*** @remove previously synced WP role
|
||||
***/
|
||||
add_action('um_when_role_is_set', 'um_remove_prev_synced_wp_role');
|
||||
function um_remove_prev_synced_wp_role( $user_id ) {
|
||||
global $ultimatemember;
|
||||
|
||||
um_fetch_user( $user_id );
|
||||
$role = um_user('role');
|
||||
$meta = $ultimatemember->query->role_data( $role );
|
||||
if ( isset( $meta['synced_role'] ) && $meta['synced_role'] ) {
|
||||
$wp_user_object = new WP_User( $user_id );
|
||||
$wp_user_object->remove_role( $meta['synced_role'] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
*** @after user uploads, clean up uploads dir
|
||||
***/
|
||||
|
||||
Reference in New Issue
Block a user