From 1402099dce8a8ef9cb47c9eba0de6034a0438267 Mon Sep 17 00:00:00 2001 From: champsupertramp Date: Thu, 21 Jul 2016 18:58:32 +0800 Subject: [PATCH] Fix search filters and multi-select fields --- core/um-fields.php | 8 +++++--- core/um-filters-members.php | 9 ++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/um-fields.php b/core/um-fields.php index 04c43ed0..ee6a0a3a 100644 --- a/core/um-fields.php +++ b/core/um-fields.php @@ -1641,10 +1641,13 @@ class UM_Fields { $output .= $this->field_label($label, $key, $data); } + $use_keyword = apply_filters('um_multiselect_option_value', 0, $data['type'] ); + $output .= '
'; - $output .= ''; + if ( isset($options) && $options == 'builtin'){ $options = $ultimatemember->builtin->get ( $filter ); } @@ -1662,8 +1665,7 @@ class UM_Fields { // add an empty option! $output .= ''; - $use_keyword = apply_filters('um_multiselect_option_value', 0, $data['type'] ); - + // add options foreach( $options as $k => $v ) { diff --git a/core/um-filters-members.php b/core/um-filters-members.php index 5233f0ee..4747ac6a 100644 --- a/core/um-filters-members.php +++ b/core/um-filters-members.php @@ -83,8 +83,14 @@ $operator = 'LIKE'; } - if ( in_array( $ultimatemember->fields->get_field_type( $field ), array('checkbox','multiselect') ) ) { + $arr_filter_field_types = array('checkbox','multiselect'); + $arr_field_types = apply_filters('um_search_filter_field_types', $arr_filter_field_types ); + + if ( in_array( $ultimatemember->fields->get_field_type( $field ), $arr_field_types ) ) { $operator = 'LIKE'; + if( ! empty( $value ) ){ + $value = serialize( strval( $value ) ); + } } if ( $value && $field != 'um_search' && $field != 'page_id' ) { @@ -117,6 +123,7 @@ if ( count ($query_args['meta_query']) == 1 ) { unset( $query_args['meta_query'] ); } + return $query_args; }