WordPress Custom Query

I have posts that use a custom field for start date and end date.
query_posts returns an array of posts that exist in the category I’m filtering.
How do I query posts using this custom field that has date i.e. 03/11/2010 and not the full array. Pagination works on the full array so it returns all posts. I can use an if else to only show the posts newer that today, then pagination doesn’t work.
Would I have to build a custom mysql query?

Related posts

Leave a Reply

3 comments

  1. <?php
    
     $querystr = "
        SELECT wposts.* 
        FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
        WHERE wposts.ID = wpostmeta.post_id 
        AND wpostmeta.meta_key = 'date_field' 
        AND wpostmeta.meta_value = '03/11/2010' 
        AND wposts.post_status = 'publish' 
        AND wposts.post_type = 'post' 
        ORDER BY wposts.post_date DESC
     ";
    
     $pageposts = $wpdb->get_results($querystr, OBJECT);
    
     ?>
    

    Then you would access $pageposts as an object

  2. You can do this with WP_Query using meta_query.

    $my_query = new WP_Query( array(
        'meta_query' => array(
            array(
                'key' => 'date_field',
                'value => '03/11/2010',
                'compare' => '='
            )
        )
    ) );
    

    By default it will search for published posts.

    I would also suggest to store date in yyyy/mm/dd format. Sorting by this field will be much easier if you do this so.