Fix WP roles synchronisation on UM role update

This commit is contained in:
Champ Camba
2017-03-01 17:23:38 +08:00
parent 191f8ef4b2
commit 2ab7901a1a
+24 -3
View File
@@ -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
***/