2010-10-20 49 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); 
相关问题