Support » Fixing WordPress » Listing Posts Between Two Values

  • Darryl

    (@darrylschmidt)


    I currently have a post that loops through my custom post type ordering by a custom field called “price”.

    <?php query_posts(array('post_type'=>'listings','orderby'=>'meta_value_num','meta_key'=>'price','order'=>'ASC','posts_per_page'=>5,'paged'=>$paged)); ?>

    What I would like to do now is list posts where “price” is less than 200 between 200 and 350, and over 350.

Viewing 2 replies - 1 through 2 (of 2 total)
  • Here is a pastebin with some sample code that should get you started:

    http://pastebin.com/KiyJjfF6

    It used two filters to modify the query by joining the postmeta table and adding the meta_value field to the results.

    You will need to add the post_type parameter as I tested it against normal posts.

    Note that I did not say it was the best possible code – you could do without the $price_points array and just hard-code the values in the if() tests.

    Your best chance to do this as a query (as apposed to getting all the content and then filtering it) is to use the meta_query method in WP_Query:

    $args = array(
    	'post_type' => 'listings',
    	'orderby'=>'meta_value_num'
    	'meta_query' => array(
    		array(
    			'key' => 'price',
    			'value' => array(200, 350),
    			'type' => 'numeric',
    			'compare' => 'BETWEEN'
    		)
    	)
     );
    
    $query = new WP_Query( $args );

    Read more about it here: http://codex.wordpress.org/Class_Reference/WP_Query

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Listing Posts Between Two Values’ is closed to new replies.