Support Forums

The forums are closed and will be removed when we launch our new site.

Looking for support? You can access the support system via your account.

Forums Forums Search Search Results for 'sf_edit_query_args'

Viewing 10 results - 191 through 200 (of 205 total)
  • Author
    Search Results
  • #41626

    Trevor
    Moderator

    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

    klox7
    Participant

    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


    Christopher Bessler
    Participant

    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


    Christopher Bessler
    Participant

    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
    [Resolved]

    Topic: Filter Query Args


    Christopher Bessler
    Participant

    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

    #28125

    Domen Rode
    Participant
    This reply has been marked as private.
Viewing 10 results - 191 through 200 (of 205 total)