Forums Forums Search Search Results for 'sf_input_object_pre function'

Viewing 10 results - 21 through 30 (of 106 total)
  • Author
    Search Results
  • #264919

    Trevor
    Participant

    As this is a Taxonomy/Category/Tag field, then you will need to code a solution. You can use this filter in your child theme’s functions.php file:

    https://searchandfilter.com/documentation/action-filter-reference/#filter-input-object

    To re-order the terms in the field.

    I am not sure if it will help, but if there are many snippets already in the forum, this forum search should find them:

    https://support.searchandfilter.com/forums/search/sf_input_object_pre+function+order/

    #262980

    Trevor
    Participant

    If it is a Post Meta field, then you can set the source to Manual and drag and drop them. If it is a Taxonomy, then you will need to code a solution. You can use this filter in your child theme’s functions.php file:

    https://searchandfilter.com/documentation/action-filter-reference/#filter-input-object

    To re-order the terms in the field.

    I am not sure if it will help, but if there are many snippets already in the forum, this forum search should find them:

    https://support.searchandfilter.com/forums/search/sf_input_object_pre+function+order/


    Anonymous
    Inactive

    While this thread is a few months old, here is the code for my solution used for a current project. The code below gets the terms for the taxonomy called ‘commodity_codes’ and then updates the Search and Filter field ‘_sft_commodity_codes’ in my search forms by leaving the value intact for the query and simply updating the label to be a concatenation of the term name and the first 21 characters of the description with camel casing.

    Thanks to the gist here: https://gist.github.com/rmorse/7b59b45a14b1ca179868

    function filter_function_name($input_object, $sfid)
    {
    	if($input_object['name']=='_sft_commodity_codes')
    	{
    		//if we want to filter the options generated, we need to make sure the options variable actually exists before proceeding (its only available to certain field types)
    		if(!isset($input_object['options']))
    		{
    			return $input_object;
    		}
    		
    		//get the terms for the taxonomy
    		$terms = get_terms('commodity_codes');
    		
    		//now we know there are options we can loop through each one, and change what we need
    		foreach($input_object['options'] as $option)
    		{
    			foreach($terms as $term)
    			{
    				if($term->name==$option->value)
    				{//we want to change the label for the option "black" - we can feed back in the count number to the label for this field type
    					$option->label = $term->name . ' : ' . ucwords(substr($term->description,0,21));
    				}
    			}
    		}
    	}
    	
    	return $input_object;
    }
    add_filter('sf_input_object_pre', 'filter_function_name', 10, 2);

    Hope this helps others.

    — Tom @NPCrowd : https://npcrowd.com

    #262072

    In reply to: Multipel Tags fields


    Trevor
    Participant

    I think it should be this:

    //Search & filters hook
    
    function update_range_field_mileage($input_object, $sfid)
    {
    //make sure we affect the '_sfm_standby_power_esp_kvs_nr' field only
    if($input_object['name']=='_sfm_standby_power_esp_kvs_nr' && $sfid==1893)
    {
    //udpate this field before rendering
    //all the options are stored in $input_object['options'] as an array
    $new_options = array();
    
    //create a new "default" option
    $new_option = new StdClass();
    $new_option->value = "";
    $new_option->label = "kVA";
    array_push($new_options, $new_option);
    
    //create a new range option we want to add
    $new_option = new StdClass();
    $new_option->value = "10+50"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "10 – 50"; //the label can be anything
    array_push($new_options, $new_option);//create a new range option we want to add
    
    $new_option = new StdClass();
    $new_option->value = "51+200"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "51 – 200"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "201+400"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "201 – 400"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "401+700"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "401 – 700"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "701+1500"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "701 – 1500"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "1501+2500"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "1501 – 2500"; //the label can be anything
    array_push($new_options, $new_option);
    
    //now replace the options with our own custom options:
    $input_object['options'] = $new_options;
    }
    
    return $input_object;
    }
    add_filter('sf_input_object_pre', 'update_range_field_mileage', 10, 2);
    #262056

    In reply to: Multipel Tags fields


    Anonymous
    Inactive

    Hi Trevor

    Thanks.

    Can you just check if it is done correctly with form id if($sfid==1893)

    Thanks

    //Search & filters hook
    
    function update_range_field_mileage($input_object, $sfid)
    {
    //make sure we affect the '_sfm_standby_power_esp_kvs_nr' field only
    if($input_object['name']=='_sfm_standby_power_esp_kvs_nr')
    
    if($sfid==1893)
    {
    //udpate this field before rendering
    //all the options are stored in $input_object['options'] as an array
    $new_options = array();
    
    //create a new "default" option
    $new_option = new StdClass();
    $new_option->value = "";
    $new_option->label = "kVA";
    array_push($new_options, $new_option);
    
    //create a new range option we want to add
    $new_option = new StdClass();
    $new_option->value = "10+50"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "10 – 50"; //the label can be anything
    array_push($new_options, $new_option);//create a new range option we want to add
    
    $new_option = new StdClass();
    $new_option->value = "51+200"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "51 – 200"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "201+400"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "201 – 400"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "401+700"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "401 – 700"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "701+1500"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "701 – 1500"; //the label can be anything
    array_push($new_options, $new_option);
    
    $new_option = new StdClass();
    $new_option->value = "1501+2500"; //this is the value that goes in the URL, which affects the query
    $new_option->label = "1501 – 2500"; //the label can be anything
    array_push($new_options, $new_option);
    
    //now replace the options with our own custom options:
    $input_object['options'] = $new_options;
    }
    
    return $input_object;
    }
    add_filter('sf_input_object_pre', 'update_range_field_mileage', 10, 2);
    #262027

    In reply to: Multipel Tags fields


    Trevor
    Participant

    Hi

    Great to speak with you Sasha. The link for the main function was this:

    https://support.searchandfilter.com/forums/topic/range-overlap/#post-231607

    Testing the form id would make it look like this:

    function update_range_field_mileage($input_object, $sfid)
    {
    	//make sure we affect the '_sfm_mileage' field only, and only in form ID 12345
    	if( $sfid == 12345 && $input_object['name']=='_sfm_mileage' )
    	{
    		//udpate this field before rendering
    		//all the options are stored in <code>$input_object['options']</code> as an array
    		$new_options = array();
    		
    		//create a new "default" option
    		$new_option = new StdClass();
    		$new_option->value = "";
    		$new_option->label = "KM Stand";
    		array_push($new_options, $new_option);
    		
    		//create a new range option we want to add
    		$new_option = new StdClass();
    		$new_option->value = "0+49999"; //this is the value that goes in the URL, which affects the query
    		$new_option->label = "0 - 49999"; //the label can be anything
    		array_push($new_options, $new_option);//create a new range option we want to add
    		
    		$new_option = new StdClass();
    		$new_option->value = "50000+99999"; //this is the value that goes in the URL, which affects the query
    		$new_option->label = "50000 - 99999"; //the label can be anything
    		array_push($new_options, $new_option);
    		
    		$new_option = new StdClass();
    		$new_option->value = "100000+150000"; //this is the value that goes in the URL, which affects the query
    		$new_option->label = "100000 - 150000"; //the label can be anything
    		array_push($new_options, $new_option);
    		
    		
    		//now replace the options with our own custom options:
    		$input_object['options'] = $new_options;
    	}
    	
    	return $input_object;
    }
    add_filter('sf_input_object_pre', 'update_range_field_mileage', 10, 2);

    Do let me know how you get on?

    #261160

    Trevor
    Participant

    There ARE some shared snippets on the forum. Try this search:

    https://support.searchandfilter.com/forums/search/sf_input_object_pre+function+order/

    If you produce something, but it doesn’t quite work, by all means share the code for us to take a look at. Custom coding doesn’t really fall within the scope of our support, but we will help where we can.

    #260793

    Ross
    Keymaster

    Hi Sunny

    You can replace the ID’s, by post title, by adding this to functions.php:

    
    function filter_input_object($input_object, $sfid) {
    	
    	if(($input_object['name'] == '_sfm_podsrelationship')) {
    		
    		foreach($input_object['options'] as $option) {
    			$option->label = get_the_title($option->value);
    		}
    		
    		return $input_object;
    	}
    	else {
    		
    		return $input_object;
    	}
    }
    add_filter('sf_input_object_pre', 'filter_input_object', 10, 2);

    Make sure to change the name of the field to match yours:
    _sfm_podsrelationship

    To find your field name, just check the URL when you do a search:
    https://searchandfilter.com/documentation/accessing-search-data/?sfref=dc#how-to-get-the-field-name

    Let me know how you get on.

    Thanks

    #260434

    In reply to: Default value select


    Anonymous
    Inactive

    i`m using unset to delete first two option values but i need it to be default, how to do this?? thanks

    function filter_function_name($input_object, $sfid)
    {
    if($input_object[‘name’]==’_sft_tax_news’)
    {
    /*foreach($input_object[‘options’] as $option)
    {
    if($option->value==”maironio-lietuviu-literaturos-muziejus”)
    {
    $option->label = “AAA”;
    $option->attributes[‘class’] = “sf-option-active”;
    $option->attributes[‘selected’] = “selected”;
    }
    }*/
    unset($input_object[‘options’][0]);
    unset($input_object[‘options’][1]);
    return $input_object;
    //udpate this field before rendering
    }
    else{
    echo “NOOO!”;
    return $input_object;
    }
    }
    add_filter(‘sf_input_object_pre’, ‘filter_function_name’, 10, 2);

    filter_function_name(array(‘name’ => ‘_sft_tax_news’),17402);

    #260342

    Trevor
    Participant

    You can use this filter in your child theme’s functions.php file:

    https://searchandfilter.com/documentation/action-filter-reference/#filter-input-object

    To re-order the terms in that field.

    I am not sure if it will help, but if there are any snippets already in the forum, this forum search should find them:

    https://support.searchandfilter.com/forums/search/sf_input_object_pre+function+order/

Viewing 10 results - 21 through 30 (of 106 total)