-
AuthorSearch Results
-
May 19, 2019 at 10:26 pm #211667
RossKeymasterHi Michal
In regards to your original question, about prepending posts to the results array.
I don’t think it’s possible.
S&F uses a
WP_Query
which is the WP way of generating a query, with the results as valid post objects.There are no WP_Query params that we can use (in our
sf_edit_query_args
filters, which is basically a filter forWP_Query
args) to do this.The only way I could see you doing it, is in your results template.
You could run a query for the posts you want, and then combine it with the results from S&F.
I’m afraid achieving this specifically would be out of scope of support, but the above would be the general logic.
You also mentioned being able to do this only when a specific taxonomy is selected, and that can be done with the info from your second question:
You wanted to get the IDs of the terms.
If you use
get_array
instead ofget_field_string
you’ll see that taxonomies have IDs as well as slug and label – https://searchandfilter.com/documentation/accessing-search-data/#getan-array-offilterswithvalues-and-labels.I hope the above is clear!
Thanks
May 10, 2019 at 8:04 am #210688
AnonymousInactiveThank you. So stick this in the theme functions, set to the correct form ID and add the same args per my wp_query. So I have ended up with:
function filter_function_name( $query_args, $sfid ) { //if search form ID = 225, the do something with this query if($sfid == 4672) { //modify $query_args here before returning it $query_args['numberposts'] = -1; $query_args['posts_per_page'] = 25; $query_args['post_type'] = 'product'; $query_args['post_status'] = 'publish'; $query_args['meta_key'] = 'special_offer'; $query_args['meta_value'] = true; } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
I have left the rest of the settings as per my last message (including the wp_query on the special_offers template where I am displaying the products). When I view the page the filters are not populating as expected, I should be seeing options for colour and size but I just see one colour option, which when I apply renders no results.
Am I doing something else wrong here?
April 4, 2019 at 11:50 pm #207594In reply to: Including taxonomies
AnonymousInactiveThanks Trevor.
I managed to get it working with this:
function filter_aus_library ( $query_args, $sfid ) { //if search form ID = 225, the do something with this query if($sfid==14334) { //modify $query_args here before returning it $query_args['tax_query'] = array( 'relation' => 'OR', array( 'taxonomy' => 'library_country', 'terms' => '1497', ), array( 'taxonomy' => 'library_author', 'terms' => '2192', ) ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_aus_library', 20, 2 );
April 4, 2019 at 1:00 pm #207512In reply to: Changing the Deafult order
AnonymousInactiveOk,
I added the next code to function.php
function filter_function_name( $query_args, $sfid ) { //if search form ID = 225, the do something with this query if($sfid==6178) { //modify $query_args here before returning it $query_args['orderby'] = 'post_views'; } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 10, 2 );
But now if I use the filter it is only showing 2 downloads:
https://www.dl-sounds.com/member/downloads/?sort_order=name+asc&_sfm_bpm=0+1000without the filter it is working:
https://www.dl-sounds.com/member/downloadsI must be doing something wrong?
April 2, 2019 at 3:14 am #207161In reply to: No Results – DateTime Range
AnonymousInactiveYes, and the element was removed, but it had no effect on the query. It still processed it as if the element was in the query.
So I had to work around it by unsetting the element that was set in the $_GET variable. It works for now, but I was sure it would have been straight forward using the sf_edit_query_args function.
April 1, 2019 at 4:13 pm #207114In reply to: how to exclude past events from search result?
TrevorParticipantI think by custom coding and using our https://searchandfilter.com/documentation/action-filter-reference/#edit-query-arguments filter. I cannot give you a snippet for this, but you might find one by searching this forum:
https://support.searchandfilter.com/forums/search/add_filter+sf_edit_query_args/
April 1, 2019 at 3:19 pm #207085In reply to: Query vars and results order don't match
AnonymousInactiveI commented out the function that used the
sf_edit_query_args
hook. Then I added the query set to my existingmodify_search_results_order
function that’s usingpre_get_posts
after all the query args I already set. For some reason it caused a fatal error regarding memory size. I thought maybe it was the syntax, so I changed it to$query->query_vars['search_filter_id'] = 493580;
and that seemed to cause endless looping with constant undefined index errors.Am I applying it correctly?
On my WP admin settings, I have the “Display Results” tab set where the method is “As an archive” and the template options are using a custom template, search.php. No slug set and no ajax.
Thanks.
March 30, 2019 at 2:56 pm #206995In reply to: No Results – DateTime Range
AnonymousInactiveWould it be possible to intercept the query and alter the query using sf_edit_query_args.
I would do something like this in that filter
$start = '2016-01-01 00:00:00'; $end = '2016-12-31 23:59:59'; $query_args['meta_key'] = '_audiotheme_gig_datetime'; $query_args['meta_query'] = array( 'key' => '_audiotheme_gig_datetime', 'value' => array( $start, $end ), 'compare' => 'BETWEEN', );
Ideally I just need to alter the query prior with my own arguments around a specific meta field.
March 29, 2019 at 5:05 pm #206932In reply to: Query vars and results order don't match
TrevorParticipantThe
sf_edit_query_args
hook will ignore anypost__in
(did you use 2 underscores in yours?) argument you pass, but sorting should work.Can you post up the actual code you are using (inside code back ticks)?
March 7, 2019 at 4:15 pm #204275In reply to: Set Default Radio box checked to different category
RossKeymasterOk, so what we did was simply update form field “defaults” but we didn’t update the query as well.
So what we need to do is, under the same conditions, restrict the query to that taxonomy term:
function filter_query_categories( $query_args, $sfid ) { //if search form ID = 252649, the do something with this query if($sfid==252649) { //if the marketplace taxonomy is not already in use / selected if(!isset($_GET['_sft_marketplace'])){ //modify $query_args here before returning it $query_args['tax_query'] = array( 'relation' => 'AND', array( 'taxonomy' => 'marketplace', 'field' => 'slug', 'terms' => array("best-wordpress-app-themes") //restrict it ) ); } } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_query_categories', 20, 2 );
That should just about do it.
Let me know how you get on.
Thanks
-
AuthorSearch Results