-
AuthorSearch Results
-
November 5, 2020 at 8:19 am #265318
In reply to: list separated with coma as checkboxes on post meta
TrevorParticipantThe problem is that the data is not stored in the post meta table field as correctly serialized data (in the normal WordPress format), so, our cache building code sees it as one big term, rather than separate terms.
This post asked a similar question:
The sf_input_object_pre filter could only work if the values had been cached separately (in fact, chances are you would not have needed your code at all).
November 4, 2020 at 7:53 am #265214
AnonymousInactiveHi Trevor,
thanks for the link, but I’m not sure what I should do now.
I understand I have to enter the field name it concerns:function filter_function_name($input_object, $sfid) { if($input_object['name']=='_company_name') { //udpate this field before rendering } return $input_object; } add_filter('sf_input_object_pre', 'filter_function_name', 10, 2);
But beyond that, I don’t know how to trim it down to 10 and how to sort them by number. I went through the code on the github page that is referred to, but that doesn’t bring me further. Can you help me get this right?
November 2, 2020 at 12:18 pm #264919In reply to: Category order in dropdown menu
TrevorParticipantAs 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/
October 15, 2020 at 11:38 am #262980In reply to: Order of Search Options dropdown
TrevorParticipantIf 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/
October 9, 2020 at 2:22 am #262498
AnonymousInactiveWhile 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
October 6, 2020 at 2:02 pm #262072In reply to: Multipel Tags fields
TrevorParticipantI 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);
October 6, 2020 at 12:59 pm #262056In reply to: Multipel Tags fields
AnonymousInactiveHi 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);
October 6, 2020 at 11:34 am #262027In reply to: Multipel Tags fields
TrevorParticipantHi
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?
September 28, 2020 at 7:39 pm #261160In reply to: Reorder based on selection
TrevorParticipantThere 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.
September 25, 2020 at 10:57 am #260793In reply to: Pods Relationship Fields
RossKeymasterHi 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-nameLet me know how you get on.
Thanks
-
AuthorSearch Results