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
<?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
-
this I believe is my answer! interested in doing some WPMU development?InnateDev– InnateDev2010-03-16 12:29:00 +00:00Commented Mar 16, 2010 at 12:29
-
I would appreciate you checking this off as an answer!st4ck0v3rfl0w– st4ck0v3rfl0w2010-03-17 20:11:46 +00:00Commented Mar 17, 2010 at 20:11
-
I hunted for that large 'tick'... thanks for the great answer.InnateDev– InnateDev2010-03-18 14:59:53 +00:00Commented Mar 18, 2010 at 14:59
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.
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.