Несколько полезных хуков добавляемых в functions.php.
Иного необходимо организовать просмотр запланированных записей гостями и изменение URL записи для запланированных.
Такое может понадобиться, если вы планируете сделать архив записей по годам, а также запланированные записи (мероприятия).
Это код чисто для записей (рубрики пустые)
// post, page post type add_filter( 'post_link', 'future_permalink', 10, 3 ); // custom post types add_filter( 'post_type_link', 'future_permalink', 10, 4 ); function future_permalink( $permalink, $post, $leavename, $sample = false ) { /* for filter recursion (infinite loop) */ static $recursing = false; if ( empty( $post->ID ) ) { return $permalink; } if ( !$recursing ) { if ( isset( $post->post_status ) && ( 'future' === $post->post_status ) ) { // set the post status to publish to get the 'publish' permalink $post->post_status = 'publish'; $recursing = true; return get_permalink( $post, $leavename ) ; } } $recursing = false; return $permalink; } /** * Разрешает гостям просматривать запланированные записи */ function allow_future_posts_to_guests($query) { if (!is_admin() && $query->is_main_query() && $query->is_singular()) { // Разрешаем доступ к записи, даже если она запланирована $query->set('post_status', array('publish', 'future')); } } add_action('pre_get_posts', 'allow_future_posts_to_guests');
Этот код более усовершенствованный (в рубриках, архивах, все выводит)<?php /** * Хук 1: Изменяет постоянную ссылку для запланированных записей * Позволяет формировать корректный URL даже для постов со статусом 'future' */ add_filter('post_link', 'future_permalink', 10, 3); add_filter('post_type_link', 'future_permalink', 10, 4); function future_permalink($permalink, $post, $leavename, $sample = false) { static $recursing = false; if (empty($post->ID)) { return $permalink; } if (!$recursing) { if (isset($post->post_status) && 'future' === $post->post_status) { $post->post_status = 'publish'; $recursing = true; return get_permalink($post, $leavename); } } $recursing = false; return $permalink; } /** * Хук 2: Разрешает гостям просматривать запланированные записи * Работает для одиночных записей, архивов, категорий, главной страницы и поиска */ function allow_future_posts_to_guests($query) { // Не вмешиваемся в админку и вторичные запросы if (is_admin() || !$query->is_main_query()) { return; } // Проверяем типы страниц, где нужно показать future-записи $is_target_page = $query->is_singular() || $query->is_archive() || $query->is_home() || $query->is_search() || $query->is_tax(); if ($is_target_page) { // Опционально: ограничить только нужным типом записи или категорией // if ($query->get('post_type') === 'event' || is_category('events')) { $query->set('post_status', array('publish', 'future')); // } // Опционально: сортировка — будущие записи сверху // $query->set('orderby', 'date'); // $query->set('order', 'DESC'); } } add_action('pre_get_posts', 'allow_future_posts_to_guests');