按两个自定义字段过滤query_posts?
我试图过滤我的帖子,只显示那些有字段“模型”自定义值的同时通过另一个名为“价格”的自定义字段对帖子进行排序。按两个自定义字段过滤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
,它按价格排序,但显示所有帖子,而不仅仅是模型。
你尝试过数组吗?
$args = array(
'meta_value' => array('Model','Price')
);
query_posts($args);
这不会返回任何结果。 – nurain 2010-10-21 22:53:24
这只是一个如何设置数组的例子,并且也放入了其他参数。 – 2010-10-22 12:11:34
我知道这是一个老问题,但我今天需要答案,无法在任何地方找到答案。我发现问题,然后创建一个答案(如下图所示):
<?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);
}
?>
你有没有看着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);
我想,你必须显示fu不仅是电话。否则我看不到帮助你的方法。 – 2010-10-20 23:07:09