Как вывести записи за определённый промежуток времени с момента публикации?

Есть очень большая необходимость вывода последних постов за последние 7-10-14, да и вообще, любое указанное количество дней.

Я сделал так:


'v_sortby=views&v_orderby=desc&

— это вывод по просмотрам, неинтересно.

Самое важное тут:

&w=' . $week . '

, он выводит 3 записи за последние 7 дней. Но, увы, дней календарных. А нужно, чтобы 7 дней с момента публикации.

Как такое можно реализовать? И реализацию такую, чтобы можно было устанавливать заданное количество дней от даты публикации поста, и в этом интервале был вывод постов?

Автор box 1 Article
Вебмастер, верстальщик. Не умею заполнять поля «О себе».

6 Комментарии

  1. А нужно, чтобы 7 дней с момента публикации

    С момента публикации чего?

    Пример кода для вывода постов за последние XX дней, начиная с даты просматриваемого поста (вставлять в single.php):

    < ?php
      function filter_where($where = '') {
        //посты за последние 14 дней
        $where .= " AND post_date > '" . date('Y-m-d', strtotime('-14 days')) . "'";
        return $where;
      }
    add_filter('posts_where', 'filter_where');
        $args=array(
          'post_type' => 'post',       //показывать только посты
          'post_status' => 'publish',  //показывать только опубликованные
          'showposts' => -1,           //показывать все найденные
          'caller_get_posts'=> 1       //показывать все, начиная с первого найденного
          );
    $my_query=new WP_Query($args);
    remove_filter('posts_where', 'filter_where');
    
      if( $my_query->have_posts() ) {
        echo '

    Количество постов за последние 14 дней — '.count($my_query->posts) . '

    '; while ($my_query->have_posts()) : $my_query->the_post(); ?>

    < ?php the_time('d F Y') ?> < ?php the_title(); ?>

    < ?php endwhile; } wp_reset_query(); ?>
  2. С момента публикации чего?

    С момента публикации поста, разумеется.

    Мне в блоке нужно вывести 3 материала, которые сортируются по просмотрам за 7 дней существования с момента публикации каждого и заменяются более актуальным по истечении этих 7/14/и т.п. дней.

    • Не рыбу я дал вам, но сеть :)
      Думаю, вы сами догадаетесь, как добавить в приведенный чуть выше код сортировку по просмотрам и ограничение количества постов тремя.

  3. < ?php 
    global $ti_option;
    ?>
    
    
    < ?php if( get_sub_field( 'format_main_title' ) ): ?>

    < ?php the_sub_field( 'format_main_title' ); ?>

    < ?php if ( get_sub_field( 'format_sub_title' ) ): ?> < ?php the_sub_field( 'format_sub_title' ); ?> < ?php endif; ?>
    < ?php endif; ?> < ?php /** * Get the format name which will filter the section * Check if format is standard or something else **/ $format_name = get_sub_field( 'format_section_name' ); if ( get_sub_field( 'format_section_name' ) == 'standard' ): $format_args = array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-video', 'post-format-gallery', 'post-format-audio' ), 'operator' => 'NOT IN' ); else: $format_args = array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => 'post-format-'.$format_name ); endif; $posts_to_show = get_sub_field( 'format_posts_per_page' ); if ( get_sub_field ( 'format_pagination' ) == 'pagination_on' ){ $paged = 1; if ( get_query_var('paged') ) $paged = get_query_var('paged'); if ( get_query_var('page') ) $paged = get_query_var('page'); $wp_query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => $posts_to_show, 'paged' => $paged, 'tax_query' => array( $format_args ) ) ); } else { $wp_query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => $posts_to_show, 'tax_query' => array( $format_args ) ) ); } if ( $wp_query->have_posts() ) : ?>
    < ? $week = date('W'); query_posts('v_sortby=views&v_orderby=desc&w=' . $week . '&posts_per_page=3'); // за 1 неделю, по 3 штуки ?> < ?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?> тут вывод идёт < ?php wp_reset_query(); ?>

    Есть вот это вот, где существует своя выборка и фильтрация. И увы, сюда не удалось вклинить то, что Вы писали сверху. За что Вам большое спасибо и огромные благодарности. Сети прекрасные, но рыбу не поймал.

    • < ?php
         function filter_where($where = '') {
           //посты за последние 14 дней
          $where .= " AND post_date > '" . date('Y-m-d', strtotime('-14 days')) . "'";
           return $where;
         }
       add_filter('posts_where', 'filter_where');
           $args=array(
            'post_type' => 'post',        //показывать только посты
            'post_status' => 'publish',   //показывать только опубликованные
            'showposts' => 3,             //показывать три поста
            'caller_get_posts'=> 1,       //показывать, начиная с первого найденного
            'orderby' => 'views',         //сортировать по количеству просмотров
            'order'    => 'DESC'          //сортировать от большего к меньшему
            );
      $my_query=new WP_Query($args);
       remove_filter('posts_where', 'filter_where');
      
         if( $my_query->have_posts() ) {
           echo '

      Количество постов за последние 14 дней — '.count($my_query->posts) . '

      '; while ($my_query->have_posts()) : $my_query->the_post(); ?>

      < ?php the_time('d F Y') ?> < ?php the_title(); ?>

      < ?php endwhile; } wp_reset_query(); ?>
      • Увы, этот код я не смог использовать для вывода того, что нужно именно мне.

        Скажите, tiaurus, как это грамотно встроить в тот кусок кода, который я публиковал выше и чтобы всё работало: сортировалось по тому периоду, который указан и сохранялся вывод, который установлен в теме?

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*