2016-08-19 36 views
3

我爲自定義字段值創建了AJAX後期過濾器。此篩選器呈現數據迭代JSON並使用自定義內容模板。而對於自定義字段品牌此代碼的工作非常有 ..在AJAX後期過濾器中添加多個元鍵和值

現在我面臨的問題之後添加多個meta鍵的功能,我將能夠過濾多個自定義字段值。

如何在函數$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> 

回答

2

是的,它可以很容易地做到這一點,使用第三個參數'compare'

'meta_query' 還包含一個或多個陣列使用下列按鍵:

'key' (string) - 自定義字段的關鍵。

'value' (string|array) - 自定義字段值。只有在比較爲「IN」,「NOT IN」,「BETWEEN」或「NOT BETWEEN」時,它纔可以是數組。在WordPress 3.9及更高版本中使用「EXISTS」或「NOT EXISTS」比較時,您不必指定值。
注意:由於錯誤#23268,NOT EXISTS比較需要的值才能在3.9之前正確工作,您必須爲value參數提供一些字符串,空字符串或NULL將不起作用。其他字符串會做的伎倆,並使用NOT EXISTS當你的SQL將不會出現需要靈感如何「BUG#23268」)

'compare' (string) - ?運營商進行測試。可能的值是'=','!=','>','> =','<','< =','LIKE','不像','進','不進','間隔','不存在','存在'和'不存在'。默認值是'='。

'type' (string) - 自定義字段類型。可能的值有'NUMERIC','BINARY','CHAR','DATE','DATETIME','DECIMAL','SIGNED','TIME','UNSIGNED'。默認值是'CHAR'。


'relation'(字符串) - 每個內meta_query陣列之間的邏輯關係時,有一個以上。可能的值是'AND','OR'。不要與單個內部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' => '=', 
      ), 
     ), 
    ), 
); 

參考:Class_Reference WP_Query - Custom Field Parameters

+0

如何使用 '$品牌= $ PARAMS [' 移動'];'對於每個密鑰 – FRQ6692

+0

您可以使用像'key'=> $ variable'這樣的變量替換''key''這樣的任何參數,並且可以替換''value''。這是有效的,我已經在使用它......但「關係」和「比較」參數對於獲得你想要的東西很重要。這就像一個SQL查詢... – LoicTheAztec

相關問題