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

 Майбутні пости або Scheduled Posts

Часто блогери використовують цю функцію не тільки що б звалити на моря і на тиждень забути про оновлення сайту,  але і що б заінтригувати користувачів. Для цього виводять список майбутніх постів, заголовоки статей і дату коли вони вийдуть. Але цей анонс майбутніх публікацій це всього лише неактивний список заголовків і все. Що б це зробити скористайтеся кодом:

<!--?php query_posts('showposts=5&post_status=future'); ?--><br />    <!--?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?--></pre><div><br /><br /><br /><span class="datepubl">Дата публикации: <!--?php the_time('j F Y'); ?--></span></div><pre><br />    <!--?php endwhile; else: ?--><br /><br /><span class="nonepubl">На данный момент запланированных записей нет.</span><br /><br /><!--?php endif; ?-->

Цей код потрібно ставити в місце куди ви хочете виводити список майбутніх статей. Що в цьому коді можна і потрібно змінювати:

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

Робимо список постів з майбутньою датою активними послиланнями

Але що ж робити якщо нам цього мало і ми хочемо, не просто даремний неактивний список майбутніх публікацій, а повноцінні пости але лише з майбутньою датою. У які можна заходити всім користувачам, а не тільки адміну. Для цього потрібно вивести не просто список майбутніх постів, а список посилань на майбутні статті. Для цього вище приведений код потрібно загорнути в “<а>” або, іншими словами, зробити з назви майбутнього поста посилання на нього:

&amp;lt;a href="&amp;amp;lt;?php the_permalink(); ?&amp;amp;gt;" rel="bookmark"&amp;gt;&amp;lt;span class="titlefuture"&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;span class="soon"&amp;gt;very soon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;

Це той самий код, але назва майбутньої статті стане посиланням на неї. І багато вставлять цей код і зітхнуть з полегшенням, почнуть радіти, тому що все працює, за посиланням можна зайти в пост з майбутньою датою, але лише коли ви залогінені на сайті як адмін. Простому юзеру зайти в такий пост не вдасться виб’є помилку 404.

Не заходить у пости з майбутньою датою: видає помилку

Пости з майбутньою датою, майбутні пости, заплановані пости , sheduled posts, futere posts – призначені для публікації в майбутньому, на конкретну дату і в двіжку WordPress стоїть заборона на їх перегляд звичайними користувачами, а навіщо їх дивитися вони ж заплановані на майбутне , не положено, подивитися коли вони їх опублікують. Це для RSS розсилки,  і щоб заінтригувати . Але буваэ що цю функцію використовують не для цього, а для сайтів афіш, для календарів подій і т.д. І нам потрібні повноцінні пости з майбутньою датою в які можна заходити і читати всім. Для цього є ще шматочок коду який все це дозволить, його потрібно скопіювати в кінець function.php

add_filter('the_posts', 'show_all_future_posts');&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;function show_all_future_posts($posts)&amp;lt;br /&amp;gt;{&amp;lt;br /&amp;gt;   global $wp_query, $wpdb;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;   if(is_single() &amp;amp;amp;&amp;amp;amp; $wp_query-&amp;amp;gt;post_count == 0)&amp;lt;br /&amp;gt;   {&amp;lt;br /&amp;gt;      $posts = $wpdb-&amp;amp;gt;get_results($wp_query-&amp;amp;gt;request);&amp;lt;br /&amp;gt;   }&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;   return $posts;&amp;lt;br /&amp;gt;}

Ось тепер можна радіти, пости з майбутньою датою можна додавати на сайт як звичайні, і в них зможуть заходити всі користувачі, а не тільки адмін.

Пости з майбутньою датою, які можна публікувати на сайті