WordPress перестал показывать пермалинки запланированных постов — решение!

WordPress перестал показывать пермалинки запланированных постов — решение!

2 ноября, 2015

После одного из обновлений ВордПресса, на разработанном мной сайте перестали отображаться красивые человекопонятные URL-адреса (permalinks) у запланированных (post_status=future) постов и вместо них появились безликие /p=123 и т. п. Для решения необходимо дописать в файл functions.php вашей темы WordPress’а следующий код:

// 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;
}