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

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

Я сделал так:

 
'v_sortby=views&v_orderby=desc&

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

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

&w=' . $week . '

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

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

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

  1. tiaurus

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

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

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

     '" . 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(); ?>

    Ответить
  2. box автор

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

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

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

    Ответить
    1. tiaurus

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

      Ответить
  3. box автор
    
    
    

    '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() ) : ?>
    have_posts() ) : $wp_query->the_post(); ?> тут вывод идёт

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

    Ответить
    1. tiaurus
       '" . 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(); ?>

      Ответить
      1. box автор

        Увы, этот код я не смог использовать для вывода того, что нужно именно мне.

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

        Ответить