0

カスタムクエリを使用して、カスタム投稿タイプ (dabg_events) から特定のカテゴリ ("Wedding Events" または term_taxonomy_id = '4') の日付順の投稿を取得しています。

$querystr = "SELECT DISTINCT wp_posts. * 
FROM wp_postmeta, wp_posts 
LEFT JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) 
WHERE wp_term_relationships.term_taxonomy_id = '4' 
AND wp_posts.ID = wp_postmeta.post_id 
AND (wp_postmeta.meta_key = '_dabg-event-start-date' AND STR_TO_DATE(wp_postmeta.meta_value, '%m/%d/%Y' ) >= CURDATE( )
OR wp_postmeta.meta_key = '_dabg-event-end-date' AND STR_TO_DATE( wp_postmeta.meta_value, '%m/%d/%Y' ) >= CURDATE( ) )
AND wp_posts.post_status = 'publish' 
AND wp_posts.post_type = 'dabg_events' 
ORDER BY STR_TO_DATE( wp_postmeta.meta_value, '%m/%d/%Y' ) ASC";
$events = $wpdb->get_results($querystr, OBJECT);

これは機能し、必要な投稿を取得します。ここで、min(_dabg-event-start-date) と max(_dabg-event-start-date) を見つける必要があります。私の質問には 2 つの部分があります。1. 探している投稿タイプを簡単に照会する方法はありますか? または 2. min(_dabg-event-start-date) と max(_dabg-event-start-date) を取得するようにこのクエリを変更するにはどうすればよいですか?

4

1 に答える 1

0

このようなものは、あなたが望むことをするはずです。あなたのものと一致するデータがないため、テストされていません。文字列ではなく日付を返します - 結果を文字列として必要な場合は、変換を行う必要があります。

SELECT min(STR_TO_DATE(s.meta_value, '%m/%d/%Y' )) as min_start_date,
       max(STR_TO_DATE(s.meta_value, '%m/%d/%Y' )) as max_start_date
FROM wp_posts p
     LEFT JOIN wp_postmeta s ON p.ID = s.post_id AND s.meta_key = '_dabg-event-start-date'
     LEFT JOIN wp_postmeta e ON p.ID = e.post_id AND e.meta_key = '_dabg-event-end-date'
     JOIN wp_term_relationships ON p.ID = wp_term_relationships.object_id
WHERE wp_term_relationships.term_taxonomy_id = '4' 
  AND ( STR_TO_DATE(s.meta_value, '%m/%d/%Y' ) >= CURDATE() OR STR_TO_DATE( e.meta_value, '%m/%d/%Y' ) >= CURDATE() )
  AND p.post_status = 'publish' 
  AND p.post_type = 'dabg_events'

必要な開始日ではなく最大終了日を引き戻す可能性があるため、クエリにmaxandを追加することはできませんでした。min

于 2013-09-06T15:53:35.930 に答える