誰もがこれをうまく実装できましたか? 1つのポストループ内に<!--nextpage-->
をショートコードとして含めたいです。私はそれをエコーしようとしました、タグは現われます、しかし、ポストはページに分けられません。
single.php
内でdo_shortcode('[nextpage]');
をエコーし、実際にはそれを異なるページに分割する必要があります。
the_posts
フィルタを使う:これは、setup_postdata()
がアクティブになる前に起動するthe_posts
フィルターを使用した1つのアイデアです。
/**
* Replace [nextpage] with <!--nextpage--> through the 'the_posts' filter.
*
* @see http://wordpress.stackexchange.com/a/183980/26350
*/
! is_admin() && add_filter( 'the_posts', function( $posts )
{
$posts = array_map( function( $p )
{
if ( false !== strpos( $p->post_content, '[nextpage]' ) )
$p->post_content = str_replace( '[nextpage]', '<!--nextpage-->', $p->post_content );
return $p;
}, $posts );
return $posts;
});
あなたのアプローチがうまくいかない理由は、あなたの[nextpage]
ショートコードは投稿のページ付けを扱うsetup_postdata()
の後に生成され、投稿内容の中で<!--nextpage-->
をチェックしたからです。
ここで私はいくつかの WordPress Lorem Ipsum でそれをテストします。
TwentyFifteenデフォルトテーマのフロントエンドに次の出力があります。