我为自定义字段值创建了一个AJAX后置过滤器。此过滤器呈现迭代JSON的数据,并使用自定义内容模板。此代码适用于自定义字段品牌以及值 ..
现在我面临着在功能中添加多个元键的问题,之后我将能够过滤多个自定义字段值。
如何在功能$args
中添加多个键和值?
Function.php
add_action('wp_ajax_call_post', 'call_post');
add_action('wp_ajax_nopriv_call_post', 'call_post');
function call_post(){
$params = wp_parse_args ( $_REQUEST, array(
));
$brand = $params['mobile'];
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'brand',
'value' => $brand,
) ,
) ,
);
$query = new WP_Query($args);
if( ! empty ($params['template'])) {
$template = $params['template'];
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
get_template_part('content');
endwhile;
wp_reset_query();
else :
wp_send_json($query->posts);
endif;
die();
}
}
脚本
<script>
jQuery(document).ready(function () {
jQuery('.br').click(function () {
jQuery('.contents').remove();
var checked = jQuery('#test').serialize();
$('.filter-output').empty()
jQuery.ajax( {
url: "<?php echo admin_url('admin-ajax.php'); ?>",
data: "action=call_post&template=content&" + checked,
success: function (result) {
jQuery(result).appendTo('.filter-output');
}
});
})
});
</script>
Form.php
<form id='test' >
<input type="checkbox" name="mobile[]" value="Nokia" class="br"> NOKIA
<input type="checkbox" name="mobile[]" value="LG" class="br"> LG
<div class="filter-output">
</div>
</form>
答案 0 :(得分:2)
是的,可以使用第三个参数 'compare'
轻松完成。
<强>&#39; meta_query&#39;还包含一个或多个具有以下键的数组:
'key' (string)
- 自定义字段键。
'value' (string|array)
- 自定义字段值。只有当比较是&#39; IN&#39;,&#39; NOT IN&#39;,&#39; BETWEEN&#39;或者&#39; NOT BETWEEN&#39;时,它才可以是数组。使用&#39; EXISTS&#39;时,您不必指定值。或者&#39; NOT EXISTS&#39; WordPress 3.9及以上的比较。
(注意:由于错误#23268,NOT EXISTS比较需要在3.9之前正常工作的值。您必须为value参数提供一些字符串。空字符串或NULL不会但是,任何其他字符串都可以解决问题,并且在使用NOT EXISTS时不会出现在SQL中。需要灵感吗?#23268&#39; bug怎么样。)
'compare' (string)
- 要测试的操作员。可能的值包括&#39; =&#39;,&#39;!=&#39;,&#39;&gt;&#39;,&#39;&gt; =&#39;,&#39 ;&lt;&#;&#39;&lt; =&#39;,&#39; LIKE&#39;,&#39; NOT LIKE&#39;,&#39; IN&#39;,&# 39;不在&#39;,&#39;之间&#39;,&#39;不在&#39;,&#39; EXISTS&#39;并且“不存在”#39;默认值为&#39; =&#39;。
'type' (string)
- 自定义字段类型。可能的值包括“数字&#39;”,“&#39; BINARY&#39;&#39; CHAR&#39;&#39; DATE&#39;,&#39; DATETIME&#39;,&# 39; DECIMAL&#39;,&#39; SIGNED&#39;,&#39; TIME&#39;,#39; UNSIGNED&#39;。默认值为&#39; CHAR&#39;。
'relation'
(字符串) - 每个内部meta_query数组之间存在多个逻辑关系。可能的值是&#39; AND&#39;,&#39; OR&#39;。不要使用单个内部meta_query数组。
以下是使用 'relation'
参数可以执行的操作的可视示例...
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'brand',
'value' => $brand,
'compare' => '=',
),
array(
'relation' => 'AND',
array(
'key' => 'color',
'value' => 'red',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'small',
'compare' => '=',
),
),
),
);