开发者

Filter query_posts by two custom fields?

I'm tryi开发者_运维技巧ng to filter my posts to only show the ones with that have a custom value for the field "Model" while sorting the posts by another custom field called "Price."

Here's the function I'm using (not working):

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

This function only shows Models, yet doesn't sort the posts by Price. If i add &meta_value=Model after order=ASC it sorts by Price but shows all posts, and not just Models.


Have you looked at http://codex.wordpress.org/Class_Reference/WP_Query

Specifically this section:

Multiple Custom Field Handling:

Display posts from several custom field:

$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 );


did you try and array?

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


I know this is an old question, but I needed the answer today and couldn't find it anywhere. I found the question and then created an answer (shown below):

<?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);
}
?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜