@rrsandler29
You can try this code snippet and test if it works OK for your Directory.
add_filter( 'um_prepare_user_query_args', 'um_prepare_user_query_args_inclusive_roles', 10, 2 );
function um_prepare_user_query_args_inclusive_roles( $query_args, $directory_data ) {
if ( $directory_data['mode'] == 'directory' ) {
$query_args['role'] = $query_args['role__in'];
unset( $query_args['role__in'] );
}
return $query_args;
}
Install by adding the code snippet to your active theme’s functions.php
file
or use the “Code Snippets” Plugin
https://wordpress.org/plugins/code-snippets/
Hello @rrsandler29
Try a code snippet that missveronica suggested if the “Custom usermeta table” setting is turned off. This solution may work because according to documentation the role
parameter is an inclusive list: users must match *each* role.
You can try this code snippet if the “Custom usermeta table” setting is turned on.
add_action( 'um_pre_users_query', 'um_pre_users_query_inclusive_roles', 10, 2 );
function um_pre_users_query_inclusive_roles( &$mdm, $directory_data ){
global $wpdb;
if ( ! empty( $mdm->roles ) && is_array( $mdm->where_clauses ) ) {
foreach( $mdm->where_clauses as $i => $where_clause ) {
if ( strpos( $where_clause, 'umm_roles.um_value LIKE' ) ) {
$roles_clauses = array();
foreach ( $mdm->roles as $role ) {
$roles_clauses[] = $wpdb->prepare( 'umm_roles.um_value LIKE %s', '%"' . $wpdb->esc_like( $role ) . '"%' );
}
$mdm->where_clauses[ $i ] = '( ' . implode( ' AND ', $roles_clauses ) . ' )';
}
}
}
}
Regards
Hi @rrsandler29
This thread has been inactive for a while so we’re going to go ahead and mark it Resolved.
Please feel free to re-open this thread if any other questions come up and we’d be happy to help. 🙂
Regards