So I have a list of reference IDs (ACF Field for each post) in an array which I use in a meta_query to filter posts further after search and filter does its thing. This array contains post references in a specific order and the order I would like the posts to display.
Here is the query I am using:
‘paged’ => int 1
‘search_filter_id’ => int 47
‘search_filter_override’ => boolean false
‘posts_per_page’ => int 10
‘post_status’ =>
array (size=1)
0 => string ‘publish’ (length=7)
‘meta_query’ =>
array (size=1)
0 =>
array (size=3)
‘key’ => string ‘post_reference’ (length=13)
‘value’ => ARRAY OF POST REFS HERE
‘compare’ => string ‘IN’ (length=2)
‘post_type’ => string ‘custom_post’ (length=8)
‘orderby’ => string ‘meta_value’ (length=10)`
Now obviously we can’t override post__in which would be ideal as I can pass an aray of post IDS rather than references, is there no way whatsoever we can do this?
I tried to order by the meta_value which is the array of post refs, but it just orders them alphabetically rather than in the order they are in the given in the array.
Can you think of a way I can work with SAFP to get this working correctly?
I’m having some trouble editing the search query. I’m using the plugin alongside Relevanssi and want results to be sorted by relevance as well as post_date or modified date. I tried adding this to the functions file
function filter_function_name( $query_args, $sfid ) {
//if search form ID = 225, the do something with this query
if($sfid==5671)
{
//modify $query_args here before returning it
$query_args['orderby'] = 'post_date';
}
return $query_args;
}
add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
So I’ve found a better way to do this (that can be search form specific).
The code in full (so remove everything else we’ve added:
function filter_input_object_radio($input_object, $sfid){
if(($input_object['name']!='_sf_post_type')||($input_object['type']!='radio'))
{
return $input_object;
}
if(isset($input_object['options'])){
//remove the first option from the array
$removed_option = array_shift($input_object['options']);
}
//now set the default value in the field
//make sure we only modify a field belonging to a specific Search Form, by ID
if($sfid==15485){ //replace 15485 with your search form ID
//make sure the field is not set
if(!isset($_GET['post_types'])){
//then set it to "post"
$input_object['defaults'] = array("post");
}
}
return $input_object;
}
add_filter('sf_input_object_pre', 'filter_input_object_radio', 10, 2);
function set_default_post_type_query( $query_args, $sfid ) {
//if search form ID = 225, the do something with this query
if($sfid==15485) //replace 15485 with your search form ID
{
//modify $query_args here before returning it
if(!isset($_GET['post_types'])){
$query_args['post_type'] = 'post';
}
}
return $query_args;
}
add_filter( 'sf_edit_query_args', 'set_default_post_type_query', 20, 2 );
The only thing you have to replace is the search form ID of 15485 (there are 2 instances of this) – swap this out to match the ID of the search form on the homepage and it should work 🙂
What Trevor says is correct, you can use our filter sf_edit_query_args to restrict the results to certain categories or taxonomies, or exclude them, for example.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
We also use cookies to store items in your cart as well as allowing your to login on the site.
You can adjust all of your cookie settings by navigating the tabs on the left hand side.
By continuing to use this site, you also agree to our Privacy Policy.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
*Other cookies used for logging in and cart functions will only be used when you use those features and cannot be disabled.
If you disable these cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
3rd Party Cookies
This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.
Keeping this cookie enabled helps us to improve our website.
Please enable Strictly Necessary Cookies first so that we can save your preferences!