<!--nextpage-->
というブログ記事をプレビューしようとしていますが、他のページをクリックするとホームページに戻ります。
4年前に解決したことのない古いスレッドがありました https://wordpress.org/support/topic/nextpage-doesnt-work-on-preview?replies=3
プレビューしたときのURLは次のようになります。
https://www.trajano.net/?p=1569&preview_id=1569&preview_nonce=c1ab9c2efc&post_format=standard&_thumbnail_id=-1&preview=true
結構ですが、ページをクリックするとこうなります。
https://www.trajano.net/?p=1569%2F2%2F&preview_id=1569&preview_nonce=c1ab9c2efc&preview=true
ページ番号は、デコードされた場合の?p=1569
のように?p=1569/2/&preview...
の後に挿入されます。
スケジュールされた投稿またはページをプレビューするときにコンテンツページネーションリンクが機能しないというバグがあります。
チケットを見る #32295
_wp_link_page()
ヘルパー関数内に不足しているfuture
ステータスチェックを追加するパッチがすでに提案されています。これはコンテンツページネーションリンクを生成します。
例えば以下のようなクイックフィックスを作成します。
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 );
または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 );