From c95490660f0a51356a7b4f80733218570e90115d Mon Sep 17 00:00:00 2001 From: "Jorge vitrubio.net" Date: Wed, 15 May 2024 09:13:16 +0200 Subject: [PATCH] changed associat search to OR instead of AND --- includes/custom-field-associats-filter.php | 35 ++++++++++------------ 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/includes/custom-field-associats-filter.php b/includes/custom-field-associats-filter.php index ebc7520..5a95d03 100644 --- a/includes/custom-field-associats-filter.php +++ b/includes/custom-field-associats-filter.php @@ -38,8 +38,8 @@ if ( ! function_exists( 'my_pre_get_posts_associats' ) ){ // bail early if not main query or plugin $the_query_associat // - allows custom code / plugins to continue working if( !$query->is_main_query() ) return; - - + $query->set( 'posts_per_page', -1); + //$query->set( 'relation', 'AND'); // loop over filters foreach( $GLOBALS['my_query_filters_associat'] as $key => $fieldname) @@ -48,36 +48,31 @@ if ( ! function_exists( 'my_pre_get_posts_associats' ) ){ if( empty($_GET[ $fieldname ]) ) { continue; } // get original meta query - $meta_query = []; + $meta_query = []; //avoids infinite nesting $meta_query[] = $query->get('meta_query'); - $meta_query[] = array('relation' => 'OR'); // get the values for this filter // eg: http://domain.tdl/associat/?xxp_associat_target=autonoma,entitat-publica $filtervalues= explode(',', $_GET[ $fieldname ]); - // loop retreived values from checkboxes and filter them with REGEXP - // http://domain.tdl/associat/?xxp_associat_target=autonoma&xxp_associat_field=circi - // http://domain.tdl/associat/?xxp_associat_target=autonoma,entitat-publica&xxp_associat_field=dansa + // loop retreived values from checkboxes and filter them foreach( $filtervalues as $filteredvalue ) { - // they are array based fields - // https://barn2.com/blog/querying-posts-by-custom-field-acf/#array-based-fields - $strippedvalue = sprintf( '^%1$s$|s:%2$u:"%1$s";', $filteredvalue, strlen( $filteredvalue ) ); - - // add our meta query to the original meta queries + + // add our meta query to the original meta queries + $meta_query['relation'] = 'OR'; $meta_query[] = array( - array( - 'key' => $fieldname, - 'value' => $strippedvalue, - 'compare' => 'REGEXP', - ), + 'key' => $fieldname, + 'value' => $filteredvalue, + 'compare' => 'LIKE' ); } - // update the meta query arguments - $query->set('meta_query', $meta_query); + // update the meta query arguments + $query->set('meta_query', $meta_query); + //$query->set('relation', 'AND'); } - + //echo '
' . var_export($query, true) . '
'; + //echo '
' . print_r($query,true) . '
'; //always return return; }