WordPress: показывать только будущие сообщения минус один день

Поэтому у меня есть цикл, который отлично подходит для событий и показывает только будущие сообщения. Проблема в том, что я хотел бы сохранить сообщения, которые больше не являются будущими сообщениями в цикле в течение дополнительного дня.

Пример: Итак, если событие (или сообщение, которое запланировано), находится на 8 вечера на 3-м. На данный момент он удаляется в 8 вечера (это проблема, потому что она может продолжаться 4 часа).

Я бы хотел, чтобы сообщения оставались в течение дополнительного дня или времени, которое я мог бы изменить.

Вот мой текущий код:

<?php $args = array( 'post_type' => 'event', 'posts_per_page' => 50, 'post_status' => 'future', 'order' => 'ASC' ); $loop = new WP_Query( $args ); if ( have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post();?> <div class="teaser-event <?php the_field('highlight') ?>"> <div class="event-meta gold"> <div class="event-date"><?php the_time('M d'); ?></div> <div class="event-time"><?php the_time('g:i A'); ?></div> </div> <div class="event-title"> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"> <?php the_title(); ?> </a> </div> </div> <?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> 

Related of "WordPress: показывать только будущие сообщения минус один день"

Похоже, что параметры времени для WP_Query могут указывать определенные промежутки времени, но не неопределенные, например, сообщения отныне в будущем. Документы WordPress рекомендуют использовать фильтр posts_where для временных запросов. Поэтому вы можете поместить это в functions.php вашей темы:

 // Create a new filtering function that will add our where clause to the query function filter_where($where = '') { // posts from yesterday into the future $where .= ' AND post_date >= "' . date('Ym-d', strtotime('-1 day')) . '"'; return $where; } 

И в вашем коде выше вы можете сделать:

 $args = array('post_type' => 'event', 'posts_per_page' => 50, 'order' => 'ASC'); add_filter('posts_where', 'filter_where'); $loop = new WP_Query($args); remove_filter('posts_where', 'filter_where'); if ( have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post(); 

Фильтр добавления и удаления не делает это самым изящным решением, поэтому вы, вероятно, можете его очистить, function get_recent_and_future_posts() пользовательскую function get_recent_and_future_posts() в function get_recent_and_future_posts() вашей темы, которая возвращает любой $loop объекта.

Я посмотрел: http://codex.wordpress.org/Class_Reference/WP_Query

Вниз на странице есть раздел «Параметры времени».

Я думаю, вместо того, чтобы искать post_status в будущем, вы хотите искать сообщения с датой, большей, чем текущая дата, – 1 день.