the_contentフィルターで無効化されるページ分割を再度実行する方法【WordPress】

作成日:

$post->post_contentで取得した本文生データにthe_contentのフィルターをかけても!--nextpage--によるページ分割が無効化されることがわかりました。

そこでthe_contentフィルターをかけてもページ分割出来るように書いてみます。

PHP
global $post, $page;
setup_postdata( $post );
$content = $post->post_content;
// <!--nextpage-->で本文データを配列に分割後、ページ番号に応じて本文セクションを取得.
$content = explode( '<!--nextpage-->', $content )[ $page - 1 ];

// $contentに自分のやりたい処理.

$content = apply_filters( 'the_content', $content );

コード解説

  1. グローバル変数$pageを取得してページ番号を取得しておきます。
    PHP [Ln 1]
    global $post, $page;
    
  2. setup_postdata()で投稿情報を各種のグローバル変数へセットします(必要らしい)。
    PHP [Ln 2]
    setup_postdata( $post );
    
  3. explode()で本文全体を!--nextpage--で配列に分割し、ページ番号に応じて本文セクションを取得します。
    PHP [Ln 5]
    $content = explode( '<!--nextpage-->', $content )[ $page - 1 ];
    
物草 灸太郎
物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

※ メールアドレスが公開されることはありません。