2017-03-22 1 views
1

設定したカスタム日付フィールドに基づいて過去の予定を非表示にしたいと考えています。過去の予定の投稿をカスタム日付フィールドに基づいて非表示

<?php 
the_post(); 
// Get 'events' posts 
$events_posts = get_posts(array(
'post_type' => 'events', 
'posts_per_page' => -4, // Unlimited posts 
'orderby' => 'meta_value', 
'meta_key' => 'event_date', 
'order' => 'ASC' 
)); 

if ($events_posts): 
?> 

このコードは、現在の順序で私のイベントを示しているが、私は今日の日付よりも古いイベントを隠したいですか?

+0

'event_date'フィールドの日付形式は何ですか? –

答えて

-1

$ event_postsの結果をループし、日付が「今日よりも小さい」イベントを除外しているとします。あなたが望むものを達成するためには、最適化されていない、不適切な方法です。 MySQLに、日付がNOW()より大きいイベントを取得させる必要があります。 event_dateフィールドがDATETIMEタイプの場合、 'event_date'がNOW()より大きいイベントのみを取得するようにクエリを変更します。

"SELECT events WHERE event_date >NOW()" 
1

カスタムポストフィールドでデータをフィルタリングする場合は、ここでは、この

ためmeta_queryを使用する必要があり、例を働いている:

$args = [ 
    'post_type' => 'events', 
    'posts_per_page' => -1, // Unlimited posts 
    'orderby' => 'meta_value', 
    'meta_key' => 'event_date', 
    'order' => 'ASC', 
    'meta_query' => [ 
     'relation' => 'AND', 
     [ 
      'key' => 'event_date', 
      'value' => date('Y-m-d'), //<-- replace this with your correct date format 
      'compare' => '>', 
      'type' => 'DATE' 
     ], 
    ], 
]; 

$queryEvent = new WP_Query($args); 
if ($queryEvent->have_posts()) : 
    /* Start the Loop */ 
    while ($queryEvent->have_posts()) : 
    $queryEvent->the_post(); 

    //you post 

    endwhile; 
endif; 

は、この情報がお役に立てば幸い!

関連の答え:https://stackoverflow.com/a/42325398/5019802

関連する問題