1

I have used classipress theme

My query is as below

 $querydetails = "
   SELECT wposts.*
   FROM $wpdb->posts wposts 
   INNER JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
   INNER JOIN $wpdb->term_relationships yprelation ON yprelation.object_id = wposts.ID
   INNER JOIN $wpdb->term_taxonomy wptaxonomy ON wptaxonomy.term_taxonomy_id = yprelation.term_taxonomy_id
   INNER JOIN $wpdb->terms wpterms ON wpterms.term_id = wptaxonomy.term_id
   WHERE wpostmeta.meta_key = 'event_date'
   AND STR_TO_DATE(wpostmeta.meta_value, '%d-%m-%Y %H:%i:%s') >= NOW()
   AND (wposts.post_status = 'publish' || wposts.post_status = 'pending' || wposts.post_status = 'future')
   AND wposts.post_type = 'ad_listing'
   AND (wpterms.term_id = 5 OR wptaxonomy.parent = 5)
   ORDER BY STR_TO_DATE(wpostmeta.meta_value, '%d-%m-%Y %H:%i') LIMIT 0,10";

I want to convert this query into wp_query, I have tried below code

    $args = array(
    'post_type' => 'ad_listing',
    'post_status' => array('publish', 'pending', 'future'),
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'event_date',
            'value' => date('Y-m-d H:i:s'),
            'type' => 'date',
            'compare' => '>='
        )
    ),
    'tax_query' => array(
        'relation' => 'and',
        array(
            'taxonomy' => 'ad_cat',
            'field' => 'slug',
            'terms' => 'event-2'
        )
    )
);

$query = new WP_Query($args);
echo "Last SQL-Query: {$query->request}";

retuns below result

SELECT SQL_CALC_FOUND_ROWS yp_posts.ID 
FROM yp_posts 
INNER JOIN yp_term_relationships ON (yp_posts.ID = yp_term_relationships.object_id) 
INNER JOIN yp_postmeta ON (yp_posts.ID = yp_postmeta.post_id) 
WHERE 1=1 
AND ( yp_term_relationships.term_taxonomy_id IN (581,541,547,544,545,546,548,550,572,585,599,607,616,619) ) 
AND yp_posts.post_type = 'events' 
AND ((yp_posts.post_status = 'publish' OR yp_posts.post_status = 'future' OR yp_posts.post_status = 'pending')) 
AND ( (yp_postmeta.meta_key = 'event_date' 
    AND CAST(yp_postmeta.meta_value AS DATE) >= '2014-12-24 04:30:01') ) 
GROUP BY yp_posts.ID ORDER BY yp_posts.post_date ASC LIMIT 0, 10 

but did not get expected results

only issue is it return AND CAST(yp_postmeta.meta_value AS DATE) >= '2014-12-24 04:30:01') )
instead of
AND STR_TO_DATE(wpostmeta.meta_value, '%d-%m-%Y %H:%i:%s') >= NOW()

please help

3
  • Please explain what exactly your $wpdb query does, only then we will be able to help you with custom query.
    – Robert hue
    Commented Dec 23, 2014 at 13:15
  • @Roberthue, I want to fetch my custom posts "events" and whose event date is greater or equals to today date for perticular slug(wpterms.term_id = 5 OR wptaxonomy.parent = 5) Commented Dec 23, 2014 at 13:25
  • @Roberthue, I have updated my question now there is issue with date conversion, can you please help me? Commented Dec 24, 2014 at 4:44

1 Answer 1

1

You have missed meta_value parameter.
You can use like this :

$today=date('Y-m-d');
$args = array(
               'numberposts' => 10,
                'post_type' => 'events',
                'meta_key' => 'event_date',
                'meta_value >=' => $today
            );

            // get results
$the_query = new WP_Query( $args );

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.