私はclassipressテーマを使っています
私の質問は以下の通りです
$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";
このクエリをwp_queryに変換したいのですが、以下のコードを試してみました
$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}";
結果より下に戻る
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
しかし期待通りの結果が得られなかった
唯一の問題はそれがAND CAST(yp_postmeta.meta_value AS DATE) >= '2014-12-24 04:30:01') )
を返すことです
の代わりにAND STR_TO_DATE(wpostmeta.meta_value, '%d-%m-%Y %H:%i:%s') >= NOW()
助けてください
meta_value
パラメータがありません。
あなたはこのように使うことができます:
$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 );