-
AuthorSearch Results
-
September 18, 2023 at 9:27 am #276863
AnonymousInactiveHowdy Trevor!
Instead of a range date picker, we’re gonna go with only one date picker.
The thing is we need to query from that date in advance, so we did with this code.
function filter_query_args( $query_args, $sfid ) { // Trainings Form ID. if( 1788 === $sfid && ! empty( $_GET['_sfm_start_date'] ) ) { $year = substr( $_GET['_sfm_start_date'], 4, 4 ); $month = substr( $_GET['_sfm_start_date'], 2, 2 ); $day = substr( $_GET['_sfm_start_date'], 0, 2 ); $fdate = $year . $month . $day; $query_args['posts_per_page'] = -1; $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'start_date'; $query_args['meta_value'] = $fdate; $query_args['meta_compare'] = '>='; $query_args['meta_query'] = [[ 'key' => 'start_date', 'value' => $fdate, 'compare' => '>', ]]; /*$q = new WP_Query( $query_args ); print '<pre><br><br>'; //print $fdate . '<br>'; print count( $q->posts ) . '<br>'; //print_r( $query_args ); //print_r( new WP_Query( $query_args ) ); foreach( $q->posts as $p ) print get_post_meta( $p->ID, 'start_date', true ) . ' : ' . $p->post_title . '<br>'; print '</pre>';*/ } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_query_args', 99, 2 );
We’ve modified the query correctly, or that says the debug (as you can see commented in the code). The data is there, but somehow the results are not showing.
Any hints? Thanks in advance.
February 9, 2021 at 4:52 pm #275584In reply to: Editing query arguments
AnonymousInactiveSure. So I want the results here to display the same as the taxonomy archive page.
Here is the pre_get_post that results in the taxonomy archive page.
// Order posts first by event and date, then by other kinds of content function order_events_by_event_date($query=false) { // only used on main query on front end of site if (is_admin() || !$query || !$query->is_main_query()) { return; } // modfiy a custom post type to show and order by meta value if (is_tax() || is_archive() ) { $query->set('orderby', array( 'meta_value' => 'DESC' ) ); $query->set('order', 'ASC'); $query->set('posts_per_page', -1); $meta_query = array( 'relation' => 'OR', array( 'key' => 'expired', 'compare' => 'NOT EXISTS', ), array( 'relation' => 'OR', array( 'key' => 'expired', 'value' => '0', ), array( 'key' => 'expired', 'value' => '1', 'compare' => '!=', ), ), ); $query->set('meta_query', $meta_query); } } // end function blunt_pre_get_posts add_action('pre_get_posts', 'order_events_by_event_date');
The nested array is necessary to include the “experiences” post type (first OR) and the array beneath it includes items that are not expired or field expired is empty.
I changed it using the code you provided above, removing the is_tax and first qualifiers about queries, and got the results posted above.
Only thing that seems to semi-sort the results is the sfid filter, so what is displaying results now is
function exclude_expired_results ( $query_args, $sfid ) { //if search form ID = 3988, the do something with this query if($sfid==3988) { //modify $query_args here before returning it $query_args['meta_query'] = array( 'orderby' => array( 'meta_value' => 'DESC' ), 'order' => 'ASC', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'expired', 'compare' => 'NOT EXISTS', ), array( 'relation' => 'OR', array( 'key' => 'expired', 'value' => '0', ), array( 'key' => 'expired', 'value' => '1', 'compare' => '!=', ), ), ), ); // end meta_query addtion to arg } return $query_args; } add_filter( 'sf_edit_query_args', 'exclude_expired_results', 20, 2 );
sfid is 3988. Thank you for any help.
September 14, 2020 at 4:54 pm #259361In reply to: Filter custom query with meta_query
TrevorParticipantOrdering is (normally) handled within our plugin, so any query arguments you set for ordering may be ignored/overridden. Instead, you would need to add them using this filter:
https://searchandfilter.com/documentation/action-filter-reference/#edit-query-arguments
I am not sure if that would work, but this forum search should yield some code snippets:
https://support.searchandfilter.com/forums/search/orderby+function+sf_edit_query_args/
August 24, 2020 at 9:25 am #257057In reply to: Multiple POST META Conditions
AnonymousInactive<?php
if ( ! defined( ‘ABSPATH’ ) ) { exit; }if ( ! isset( $content_width ) ) $content_width = 1280;
function skelementor_init() {
add_theme_support( ‘title-tag’ );
add_theme_support( ‘post-thumbnails’ );
add_theme_support( ‘automatic-feed-links’ );
add_theme_support( ‘title-tag’ );
add_theme_support( ‘html5’, array( ‘search-form’, ‘comment-form’, ‘comment-list’, ‘gallery’, ‘caption’ ) );
add_theme_support( ‘custom-logo’, array(
‘width’ => 260,
‘height’ => 100,
‘flex-height’ => true,
‘flex-width’ => true,
) );
add_theme_support( ‘custom-header’ );
add_theme_support( ‘woocommerce’ );
add_post_type_support( ‘page’, ‘excerpt’ );register_nav_menus(
array( ‘main-menu’ => __( ‘Main Menu’, ‘skelementor’ ) )
);load_theme_textdomain( ‘skelementor’, get_template_directory() . ‘/languages’ );
}
add_action( ‘after_setup_theme’, ‘skelementor_init’ );function skelementor_comment_reply() {
if ( get_option( ‘thread_comments’ ) ) { wp_enqueue_script( ‘comment-reply’ ); }
}
add_action( ‘comment_form_before’, ‘skelementor_comment_reply’ );function skelementor_scripts_styles() {
wp_enqueue_style( ‘skelementor-style’, get_stylesheet_uri() );
}
add_action( ‘wp_enqueue_scripts’, ‘skelementor_scripts_styles’ );function skelementor_register_elementor_locations( $elementor_theme_manager ) {
$elementor_theme_manager->register_all_core_location();
};
add_action( ‘elementor/theme/register_locations’, ‘skelementor_register_elementor_locations’ );function price_range_on_save( $post_id ) {
$post_type = ‘share’; //custom post type for events//Check if we are saving correct post type
if( get_post_type( $post_id ) != $post_type)
return;//Check it’s not an auto save routine
if( defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE )
return;// get the price of the post. This assumes that the price is a number and has no currency symbol or thousands separator
$post_price = get_post_field (‘price’, $post_id);
// set an empty default string
$post_price_text = “”;
// set the price text label to match the price
if ($post_price) {
switch($post_price) {
case ( $post_price <= 100 ):
$post_price_text = “0-100 kr”;
break;
case ( ($post_price > 100) && ($post_price <= 250) ):
$post_price_text = “101-250 kr”;
break;
default:
$post_price_text = “250 kr and up”;
}
}// update the price choice
update_field( ‘post_price_text’, $post_price_text );
}
add_action(‘save_post’, ‘price_range_on_save’);/////////
$roots_includes = array(
‘lib/extras.php’,
‘lib/scripts.php’,
‘lib/ajax.php’,
‘lib/post-types.php’,
‘lib/init.php’,
‘lib/utilities.php’,
‘lib/acf.php’,
// ‘lib/custom-fields.php’,
// ‘lib/custom-fields/category.php’,
// ‘lib/custom-fields/footer.php’,
// ‘lib/custom-fields/post.php’,
);foreach ($roots_includes as $file) {
if (!$filepath = locate_template($file)) {
trigger_error(sprintf(__(‘Error locating %s for inclusion’, ‘roots’), $file), E_USER_ERROR);
}require_once $filepath;
}
unset($file, $filepath);// CUSTOM FILTER // Add author of the current post (SPELTIPS)
add_action( ‘elementor/query/from_same-author’, function( $query ) {
// The author of the current post
$author_id = get_the_author_meta(‘ID’);
$query->set( ‘author’, $author_id );
} );// CUSTOM FILTER // Add Speltips from same expert on EXPERT page
add_action( ‘elementor/query/spel-from-same-expert’, function( $query ) {
// The author of the current post$author_id = get_field( ‘wp_authors’ );
$query->set( ‘author’, $author_id );
} );add_action( ‘elementor/query/shares-from-current_author’, function( $query ) {
// The author of the current post$author_id = get_the_author_meta(‘ID’);
$expert_id = get_field( ‘expert’, ‘user_’ . $author_id );
if( is_array( $expert_id ) ) $expert_id = $expert_id[ ‘ID’ ];
$meta_query = $query->get( ‘meta_query’ );
if( ! is_array( $meta_query ) ) $meta_query = [];
$meta_query[ ‘expert_id’ ] = [
‘key’ => ‘expert’,
‘compare’ => ‘==’,
‘value’ => $expert_id,
];$query->set( ‘meta_query’, $meta_query );
} );// CUSTOM FILTER // Add ANDELAR (SHARES) from same expert on EXPERT page
add_action( ‘elementor/query/andelar-from-same-expert’, function( $query ) {
// The author of the current post
$expert_id = get_the_ID();
$meta_query = $query->get( ‘meta_query’ );if( ! is_array( $meta_query ) ) $meta_query = [];
$meta_query[ ‘expert_id’ ] = [
‘key’ => ‘expert’,
‘compare’ => ‘==’,
‘value’ => $expert_id,
];$query->set( ‘meta_query’, $meta_query );
} );// Add Options Page
function add_my_options_page() {
if( function_exists(‘acf_add_options_page’) ) {
acf_add_options_page();
}
}
add_action( ‘plugins_loaded’, ‘add_my_options_page’ );// Don’t put anything except includes in this file
//Pick a place for your jsons to live. We stick them into the /theme/includes/acf-json folder, but you can stick these wherever// change where acf json files are saved
add_filter(‘acf/settings/save_json’, ‘jb_acf_save_json’);
function jb_acf_save_json($path) { return get_stylesheet_directory().’/includes/acf-json’; }// add our custom folder to places acf json are loaded from
add_filter(‘acf/settings/load_json’, ‘jb_acf_load_json’);
function jb_acf_load_json($paths) { return array_merge($paths, array(get_stylesheet_directory().’/includes/acf-json’)); }function custom_theme_slug_filter_the_content( $content ) {
global $wpdb;
if(“post” == get_post_type()){
//if(is_singular(‘posts’)){
$requested_post_id = get_the_ID();
$authordetails = get_field(‘acfe_author’, $requested_post_id);
$suthorname = $authordetails[‘display_name’];
$expert_args = array(
‘post_type’ => ‘expert’,
‘post_status’ => ‘publish’,
‘title’ => trim($suthorname),
‘orderby’ => ‘date’,
‘order’ => ‘DESC’
);
$query = new WP_Query($expert_args);
$postid = $query->post->ID;
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $postid ), ‘full’ );
$custom_content = ‘<div id=”ctm-img-box” class=”custom-img-box”><span class=”elementor-icon-list-icon”></span><span class=”authorname”>’.$suthorname.'</span></div>’;
$custom_content .= $content;
//return $custom_content;
}else{
$custom_content = $content;
}
return $custom_content;
}
add_filter( ‘the_content’, ‘custom_theme_slug_filter_the_content’, 1);function wpa_choose_ad($user_id, $expert_id) {
$requested_post_id = get_the_ID();
$expert_user = get_field(‘wp_authors’, $requested_post_id);
//echo $user_id;
$args = array(
‘post_type’ => ‘share’,
‘posts_per_page’ => 12,
‘orderby’ => ‘rand’,
‘meta_query’ => array(
array(
‘key’ => ‘expert’,
‘value’ => $expert_id,
‘compare’ => “=”
)
)
);
$the_query = new WP_Query( $args );
//echo “"; //print_r($the_query); $the_ad = '<div class="elementor-container elementor-column-gap-no">'; $the_ad .= '<div class="element-row">'; $the_ad .= '<div class="elementor-widget-container elementor-widget-heading"><h4 class="elementor-heading-title elementor-size-default">MINA ANDELAR</h4></div>'; $the_ad .= '<div class="elementor-widget-container">'; $the_ad .= '<div class="ecs-posts elementor-posts-container elementor-posts elementor-grid elementor-posts--skin-custom">'; if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) : $the_query->the_post(); $title = get_the_title(); $url = get_permalink(get_the_ID()); $expert_type = get_field('type', get_the_ID()); $expert_shares = get_field('shares', get_the_ID()); $expert_price = get_field('price', get_the_ID()); $the_ad .= '<div class="share_outer_box">'; $the_ad .= '<div class="share_price_details">'; $the_ad .= '<p>'.$expert_type.'</p>'; $the_ad .= '<p>'.$expert_shares.' andler | '.$expert_price.' SEK</p>'; $the_ad .= '</div>'; $the_ad .= '<h2 class="custom-title elementor-heading-title elementor-size-default">'.$title.'</h2>'; $the_ad .= '</div>'; endwhile; } $the_ad .= '</div>'; $the_ad .= '</div>'; $the_ad .= '</div>'; $the_ad .= '</div>'; wp_reset_postdata(); return $the_ad; } function filter_function_name( $query_args, $sfid ) { //if search form ID = 19856, the do something with this query if($sfid==19856) { //modify $query_args here before returning it // args $args = array( 'post_type' => 'shares', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'type', 'value' => 'Europatipset', 'compare' => 'LIKE' ), array( 'key' => 'type', 'value' => 'Stryktipset', 'compare' => 'LIKE' ) ) ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
May 6, 2020 at 4:35 pm #242872In reply to: A third sort order?
AnonymousInactiveNevermind. I didn’t realize I had to also manually add the meta_query to get the search order to work. Here is my working code:
function filter_function_name( $query_args, $sfid ) { //if search form ID = 225, the do something with this query if($sfid==23142) { $query_args["meta_query"] = array( 'relation' => 'AND', 'subject_code' => array( 'key' => 'subject_code', 'compare' => 'EXISTS', ), 'course_number' => array( 'key' => 'course_number', 'compare' => 'EXISTS', ), 'start_date' => array( 'key' => 'start_date', 'compare' => 'EXISTS', ), ); $query_args["orderby"] = array( 'subject_code' => 'asc', 'course_number' => 'asc', 'start_date' => 'asc', ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
Please feel free to close this ticket. Thank you!
May 6, 2020 at 4:07 pm #242855In reply to: A third sort order?
AnonymousInactiveThank you. I restored the Posts settings to the default order and used the following code, which is not affecting the sort order:
function filter_function_name( $query_args, $sfid ) { if($sfid==23142) { $query_args["orderby"] = array( 'subject_code' => 'asc', 'course_number' => 'asc', 'start_date' => 'asc', ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
It works if I set just a single order like so:
function filter_function_name( $query_args, $sfid ) { if($sfid==23142) { $query_args["orderby"] = 'subject_code'; } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
Do I need to format the $query_args differently? That’s how I do it in a regular WP_Query…
Thank you!
April 30, 2020 at 5:43 pm #242232Topic: Relation OR in filter
in forum Search & Filter Pro
AnonymousInactiveHi there,
we would like to add a reltion OR about two field.
We can’t set it in admin panel so we try to integrate it by php.
In function.php we add this:function filter_results( $query_args, $sfid ) { if($sfid==3981) { $query_args = array( "meta_query" => array( 'relation' => 'OR', array( 'key' => 'immobile_disponibile', 'compare' => 'NOT EXISTS', ), array( 'key' => 'immobile_disponibile', 'value' => '1', 'compare' => 'NOT LIKE', ), ), "meta_key" => "immobile_disponibile", 'orderby' => 'menu_order', "order" => "ASC", ); } return $query_args; } add_filter( 'sf_edit_query_args', 'filter_results', 20, 2 );
But… not work.
March 17, 2020 at 12:37 pm #236926In reply to: Order by 3 x fields
TrevorParticipantYou would need to return the form order settings to default and instead use this filter:
https://searchandfilter.com/documentation/action-filter-reference/#edit-query-arguments
Adding an orderby argument to the query. This search may yield some snippets:
https://support.searchandfilter.com/forums/search/orderby+sf_edit_query_args/
November 27, 2019 at 11:10 am #227761Topic: Sorting post results in sf_edit_query_args
in forum Search & Filter Pro
AnonymousInactiveHi there,
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?
Thanks
September 26, 2019 at 3:39 pm #222024Topic: Edit Query Arguments Not Working
in forum Search & Filter Pro
AnonymousInactiveHello!
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 );
But it doesn’t amend the search URL or results.
Any help would be greatly appreciated!
-
AuthorSearch Results
-
Search Results
-
Topic: Relation OR in filter
Hi there,
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?
Thanks
Hello!
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 );
But it doesn’t amend the search URL or results.
Any help would be greatly appreciated!