Несколько полезных хуков добавляемых в 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');