-
AuthorSearch Results
-
August 16, 2019 at 2:05 pm #219135
RossKeymasterHi Thomas
So I’ve found a better way to do this (that can be search form specific).
The code in full (so remove everything else we’ve added:
function filter_input_object_radio($input_object, $sfid){ if(($input_object['name']!='_sf_post_type')||($input_object['type']!='radio')) { return $input_object; } if(isset($input_object['options'])){ //remove the first option from the array $removed_option = array_shift($input_object['options']); } //now set the default value in the field //make sure we only modify a field belonging to a specific Search Form, by ID if($sfid==15485){ //replace 15485 with your search form ID //make sure the field is not set if(!isset($_GET['post_types'])){ //then set it to "post" $input_object['defaults'] = array("post"); } } return $input_object; } add_filter('sf_input_object_pre', 'filter_input_object_radio', 10, 2); function set_default_post_type_query( $query_args, $sfid ) { //if search form ID = 225, the do something with this query if($sfid==15485) //replace 15485 with your search form ID { //modify $query_args here before returning it if(!isset($_GET['post_types'])){ $query_args['post_type'] = 'post'; } } return $query_args; } add_filter( 'sf_edit_query_args', 'set_default_post_type_query', 20, 2 );
The only thing you have to replace is the search form ID of
15485
(there are 2 instances of this) – swap this out to match the ID of the search form on the homepage and it should work 🙂Best
August 1, 2019 at 4:19 pm #217825In reply to: Filter by meta_query custom field
AnonymousInactiveI am using the same filter to modify the main shop search too. This one works fine:
function update_search_category( $query_args, $sfid ) { $query_args['tax_query'] = array( array( 'taxonomy' => 'product_cat', 'terms' => '20', 'operator' => 'IN', ), ); return $query_args; } add_filter( 'sf_edit_query_args', __NAMESPACE__.'\\update_search_category', 20, 2 );
August 1, 2019 at 4:02 pm #217813In reply to: Filter by meta_query custom field
TrevorParticipantWhy is this:
add_filter( 'sf_edit_query_args', __NAMESPACE__.'\\user_liked_products_search_filter', 100, 2 );
Not this:
add_filter( 'sf_edit_query_args', 'user_liked_products_search_filter', 100, 2 );
August 1, 2019 at 11:31 am #217760In reply to: Search options not working with ACF
AnonymousInactiveTrevor – Question regarding your notes on selecting the correct ACF meta key:
https://support.searchandfilter.com/forums/topic/search-options-not-working-with-acf/#post-217575In our Post Meta form object Meta Key selection list, you need to use key #3
Should we also be using the non underscore keys when we’re modifying the query via
sf_edit_query_args
too?July 31, 2019 at 4:36 pm #217706In reply to: Filter by meta_query custom field
AnonymousInactiveYes it is a function, I was just showing you only the parts which you needed to see, here is it all:
/** * USER PROFILE - Modify search form args */ function user_liked_products_search_filter( $query_args, $sfid ) { if ( $sfid == 26 ) { $query_args = array ( 'meta_query' => array( array( 'key' => '_likes', 'value' => 1, ), ), ); } return $query_args; } add_filter( 'sf_edit_query_args', __NAMESPACE__.'\\user_liked_products_search_filter', 100, 2 );
June 27, 2019 at 9:31 pm #215163In reply to: I'd like to exclude specific items
RossKeymasterHi Kie
What Trevor says is correct, you can use our filter
sf_edit_query_args
to restrict the results to certain categories or taxonomies, or exclude them, for example.Let us know how you get on.
Thanks
June 27, 2019 at 4:32 pm #215143
TrevorParticipantI think you will need to use this filter (the code goes in to your child theme functions.php file):
https://searchandfilter.com/documentation/action-filter-reference/#edit-query-arguments
Like this:
function exclude_password_protected_posts( $query_args, $sfid ) { if($sfid==225) { $query_args['has_password'] = FALSE; } return $query_args; } add_filter( 'sf_edit_query_args', 'exclude_password_protected_posts', 20, 2 );
where you need to change the ID number (in the example it is 225, so use the ID number of your form).
June 9, 2019 at 9:47 pm #213628In reply to: Amending WP_Query for a form with a dynamic variable
AnonymousInactiveTJ, another quick example maybe to help:
function filter_function_name( $query_args, $sfid ) { if($sfid==2978) { global $arr_product_ids; $query_args['tax_query'] = array( array( 'key' => 'post_product', 'value' => $arr_product_ids, 'compare' => 'IN', ), ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
June 9, 2019 at 9:44 pm #213626In reply to: Amending WP_Query for a form with a dynamic variable
AnonymousInactiveHi TJ,
On your second example, did you try adding:
global $arr_product_ids
within the function too? Your trying to use $arr_product_ids variable.function filter_function_name( $query_args, $sfid ) { if($sfid==2978) { global $arr_product_ids; $query_args['post_product'] = $arr_product_ids; } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
May 25, 2019 at 9:47 am #212527In reply to: Pagination not working for custom results
AnonymousInactiveTo be honest I am not sure how to create that function – it’s a bit beyond my abilities.
I tried this, but it made the search form stop working.
function filter_function_name( $query_args, $sfid ) {//if search form ID = 225, the do something with this query
if($sfid==26869)
{
//modify $query_args here before returning it$query_args[‘post_type’] = array( ‘practitioners’ );
}return $query_args;
}
add_filter( ‘sf_edit_query_args’, ‘filter_function_name’, 20, 2 );Just to simply matters, I have removed all the functions.php code altogether for the time being. As you will see on the page, the pagination does not seem to work with the search form on the page. When I put in a manual pagination link of https://staging-universallifetools.kinsta.cloud/our-teachers/page/2 it works, but the actual pagination buttons do not seem to do anything, just refresh the page.
-
AuthorSearch Results