-
AuthorSearch Results
-
March 31, 2020 at 2:21 pm #238475
In reply to: Page Title For Search Results
TrevorParticipantSo, here is a search:
_sft_location=cotswolds
_sft_partysize=ten-guests
_sft_features=garden-patio,internetThe code I added was this (replace the 12345 with your form ID):
<div> <?php global $searchandfilter; $sf_current_query = $searchandfilter->get(12345)->current_query()->get_array(); $locations_filter = $sf_current_query["_sft_location"]["active_terms"][0]["name"]; if ( $locations_filter <> "") { echo '<div>Location: ' . $locations_filter . '</div>'; } $party_size_filter = $sf_current_query["_sft_partysize"]["active_terms"][0]["name"]; if ( $party_size_filter <> "") { echo '<div>Guests: ' . $party_size_filter . '</div>'; } $features_filter_array = $sf_current_query["_sft_features"]["active_terms"]; if ( $features_filter_array ) { echo '<div>Features: '; foreach($features_filter_array as $value) { $features_list .= $value["name"] . ", "; } echo rtrim($features_list, ", ") . '</div>'; } ?> </div>
March 20, 2020 at 1:07 pm #237362
RossKeymasterHi Sigurd
After scratching my head I managed to figure out the issue.
We perform our search outside of the regular
WP_Query
, so if you choose a category in our search form, WP doesn’t actually “know” its restrciting to a specific category, because our search does that, so WP appends the stick post…I’ve managed to come up with some code, that add the WP category to the
WP_Query
(even though our plugin has already restricted the posts to this category), but now WP also knows that at a category restriction is happening, and excludes the sticky:add_filter("sf_edit_query_args", "add_wp_category_to_query", 100, 2); function add_wp_category_to_query($query_args, $sfid){ //if($sfid == 1234){ //you can restrict this behaviour to a search form ID //get user category selection from the search form (ie, detect which categories have been selected) global $searchandfilter; $query_data = $searchandfilter->get($sfid)->current_query(); $query_data_array = $query_data->get_array(); if(isset($query_data_array['_sft_category'])){ $category_values = $query_data_array['_sft_category']['active_terms']; $current_category_ids = array(); //this will contain all the IDs of the categories that have been selected in the search form foreach($category_values as $category){ array_push($current_category_ids, $category['id']); } //restrict query to WP category $query_args['category__in'] = $current_category_ids; } //} return $query_args; }
As there may be some small overhead when implementing this code, you can uncomment the first
if(
line, and restrict this to a specific search form / query.I hope that makes sense & works!
Best
March 19, 2020 at 4:26 pm #237221
TrevorParticipantYou seem to have customised the results.php file, but it must have errors as it also shows ‘no results found’?
This post might help you with code for what you want:
That code is for _sft_category and the id number is wrong, so maybe this?
global $searchandfilter; $sf_current_query = $searchandfilter->get(3637)->current_query(); $sf_current_query_array = $searchandfilter->get(3637)->current_query()->get_array(); if ((!$sf_current_query->is_filtered())&&($sf_current_query->get_search_term()=="")) { echo '<div>No category selected.</div>'; } else { echo '<div>' . $sf_current_query_array["_sft_menucats"]["active_terms"][0]["value"] . '</div>'; echo '<div>' . $sf_current_query_array["_sft_menucats"]["active_terms"][0]["id"]. '</div>'; echo '<div>' . category_description($sf_current_query_array["_sft_menucats"]["active_terms"][0]["id"]). '</div>'; }
Otherwise, are you able to send me temporary WordPress admin logins (ones you should later delete or disable) for the site so that I can look at the setup? Please use a Private Reply.
March 17, 2020 at 3:16 pm #236976In reply to: Range Slider is getting triggered by default
AnonymousInactiveI tried to unset the slider using
sf_edit_query_args
, but it doesn’t clear the search results. It still keeps the slider query!This is what I have tried:
function filter_function_name( $query_args, $sfid ) { global $searchandfilter; $current_query = $searchandfilter->get(58376)->current_query()->get_array(); unset( $current_query['_sfm_LENGTH_KEY'] ); return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
But it doesn’t do anything! Posts are still being filtered with the slider query!
March 11, 2020 at 11:35 am #236248In reply to: Category description in search results
TrevorParticipantI added this code:
https://www.screencast.com/t/WYIjHhwBYb
This:
global $searchandfilter; $sf_current_query = $searchandfilter->get(332)->current_query(); $sf_current_query_array = $searchandfilter->get(332)->current_query()->get_array(); if ((!$sf_current_query->is_filtered())&&($sf_current_query->get_search_term()=="")) { echo '<div>No category selected.</div>'; } else { echo '<div>' . $sf_current_query_array["_sft_category"]["active_terms"][0]["value"] . '</div>'; echo '<div>' . $sf_current_query_array["_sft_category"]["active_terms"][0]["id"]. '</div>'; echo '<div>' . category_description($sf_current_query_array["_sft_category"]["active_terms"][0]["id"]). '</div>'; }
February 17, 2020 at 4:45 pm #234116In reply to: Search Term not showing on Custom Archive Page
TrevorParticipantIf you use this code you would get the whole array:
<?php global $searchandfilter; $sf_current_query = $searchandfilter->get(1902)->current_query()->get_array(); echo '<pre>',print_r($sf_current_query,true),'</pre>'; ?>
Then you can see what each is called and contains.
January 30, 2020 at 8:47 am #232565
TrevorParticipantTo fetch the search terms, the https://searchandfilter.com/documentation/accessing-search-data/ guide is basic but you can extend the idea to grab lots of other data. If you have other filters, then it becomes a little more complex, but I can give you links. This thread might help you:
https://support.searchandfilter.com/forums/topic/accessing-field-slug-on-search-results/
… and this search will give similar threads I think:
https://support.searchandfilter.com/forums/search/sf_current_query+get_array
Note, if you are using Ajax refreshing of the results, any PHP needs to be inside the Ajax Container, or it will not update.
You could temporarily use this code in your results template to display the full filter array so that you can work out the exact array part that holds the data you want:
<?php global $searchandfilter; $sf_current_query = $searchandfilter->get(1391)->current_query()->get_array(); echo '<pre>',print_r($sf_current_query,true),'</pre>'; ?>
Where the ID needs to match that of your form.
January 17, 2020 at 1:46 pm #231454In reply to: Check events pagination page number
TrevorParticipantDoes it appear if you edit the template and add this code:
$sf_current_query = $searchandfilter->get(334)->current_query(); echo '<pre>'; print_r($sf_current_query->get_array()); echo '</pre>';
(this will print an array to the page)
January 9, 2020 at 7:18 pm #230524In reply to: Problems with filtering custom post types/taxonomies
AnonymousInactiveThank you very much for your help, we finally got the plugin working! There is one issue remaining: The meta data of each search result is not displayed. We try to achieve something similar to this: http://opendata.ffe.de/?s=Solar
This is our current draft: http://opendata.ffe.de/searchfilter-test/
Using a short JS script, we were able to display the button, the symbol next to the title as well as the link to the category. However, we have had some trouble accessing the metadata via PHP. We followed the approach described here (https://searchandfilter.com/documentation/accessing-search-data/) and here (https://support.searchandfilter.com/forums/topic/accessing-field-slug-on-search-results/#post-169171), but the printed results array is empty. We already checked that our ID is correct. As described earlier, we are using Elementor Pro on our page.
global $searchandfilter;
$sf_current_query = $searchandfilter->get(362)->current_query()->get_array();
echo ‘',print_r($sf_current_query),'
‘;
How should we approach this?December 18, 2019 at 10:16 am #229325In reply to: Date range picker for ACF field
TrevorParticipantOur plugin send a list of matching ID’s to the WordPress database, having worked out which posts match the criteria, the the actual final query may not be of much use. It will send a query to our cache tables though. Query Monitor plugin should show you that. To get a breakdown of the actual filters in use, this code (you need to change the ID in this code – 1234 – to that of your form) will dump the array to the screen:
<?php global $searchandfilter; $sf_current_query = $searchandfilter->get(1234)->current_query()->get_array(); echo '<pre>',print_r($sf_current_query,true),'</pre>'; ?>
-
AuthorSearch Results