Forums Forums Search Search Results for 'sf_edit_query_args'

Viewing 10 results - 161 through 170 (of 175 total)
  • Author
    Search Results
  • #41634

    Ross
    Keymaster

    There shouldn’t be a custom query inside the filter itself, the filter is used to modify the arguments before they get passed to a query – the code should look like:

    function results_map_filter( $query_args, $sfid ) {
    	
    	//if search form ID = 1530, the do something with this query
    	if($sfid==1530)
    	{
    		//modify $query_args here before returning it
    		$query_args['posts_per_page'] = -1;
    	}
    	
    	return $query_args;
    }
    add_filter( 'sf_edit_query_args', 'results_map_filter', 10, 20 );

    Thanks

    #41626

    Trevor
    Participant

    I have no idea if your code is roughly correct, but it is not semantically correct.

    It would look like this to be correct from a PHP point of view, I think:

    <?php
    function results_map_filter( $results_map_args, $sfid ) {
      if($sfid==1530) {
        $results_map = get_posts( $results_map_args );
        if (have_posts() ) {
          $results_map_args = array(
            'post_type' => 'posttype',
            'posts_per_page' => -1,
            'post_status' => 'publish',
            'cache_results' => true,
            'no_found_rows' => true
          );
        }
        return $results_map_args;
      }
    add_filter( 'sf_edit_query_args', 'results_map_filter', 10, 2 );
    ?>

    You would use this in your child theme functions.php file, which should already have the opening PHP tag <?php, so you wouldn’t need that from the code, and it is NOT normal to close the PHP tags ?> at the end of the functions.php file as this can cause a site to crash.

    I could well be wrong with the code though.

    #41625

    Anonymous
    Inactive

    Can you please explain more. I have this code now but the number of results don’t change

    <?php function results_map_filter( $results_map_args, $sfid ) {
    if($sfid==1530) {
    $results_map_args = array(
    ‘post_type’ => ‘posttype’,
    ‘posts_per_page’ => -1,
    ‘post_status’ => ‘publish’,
    ‘cache_results’ => true,
    ‘no_found_rows’ => true
    );
    }
    return $results_map_args;
    }
    add_filter( ‘sf_edit_query_args’, ‘results_map_filter’, 10, 2 );
    $results_map = get_posts( $results_map_args );
    if (have_posts() ) :
    ?>

    #41395

    Ross
    Keymaster

    Hey Matt

    This is pretty tricky actually.

    Since the introduction of the cache, most queries are sent off to the cache DB, and they return a number of IDs… which are placed inside the post__in field in a query.

    So, I’m actually scratching my head as to how we could do this.

    There is a filter for modifying the query:

    http://www.designsandcode.com/documentation/search-filter-pro/action-filter-reference/#Edit_Query_Arguments

    add_filter( 'sf_edit_query_args', 'filter_function_name', 10, 2 );

    Which should be used like:

    function filter_function_name( $query_args, $sfid ) {
    	
    	//if search form ID = 225, the do something with this query
    	if($sfid==225)
    	{
    		//modify $query_args here before returning it
    		$query_args['post__in'] = array(1,2,3,4);
    	}
    	
    	return $query_args;
    }

    Which S&F also uses for setting up the query – and will probbably overeride this withe the results from the S&F cache.

    Try initializing hook much later (so S&F has finished with the post__in var):

    add_filter( 'sf_edit_query_args', 'filter_function_name', 10, 200 );

    Thanks

    #39398

    Ross
    Keymaster

    Hey Paul

    You don’t need to do this via query args – you can do all this via the posts tab.

    If it must be dynamic and via the query args, then its the same as when using the standard new WP_Query($args)

    https://www.designsandcode.com/documentation/search-filter-pro/action-filter-reference/#Edit_Query_Arguments

    So, to modify orderby you need this part of the WP docs:

    https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

    Updating the S&F filter example with the example from the WP site on order:

    $args = array(
    	'orderby' => 'title',
    	'order'   => 'DESC'
    );
    $query = new WP_Query( $args );

    Will update the filter like:

    function filter_function_name( $query_args, $sfid ) {
    	
    	//if search form ID = 225, the do something with this query
    	if($sfid==225)
    	{
    		//modify $query_args here before returning it
    		$query_args['orderby'] = 'title';
    		$query_args['order'] = 'DESC';
    		
    	}
    	
    	return $query_args;
    }
    add_filter( 'sf_edit_query_args', 'filter_function_name', 10, 2 );

    Thanks

    #38917

    In reply to: Search Box


    Ross
    Keymaster

    Hi there

    If you must edit the query best not to hack the plugin directly 😉

    Instead, you can use the filter sf_edit_query_args – which allows you to change any of the parameters that are passed to the query:

    https://www.designsandcode.com/documentation/search-filter-pro/action-filter-reference/#Edit_Query_Arguments

    If you lower the priority to say 20:

    add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );

    This will happen after S&F has setup the query.

    This means you should be able to access the object like:

    function filter_function_name( $query_args, $sfid ) {
    	
    	//if search form ID = 225, the do something with this query
    	if($sfid==225)
    	{
    		//modify $query_args here before returning it
                    
    		//here you can limit the length of 's' which is the search term
    		$query_args['s'] = "overwritten search term";
    	}
    	
    	return $query_args;
    }

    Thanks

    #37242

    In reply to: Filter Query Args


    Anonymous
    Inactive

    Ross,
    I just tested this and found that if I display results using the search.php then the filter can’t use the get_queried_object()->name; , but if I display results using the shortcode method within the same taxonomy template, the get_queried_object()->name; is usable for the query filter.

    Here’s what I currently have:

    function member_query_args( $query_args, $sfid ) {
    	
    	$current_member_category = get_queried_object()->name;
    	
      if($sfid==3906) {
    	 $query_args = array(
        'member-category' => $current_member_category
    	);
      }
      return $query_args;
    }
    
    add_filter( 'sf_edit_query_args', 'member_query_args', 10, 2 );
    #37151

    In reply to: Filter Query Args


    Anonymous
    Inactive

    OK,
    I’m able to get this to filter:

    function member_query_args( $query_args, $sfid ) {

    if($sfid==3906) {
    $query_args = array(
    ‘member-category’ => ‘hotels-motels’
    );
    }
    return $query_args;
    }

    How can I go about dynamically placing the value of member-category ?

    add_filter( ‘sf_edit_query_args’, ‘member_query_args’, 10, 2 );

    #37123

    Anonymous
    Inactive

    Hello Support,
    I’m trying to filter search results based on a taxonomy item. I’m trying to this code that I found in the forum, but I can’t get it to work even just using $query_args[‘order’] = ‘desc’;

    What am I doing wrong here? Below is the the code I’ve been trying.

    function sf_filter_query_args( $query_args, $sfid ) {

    if($sfid==3906) {
    $query_args[‘member-category’] = get_queried_object()->name;
    //$query_args[‘order’] = ‘desc’;
    }
    return $query_args;
    }

    add_filter( ‘sf_edit_query_args’, ‘sf_filter_query_args’, 10, 2 );

    #28855

    Ross
    Keymaster

    Hi Sergey

    Its just the same as the $args object you pass to a new WP_Query – so this link should provide you with the necessary options:

    https://codex.wordpress.org/Class_Reference/WP_Query

    To take their category example and apply it to the S&F filter:
    https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

    =

    <?php
    function sf_filter_query_args( $query_args, $sfid ) {
      
      //if search form ID = 225, the do something with this query
      if($sfid==225)
      {
      	//modify $query_args here before returning it
            //only show results within categories with these IDs
      	$query_args['cat'] = '2,6,17,38';
      }
      return $query_args;
    }
    add_filter( 'sf_edit_query_args', 'sf_filter_query_args', 10, 2 );
    ?>

    Thanks

Viewing 10 results - 161 through 170 (of 175 total)