Intereting Posts
Почему моя обычная таксономия показывает общее количество всех типов сообщений Домашняя страница перенаправления / страница / 1 / в / блог / страница / 1 / выдержка отображает один и тот же текст wp_mail не определено Где разместить пользовательские функции? как я могу изменить текст в разделе комментариев? Автоматическое добавление метаданных в сообщения или помощь по нескольким запросам Экран администратора WordPress очень медленный / тайм-аут при редактировании или добавлении новой страницы / пользовательского сообщения Как добавить определенное меню на определенной странице или страницах Как отправить электронную почту в WordPress с несколькими приложениями Как получить помеченные страницы для показа с помеченными сообщениями? Как центрировать видео Отображение конкретных виджетах боковой панели на определенной странице как настроить nginx для wordpress multisite, это происходит ERR_TOO_MANY_REDIRECTS Как загрузить файл javascript на главной странице WordPress в порядке?

Оператор Fallback if, основанный на количестве, отфильтрованном из него

Я пытаюсь добавить три объявления на странице. У меня есть пользовательский тип сообщения, называемый «объявления», и я использую расширенные настраиваемые поля, чтобы добавить дату начала и дату окончания, а также выбрать, с какими страницами их ассоциировать.

Я хочу установить резервное изображение для объявлений, если нет объявлений, соответствующих этим критериям.

if ( $start_date <= $current_date && $end_date >= $current_date && in_array( $page_id, $page_ids ) ) 

Так что скажем, что у меня есть 6 объявлений, и только 1 соответствует этим критериям и по-прежнему активен. В else statement не учитывается, сколько объявлений активно, поэтому, если активен только 1 объявление, он все равно покажет 3. Я бы хотел, чтобы он показывал только резервные объявления, если есть нулевые объявления, которые соответствуют этому, if statement но не может понять, как это сделать в этот момент цикла.

У меня значение posts_per_page неограниченному, потому что мне нужно отфильтровать их по дате и связанным с ними страницам, поэтому я использую $i < 3 в цикле while, чтобы ограничить его тремя объявлениями с этой точки.

В основном, не отображаются никакие резервные объявления, если нет нулевых объявлений, которые соответствуют запросу if statement .

Вероятно, это скорее вопрос PHP, но он включает в себя цикл wp, поэтому подумал, что это будет лучшее место, чтобы спросить. У кого-нибудь есть идеи? благодаря

 <?php $current_date = date('Ymd'); $page_object = get_queried_object(); $page_id = get_queried_object_id(); $args = array( 'post_type' => 'ads', 'posts_per_page' => -1, 'orderby' => 'rand' ); $ads = new WP_Query( $args ); if ( $ads->have_posts() ) : $i = 0; while ( $ads->have_posts() && $i < 3 ) : $ads->the_post(); $start_date = get_field( 'start_date' ); $end_date = get_field( 'end_date' ); $link = get_field( 'link' ); $display = get_field( 'display_on_page' ); $page_ids = array(); // Store ID's in an array foreach ( $display as $post_object ) { $page_ids[] = $post_object->ID; } // Show ads that are inbetween start & end dates and match the page_ids selected if ( $start_date <= $current_date && $end_date >= $current_date && in_array( $page_id, $page_ids ) ) { ?> <div class="col-1-3"> <div class="advertisement footer-ad"> <a href="<?php echo $link; ?>"><?php the_post_thumbnail( 'ads' ); ?></a> </div> </div> <?php } else { // Will loop 3 times for fallback ads ?> <div class="col-1-3"> <div class="advertisement footer-ad"> <img src="<?php bloginfo( 'template_url' ); ?>/images/ad-listing.jpg" alt="Advertisement"> </div> </div> <?php } $i++; endwhile; endif; ?> 

Получил некоторую помощь от друга и понял, что мне нужно переместить материал post_meta в запрос с помощью meta_query, а затем просто отбросить оттуда.

 <?php $current_date = date('Ymd'); $page_object = get_queried_object(); $page_id = get_queried_object_id(); // Match the string "123" to the database value a:1:{i:0;s:3:"123";} (serialized array) for ACF $page_id = '"' . $page_id . '"'; $args = array( 'post_type' => 'ads', 'posts_per_page' => 3, 'orderby' => 'rand', 'meta_query' => array( array( 'key' => 'start_date', 'value' => $current_date, 'compare' => '<=', ), array( 'key' => 'end_date', 'value' => $current_date, 'compare' => '>=', ), array( 'key' => 'display_on_page', 'value' => $page_id, 'compare' => 'LIKE' ) ) ); $ads = new WP_Query( $args ); if ( $ads->have_posts() ) : while ( $ads->have_posts() ) : $ads->the_post(); $link = get_field( 'link' ); ?> <div class="col-1-3"> <div class="advertisement footer-ad"> <a href="<?php echo $link; ?>"><?php the_post_thumbnail( 'ads' ); ?></a> </div> </div> <?php endwhile; else: ?> <div class="col-1-3"> <div class="advertisement footer-ad"> <img src="<?php bloginfo( 'template_url' ); ?>/images/ad-listing.jpg" alt="Advertisement"> </div> </div> <div class="col-1-3"> <div class="advertisement footer-ad"> <img src="<?php bloginfo( 'template_url' ); ?>/images/ad-listing.jpg" alt="Advertisement"> </div> </div> <div class="col-1-3"> <div class="advertisement footer-ad"> <img src="<?php bloginfo( 'template_url' ); ?>/images/ad-listing.jpg" alt="Advertisement"> </div> </div> <?php endif; ?>