2010-10-20 75 views
2

我試圖過濾我的帖子,只顯示那些有字段「模型」自定義值的同時通過另一個名爲「價格」的自定義字段對帖子進行排序。按兩個自定義字段過濾query_posts?

下面是我使用(不工作)功能:

<?php 
global $query_string; 
query_posts($query_string . "&meta_value=Model&orderby=meta_value&meta_key=Price&order=ASC"); 
?> 

此功能只顯示模式,但通過價格的職位不排序。如果我在order=ASC之後添加&meta_value=Model,它按價格排序,但顯示所有帖子,而不僅僅是模型。

+0

我想,你必須顯示fu不僅是電話。否則我看不到幫助你的方法。 – 2010-10-20 23:07:09

回答

1

你嘗試過數組嗎?

$args = array(
    'meta_value' => array('Model','Price') 
    ); 
    query_posts($args); 
+0

這不會返回任何結果。 – nurain 2010-10-21 22:53:24

+0

這只是一個如何設置數組的例子,並且也放入了其他參數。 – 2010-10-22 12:11:34

0

我知道這是一個老問題,但我今天需要答案,無法在任何地方找到答案。我發現問題,然後創建一個答案(如下圖所示):

<?php 
$sql = " 
    SELECT ID, meta1.meta_value, meta2.meta_value from $wpdb->posts p 
     JOIN $wpdb->postmeta meta1 ON meta1.post_id = p.ID 
     JOIN $wpdb->postmeta meta2 ON meta2.post_id = p.ID 
    WHERE p.post_status = 'publish' 
    AND p.post_type = 'post' 
    AND meta1.meta_key = 'Model' 
    AND meta2.meta_key = 'Price' 
    ORDER BY meta2.meta_value DESC 
"; 
$posts_with_meta = $wpdb->get_col($sql); 
$my_query = new WP_Query(); 
foreach ($posts_with_meta as $p) { 
    $post = get_post(intval($p)); 
    setup_postdata($post); 
    print_r($post); 
} 
?> 
7

你有沒有看着http://codex.wordpress.org/Class_Reference/WP_Query

具體來說本節:

多個自定義字段處理:

從顯示文章幾個自定義字段:

$args = array(
    'post_type' => 'product', 
    'meta_query' => array(
     array(
      'key' => 'color', 
      'value' => 'blue', 
      'compare' => 'NOT LIKE' 
     ), 
     array(
      'key' => 'price', 
      'value' => array(20, 100), 
      'type' => 'numeric', 
      'compare' => 'BETWEEN' 
     ) 
    ) 
); 
$query = new WP_Query($args); 
相關問題