3

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?

3 Answers 3

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

3
  • this I believe is my answer! interested in doing some WPMU development? Commented Mar 16, 2010 at 12:29
  • I would appreciate you checking this off as an answer! Commented Mar 17, 2010 at 20:11
  • I hunted for that large 'tick'... thanks for the great answer. Commented Mar 18, 2010 at 14:59
1

You can create custom query using following filters query_vars, posts_join, posts_where, posts_groupby. here's the codex link to custom queries. Some examples are listed there for help.

0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.