Intereting Posts
Где плагин или виджет кэшируют свои результаты? ОШИБКА: «Префикс таблицы» не должен быть пустым Как мне отключить пользователей с ограниченной страницы, если они уже вошли в систему на другом устройстве? Как добавить и отобразить изображение категории Как получить тело сообщения так же, как и мой визуальный редактор? Стиль категории из списка категорий Как добавить файл JavaScript с помощью wp_enqueue_scripts? Как получить переменные $ _GET из переписанных URL-адресов? Включение короткого кода для пользовательских виджетов WordPress Включить только путь домена в многопользовательской сети Как предотвратить очистку настраиваемых полей во время массового редактирования? Переписать правила игнорируются Страница параметров не отображается в меню «Настройки» Теги нарушают пользовательские функции Excerpt $ wpdb-> insert изменяет значение

Как отобразить 7 последних дней сообщений?

Я хотел бы иметь возможность отображать на моей домашней странице график сообщений из 7 последних дней. Например, если сегодня 1 января 2013 года, я бы хотел, чтобы мой блог-канал отображал что-то похожее на следующее:

  1. 1 января 2013 г. Все посты с этого дня

  2. 31 декабря 2012 г. Все посты с этого дня

  3. 30 декабря 2012 г. Все посты с этого дня

  4. 29 декабря 2012 г. Все посты с этого дня

  5. 28 декабря 2012 г. Все посты с этого дня

  6. 27 декабря 2012 г. Все посты с этого дня

  7. 26 декабря 2012 г. Все посты с этого дня

По существу, этот фид должен всегда отображать сообщения за 7 дней. Фактически, когда придет 2 января, 26 декабря будет скрыто, и все наткнутся на одно.

Это не выводит работу, как мне хотелось бы, так как когда наступает новая неделя, она будет показывать только 1 день сообщений, поэтому в основном единственный день, который показывает 7-дневную стоимость сообщений, – это 7-й день этой недели:

<section class="news-timeline"> <?php $day_check = ''; $today = get_the_date(); $year = date('Y'); $week = date('W'); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type'=>'post', 'category_name' => 'whats-happening', 'year' => $year, 'w' => $week, 'paged'=>$paged ); $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query($args); if (function_exists('wp_pagenavi')) { wp_pagenavi(); } if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); $day = get_the_date('j'); if ($day == $today) { echo "<h3>Today</h3>"; $counter = 0; } elseif ($day != $day_check) { echo "<h3>" . get_the_date() . "</h3>"; $counter = 0; } if ($counter % 3 == 0) { $apply_css_margin = TRUE; } elseif ($counter % 3 == 1) { $apply_css_margin = TRUE; } else { $apply_css_margin = FALSE; } $counter++; ?> <article id="post-<?php the_ID(); ?>" <?php if($apply_css_margin) { post_class('news-timeline-margin'); } else { post_class(); } ?>> <a href="<?php the_permalink(); ?>"> <div class="meta"> <p class="author">By <?php the_author(); ?></p> <p class="title"><?php the_title(); ?></p> </div> <?php the_post_thumbnail('homepage-features-news'); ?> </a> </article> <?php $day_check = $day; endwhile; endif; ?> <!-- Older/Newer Pagination --> <?php if ($wp_query->max_num_pages > 1) : ?> <div class="pagination"> <?php next_posts_link('<span class="older ss-icon">&larr;</span>previous'); ?> <?php previous_posts_link('Newer <span class="newer ss-icon">next</span>'); ?> </div> <?php endif; ?> <!-- /Older/Newer Pagination --> <?php if (function_exists('wp_pagenavi')){wp_pagenavi();} $wp_query = null; $wp_query = $temp; wp_reset_query(); ?> <!-- /Featured Loop --> </section> 

Solutions Collecting From Web of "Как отобразить 7 последних дней сообщений?"

Вы можете сделать все это за пределами шаблона, используя действие pre_get_posts и фильтр в posts_where .

Первая функция проверяет, является ли основной запрос и домашняя страница, если он применяет фильтр к предложению posts_where запроса.

Функция posts_where ограничивает posts_where сообщений до сегодняшней даты минус 7 дней, а затем немедленно удаляет фильтр, чтобы он не применялся к каким-либо другим запросам на странице.

Вы можете поместить это в файл functions.php вашей темы, а затем отредактировать свой шаблон, чтобы удалить всю трюк запроса, и просто запустить обычный цикл.

 function wpa85491_home_filter( $query ) { if ( $query->is_home() && $query->is_main_query() ) add_filter( 'posts_where', 'wpa85491_filter_where' ); } add_action( 'pre_get_posts', 'wpa85491_home_filter' ); function wpa85491_filter_where( $where = '' ) { $where .= " AND post_date > '" . date( 'Ymd H:i:s', strtotime( '-7 days' ) ) . "'"; remove_filter( 'posts_where', __FUNCTION__ ); return $where; }