Ограничить количество элементов в операторе if после цикла while - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть специальный календарь в WordPress, который получает пользовательский тип события Events, в котором есть поле ACF с датой Events и сравнивает его с сегодняшней датой, чтобы вывести его.Я хочу ограничить количество постов до 5, но с логикой, которая отфильтровывает 5 событий в цикле while, более старые события также попадают в фильтр и считаются в 5, поэтому в конце сравнения они также подсчитываются.в и, например.если у меня есть 2 более старых события, то только 3 отображаются в операторе ifВот код:

    $args = array( 
    'post_type' => 'events', 'meta_key'=>'date', 'orderby'=>'meta_value', 'order'=>'ASC', 'posts_per_page'=>5 );

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post(); 

    $title = get_the_title();

    $maindate = DateTime::createFromFormat('Ymd', get_field('date'));
    $today = DateTime::createFromFormat('Ymd', date('Ymd'));

if ( $maindate >= $today ) :

... + html-код с элементами

Есть идеи, как его реструктурировать?

1 Ответ

0 голосов
/ 20 февраля 2019

Если я вас правильно понимаю, вы хотите перечислить 5 предстоящих событий и пропустить старые.Теперь вы фильтруете их в цикле while, но вы можете лучше отфильтровать их в своем запросе.

ACF использует мета-поля Wordpress (см. эта ссылка ), поэтому вы также можете запросить их,Это сводится к чему-то вроде этого:

$args = array( 
    'post_type' => 'events', 
    'meta_key'=>'date', 
    'meta_query' => [
        ['key' => 'date', 
         'value' => date('Y-m-d'), 
         'compare' => '>=']
     ],  
     'orderby'=>'meta_value', 
     'order'=>'ASC', 
     'posts_per_page'=>5 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...