В WordPress есть функция планирования и автоматической публикации постов. Все очень просто  пишете пост, оформляете все как всегда, но вместо того чтобы нажать кнопку Опубликовать,  сначала выбираете нужную дату в будущем времени. Очень удобно для часто обновляемых ресурсов, админ может написать 7 постов  и запланировать им последовательную публикацию на неделю вперед,  уехать на недельку отдыхать не заморачиваясь на отдыхе за обновление своего сайта. Все работает — все просто, сложности возникают тогда, когда мы хотим использовать функцию Scheduled Posts  не по прямому назначению.

 Будущие посты или Scheduled Posts

Часто блогеры используют эту функцию не только чтобы свалить на море и на недельку забыть про обновление сайта, но и чтобы заинтриговать пользователей. Для этого выводят список будущих постов: заголовок статьи и дату ее выхода. Но этот анонс будущих публикаций — это всего лишь список неактивных заголовков. Чтобы это cделать воспользуйтесь кодом:

<!--?php query_posts('showposts=5&post_status=future'); ?-->
    <!--?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?--></pre>
<div><span class="datepubl">Дата публикации: <!--?php the_time('j F Y'); ?--></span></div>
<pre>    <!--?php endwhile; else: ?-->

<span class="nonepubl">На данный момент запланированных записей нет.</span>

<!--?php endif; ?-->

Этот код нужно ставить в место куда вы хотите выводить список будущих статей. Что в этом коде можно и нужно менять:

  • Редактировать. Когда будете сидеть на сайте как админ, после  названия запланированной статьи в скобках увидите это слово.  Если захотите  подредактировать название, то не нужно будет его искать в админке сайта, а достаточно нажать на Редактировать. Простые посетители сайта не будут ее видеть.
  • showposts=5. Количевство названий будущих постов в списке
  • php the_time(‘j F Y’). формат даты
  • Дата публикации. Эту фразу можно менять, или  удалить.
  • На данный момент запланированных записей нет. Так же миняем или стираем

Делаем список постов с будущей датой ссылками на них

Но что же делать, если нам этого мало и мы хотим не просто бесполезный неактивный список будущих публикаций, а полноценные посты, но с будущей датой, в которые можно заходить всем пользователям, а не только админу. Для этого нужно вывести не просто список будущих постов а список ссылок на будущие статьи. Для этого выше переведенный код нужно завернуть в «<а>» или другими словами в ссылку:

<a href="<?php the_permalink(); ?>" rel="bookmark"><span class="titlefuture">
 <span class="soon">very soon</span>
</span></a>

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

Не заходит в посты с будущей датой выдает ошибку

Посты с будущей датой,  будущие посты, запланированые посты, sheduled posts, futere posts  предназначены для публикации в будущем, на конкретную дату и в движке Wordpress стаит запрет на их просмотр обычными пользователями, ведь не зачем, не положено. Это для рассылки, дли анонса и заинтриговать. Но эту функцию удобно использовать а для сайтов-афиш, для календарей событий и т.д. И нам нужны полноценные посты с будущей датой в которые можно заходить и читать всем. Для этого есть еще кусочек кода который все это разрешит, его нужно скопировать в конец function.php

add_filter('the_posts', 'show_all_future_posts');

function show_all_future_posts($posts)
{
   global $wp_query, $wpdb;

   if(is_single() && $wp_query->post_count == 0)
   {
      $posts = $wpdb->get_results($wp_query->request);
   }

   return $posts;
}

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

Посты с будущей датой которые можно публиковать на сайте