From 255acd7c0a285763e5b92630ec815dfeea496fbc Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Wed, 14 Oct 2020 11:42:59 +0300 Subject: [PATCH] - fixed member directory sorting by the full name; - fixed registration form with not editable role field; --- includes/core/class-form.php | 3 +- includes/core/class-member-directory.php | 40 ++++++++++++------------ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/includes/core/class-form.php b/includes/core/class-form.php index d6ce1244..65389f6c 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -612,7 +612,8 @@ if ( ! class_exists( 'um\core\Form' ) ) { if ( strstr( $field_key, 'role_' ) && is_array( $field_settings['options'] ) ) { - if ( $field_settings['editable'] == 0 ) { + if ( isset( $this->post_form['mode'] ) && $this->post_form['mode'] == 'profile' && + isset( $field_settings['editable'] ) && $field_settings['editable'] == 0 ) { continue; } diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 2055b798..3826f01c 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1251,26 +1251,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } } - if ( $sortby == $directory_data['sortby_custom'] || in_array( $sortby, $custom_sort ) ) { - - $custom_sort_type = apply_filters( 'um_member_directory_custom_sorting_type', 'CHAR', $sortby, $directory_data ); - - $this->query_args['meta_query'][] = array( - 'relation' => 'OR', - $sortby . '_cs' => array( - 'key' => $sortby, - 'compare' => 'EXISTS', - 'type' => $custom_sort_type, - ), - array( - 'key' => $sortby, - 'compare' => 'NOT EXISTS', - ) - ); - - $this->query_args['orderby'] = array( $sortby . '_cs' => 'ASC', 'user_login' => 'ASC' ); - - } elseif ( 'display_name' == $sortby ) { + if ( 'display_name' == $sortby ) { $display_name = UM()->options()->get( 'display_name' ); if ( $display_name == 'username' ) { @@ -1335,6 +1316,25 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->query_args['orderby'] = array( 'last_name_c' => 'ASC', 'first_name_c' => 'ASC' ); unset( $this->query_args['order'] ); + } elseif ( ( ! empty( $directory_data['sortby_custom'] ) && $sortby == $directory_data['sortby_custom'] ) || in_array( $sortby, $custom_sort ) ) { + + $custom_sort_type = apply_filters( 'um_member_directory_custom_sorting_type', 'CHAR', $sortby, $directory_data ); + + $this->query_args['meta_query'][] = array( + 'relation' => 'OR', + $sortby . '_cs' => array( + 'key' => $sortby, + 'compare' => 'EXISTS', + 'type' => $custom_sort_type, + ), + array( + 'key' => $sortby, + 'compare' => 'NOT EXISTS', + ) + ); + + $this->query_args['orderby'] = array( $sortby . '_cs' => 'ASC', 'user_login' => 'ASC' ); + } else { if ( strstr( $sortby, '_desc' ) ) {