Вывод кастомного поста с проверкой произвольного поля (Турнир)
Есть custom post type "Турнир". В нём завёл несколько турниров.
У каждого турнира есть два произвольных поля: data_start (начало турнира) и data_end (конец турнира).
Хочу выводить один "текущий" турнир, у которого сегодняшняя дата в пределах начала-конца турнира. Если такого турнира нет, то выводить "ближайший" будующий турнир. Иначе не выводить ничего.
Как это сделать?
Сделал пока так:
<?php global $post; $post_count = 0; $myposts = get_posts([ 'numberposts' => 1, /* выведем только один пост */ 'post_type' => 'tournaments' /* тип поста Турнир */ ]); ?> <?php if( $myposts ): ?> <?php foreach( $myposts as $post ): ?> <?php $date_1 = date("d.m.Y"); /* Текущая дата */ $date_2 = get_field('data_start'); /* Дата начала турнира */ $date_3 = get_field('data_end'); /* Дата окончания турнира */ $date_timestamp_1 = strtotime($date_1); /* Приводим строку к дате */ $date_timestamp_2 = strtotime($date_2); /* Приводим строку к дате */ $date_timestamp_3 = strtotime($date_3); /* Приводим строку к дате */ ?> <?php if ($date_timestamp_1 >= $date_timestamp_2 && $date_timestamp_1 <= $date_timestamp_3): ?> <div>Текущий турнир</div> <?php elseif ($date_timestamp_2 > $date_timestamp_1): ?> <div>Ближайший турнир</div> <?php else: ?> <div>Турниров нет</div> <?php endif; ?> <?php endforeach; ?> <?php endif; ?> <?php wp_reset_postdata(); ?>
Но не работает так, как мне хотелось. Он проверяет только последний добавленный турнир...
Была идея проставлять тэг турниру: "Текущий", "Ближайший" и "Прошедший". Но проблема в том, что можно забыть переставить тэг... Может можно сделать, чтобы вордпресс автоматически проставлял "Тэг" или "Статус" по проверке произвольного поля и текущей даты?
Подскажите, пожалуйста, куда копать, чтобы реализовать правильный вывод постов?
Спасибо большое!
В итоге сработало так:
meta_query
нужно использовать.
Сейчас пишу код, но его не проверял. Главное, вы поймете идею.