我試圖運行與值數組的meta_query並讓它搜索時,如果所有存在於存儲在一個序列化數組的元價值。這可能嗎?當要比較的元數據是序列化數組時,Wordpress meta_query是一個值數組嗎?
我的用於查詢的參數如下(注意,這是嵌套在一個類):
$args = array(
'post_type' => $this->posttype,
'posts_per_page' => '9',
'paged' => $paged,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_key' => 'lumens',
'meta_query' => array(
array(
'key' => 'mount',
'value' => array('pendant' , 'wall'),
'compare' => 'IN'
)
)
);
存儲的元數據的一個例子,是在一個序列化的陣列類似於下面:
a:4:{i:0;s:7:"pendant";i:1;s:15:"surface-ceiling";i:2;s:4:"wall";i:3;s:14:"aircraft-cable";}
我的查詢將不會返回相應的結果,無論我怎麼努力。我現在意識到我可能應該將每個值存儲在不同的元鍵中,而不是存儲在一個數組中,但是,現在已經有很多條目可以改變元數據了。
UPDATE:
這是我的解決方法,類似於@Leander方法;我不想改變串行輸入,由於條目已經在數據庫上的金額,有一件事我忘了提,我是利用存儲複選框領域原生串行數據CMB2 Developer Toolkit。
// This is pulled from a user input
$meta_queries = array('pendent' , 'wall');
// Metaqueries are passed through loop to create single entries with the like comparison operator
foreach($meta_queries as $key => $value){
$meta_query = array(
'key' => '_tf_' . $key,
// Serialize the comparison value to be more exact
'value' => serialize(strval($value)),
'compare' => 'LIKE',
);
}
// Generate $args array
$args = array(
'post_type' => $this->posttype,
'posts_per_page' => '9',
'paged' => $paged,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_key' => 'lumens',
'meta_query' => $meta_queries
);
我在填充數據時沒有注意到很多性能問題。我想如果有大量的數據需要處理,這種方法將不得不重新設計。
我有點晚,但是,我張貼我的決心上面。感謝您的輸入。 –