diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index d011e526..916df06c 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -356,7 +356,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_slug}{$i} ON {$join_slug}{$i}.user_id = u.ID"; - $this->where_clauses[] = $wpdb->prepare( "( {$join_slug}{$i}.um_key = 'birth_date' AND {$join_slug}{$i}.um_value BETWEEN %s AND %s )", $from_date, $to_date ); + $this->where_clauses[] = $wpdb->prepare( "( {$join_slug}{$i}.um_key = 'birth_date' AND {$join_slug}{$i}.um_value BETWEEN %s AND %s )", $to_date, $from_date ); if ( ! $is_default ) { $this->custom_filters_in_query[ $field ] = array( $to_date, $from_date ); @@ -719,13 +719,6 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { global $wpdb; - /*var_dump( "SELECT SQL_CALC_FOUND_ROWS DISTINCT u.ID - FROM {$wpdb->users} AS u - {$sql_join} - WHERE 1=1 {$sql_where} - {$this->sql_order} - {$this->sql_limit}" );*/ - $user_ids = $wpdb->get_col( "SELECT SQL_CALC_FOUND_ROWS DISTINCT u.ID FROM {$wpdb->users} AS u diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 98bd1bd4..69084324 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -780,12 +780,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } case 'birth_date': { global $wpdb; - $meta = $wpdb->get_col( "SELECT DISTINCT meta_value FROM {$wpdb->usermeta} WHERE meta_key='birth_date' ORDER BY meta_value DESC" ); + $meta = $wpdb->get_row( "SELECT MIN( meta_value ) as min_meta, MAX( meta_value ) as max_meta, COUNT( DISTINCT meta_value ) as amount FROM {$wpdb->usermeta} WHERE meta_key='birth_date'", ARRAY_A ); - if ( empty( $meta ) || count( $meta ) === 1 ) { + if ( empty( $meta ) || ! isset( $meta['amount'] ) || $meta['amount'] === 1 ) { $range = false; - } elseif ( ! empty( $meta ) ) { - $range = array( $this->borndate( strtotime( $meta[0] ) ), $this->borndate( strtotime( $meta[ count( $meta ) - 1 ] ) ) ); + } elseif ( ! empty( $meta['min_meta'] ) && ! empty( $meta['max_meta'] ) ) { + $range = array( $this->borndate( strtotime( $meta['max_meta'] ) ), $this->borndate( strtotime( $meta['min_meta'] ) ) ); } break;