Как вывести список постов по расписанию
Показывание грядущих постов может быть полезным, чтобы заставить людей подписаться на ваш блог. В этом посте мы рассмотрим как это сделать.
Что такое посты по расписанию?
Если вы уже какое-то время занимаетесь блоггингом, то наверняка заметили, что публикуя посты в определенное время может помочь заработать больше просмотров. Если вы новенький в ведении блога, то вам следует начать с анализа посещаемости (например, Google Analytics / GA4), чтобы понять, когда ваша аудитория наиболее активна.
Проблема заключается в том, что вы не можете просто сидеть и ждать нужного времени, чтобы нажать кнопку публикации. Поэтому в WordPress имеется встроенный механизм выкладывания постов по расписанию.
Важно понимать: по умолчанию WordPress не показывает посетителям посты в статусе Scheduled (запланированные). Они автоматически станут видимыми в блоге только в назначенное время. Но если вы хотите вывести список будущих записей (например, раздел «Скоро выйдет»), это можно сделать с помощью плагина или собственного кода. В этой статье мы рассмотрим оба варианта.
Способ первый: отображение грядущих постов при помощи плагина
Установите и активируйте плагин Display Posts. Он добавляет универсальный шорткод, который позволяет выводить записи по любым параметрам, включая статус future. Вставьте в запись, страницу или блок Shortcode следующий код:
Этот шорткод выведет до 5 запланированных постов в порядке возрастания даты публикации. (Параметр posts_per_page="5" определяет количество выводимых постов. Вы можете заменить 5 на любое другое число, чтобы показывать нужное количество запланированных записей).
Список можно разместить в сайдбаре через блок «Shortcode» или «Custom HTML», а также вставить прямо в текст страницы или записи.
Проблема со ссылками
По умолчанию Display Posts создаёт ссылки на заголовки постов. Для авторизованных пользователей (админ, редактор, автор) они работают и ведут на превью поста, а для незалогиненных пользователей ссылки ведут на 404, так как пост ещё не опубликован.
Решение с CSS
Чтобы ссылки отображались только для авторизованных пользователей, а для всех остальных были просто текстом, добавьте следующий CSS в кастомный CSS вашего сайта или в тему:
.logged-out .display-posts-list a {
pointer-events: none;
cursor: default;
text-decoration: none;
color: inherit;
}
Для незалогиненных пользователей ссылки внутри .display-posts-list становятся некликабельными благодаря классу .logged-out, в то время как авторизованные пользователи видят рабочие ссылки. Таким образом вы можете безопасно показывать список будущих постов на сайте без риска, что посетители попадут на 404 страницы.
Способ второй: показываем запланированные посты вручную
Если вы предпочитаете лёгкий кастомный код без плагинов, добавьте следующий код в файл functions.php вашей дочерней темы или создайте небольшой собственный плагин-сниппет.
// Add this code to your child theme's functions.php or a small custom plugin
function wpb_upcoming_posts() {
// Query for future posts
$the_query = new WP_Query( array(
'post_status' => 'future', // Only get scheduled posts
'posts_per_page' => 3, // Limit number of posts displayed
'orderby' => 'date', // Order by post date
'order' => 'ASC', // Earliest posts first
) );
// Initialize output variable
$output = '';
// Check if there are future posts
if ( $the_query->have_posts() ) {
$output .= '<ul class="upcoming-posts">';
while ( $the_query->have_posts() ) {
$the_query->the_post();
// Escape title and date for security
$title = esc_html( get_the_title() );
$date = esc_html( get_the_date( get_option( 'date_format' ) ) );
// If user is logged in, show link; otherwise show only title and date
if ( is_user_logged_in() ) {
$permalink = esc_url( get_permalink() );
$output .= "<li><a href=\"{$permalink}\">{$title}</a> ({$date})</li>";
} else {
$output .= "<li>{$title} ({$date})</li>";
}
}
$output .= '</ul>';
} else {
// Message if no scheduled posts are found
$output .= '<p>No upcoming posts yet.</p>';
}
// Reset post data after query
wp_reset_postdata();
// Return the HTML output
return $output;
}
// Register shortcode [upcoming_posts]
add_shortcode( 'upcoming_posts', 'wpb_upcoming_posts' );
// Enable shortcode execution in text widgets
add_filter( 'widget_text', 'do_shortcode' );
Теперь зайдите в Appearance – Widgets (или в редактор блоков) , добавьте блок «Shortcode» или «Custom HTML» в сайдбар и вставьте этот шорткод:
[upcoming_posts]

Нажмите на кнопку сохранения и зайдите на сайт, чтобы увидеть список запланированных постов в сайдбаре. Вы также можете добавлять этот шорткод к себе в пост, на страницу или в шаблон.
Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520

Ответить
Хотите присоединиться к обсуждению?Не стесняйтесь вносить свой вклад!