web-dev-qa-db-fra.com

<! - nextpage -> et aperçus

J'essaie de prévisualiser mon article de blog qui a <!--nextpage--> mais en cliquant sur l'une des autres pages, vous revenez simplement à la page d'accueil.

Il y avait un vieux fil qui n'avait jamais été résolu il y a 4 ans https://wordpress.org/support/topic/nextpage-doesnt-work-on-preview?replies=3

L'URL lorsque je fais un aperçu ressemble à ceci

https://www.trajano.net/?p=1569&preview_id=1569&preview_nonce=c1ab9c2efc&post_format=standard&_thumbnail_id=-1&preview=true

Tout va bien, mais une fois que je clique sur une page, cela se produit:

https://www.trajano.net/?p=1569%2F2%2F&preview_id=1569&preview_nonce=c1ab9c2efc&preview=true

Notez que le numéro de page est injecté après ?p=1569 comme ?p=1569/2/&preview... s'il a été décodé.

3
Archimedes Trajano

Il y a un bogue concernant la pagination de contenu links ne fonctionnant pas lors de la prévisualisation de planifiéposts ou de pages.

Voir ticket # 32295

Il existe déjà un correctif proposé qui ajoute la vérification d'état future manquante dans la fonction d'assistance _wp_link_page(), qui génère les liens de pagination de contenu.

Nous pourrions par exemple construire un correctif rapide comme:

add_filter( 'preview_post_link', function( $link, $post )
{
    if( ! is_admin() && is_preview() && 'future' === get_post_status( $post ) )
        $link = preg_replace( '~p=(\d+)%2F(\d+)%2F~', 'p=$1&page=$2', $link );

    return $link;
}, 10, 2 );

ou utilisez le filtre wp_link_pages_link:

add_filter( 'wp_link_pages_link', function( $link, $i )
{
    if( $i > 1 && 'future' === get_post_status( get_the_ID() ) && is_preview() )
            $link = preg_replace( '~p=(\d+)%2F(\d+)%2F~', 'p=$1&page=$2', $link );

    return $link;
}, 10, 2 );
2
birgire