Forums › Forums › Search & Filter Pro › Multiple POST META Conditions
- This topic has 13 replies, 3 voices, and was last updated 4 years, 3 months ago by Ross.
-
Anonymous(Private) July 21, 2020 at 1:28 am #253357
I am trying to use Multiple entry Conditions (either OR) in the TAB POST META
“Only return results which match specific post meta data”
type // CHAR // like // Europatipset ‘OR’ Stryktipset ?
It works if I have 1 condition with a term.
It works if I have 2 conditions with 2 terms (AND)
but if I want to use OR for 2 terms as in multiselect a Conditions for this Search Form, it does not work.Can you please let me know how to use multiselect on th etop of the page in the tab POST META how to multiselect 2 conditions ?
Thank you
Trevor(Private) July 21, 2020 at 11:35 am #253388In that settings tab, the conditions are joined as an AND condition, not OR. ALL have to be met before a post will appear in the results.
You may be able to write a more complex set of arguments if you use this filter instead:
https://searchandfilter.com/documentation/action-filter-reference/#edit-query-arguments
Anonymous(Private) August 24, 2020 at 7:59 am #257051I am not a PHP developer that is why I am using your plugin
Could you please help me write the Query Arguments for a Multiple entry Conditions (either OR) in the TAB POST META ?
“Only return results which match specific post meta data”
Custom field = type // CHAR // like // ‘Europatipset’ OR ‘Stryktipset’
ThanksAnonymous(Private) August 24, 2020 at 9:16 am #257055function 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’ => ‘%v86%’,
‘compare’ => ‘LIKE’
),
array(
‘key’ => ‘type’,
‘value’ => ‘%gs75%’,
‘compare’ => ‘LIKE’
)
)
);
}return $query_args;
}
add_filter( ‘sf_edit_query_args’, ‘filter_function_name’, 20, 2 );Anonymous(Private) August 24, 2020 at 9:25 am #257057<?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 );
-
AuthorPosts