add_cap( $cap ); } } $editable = function_exists( 'get_editable_roles' ) ? get_editable_roles() : wp_roles()->roles; foreach ( array_keys( $editable ) as $role_key ) { if ( 'administrator' === $role_key ) { continue; } $role = get_role( $role_key ); if ( ! $role ) { continue; } $granted = isset( $role_map[ $role_key ] ) && is_array( $role_map[ $role_key ] ) ? array_map( 'sanitize_key', $role_map[ $role_key ] ) : array(); foreach ( self::all_caps() as $cap ) { if ( in_array( $cap, $granted, true ) ) { $role->add_cap( $cap ); } else { $role->remove_cap( $cap ); } } } } }