私はJavascriptでこれの私自身のバージョンを実装しているので、私はWordPressからこの機能を完全に無効にしたいです。
get_the_content()
またはthe_content()
を使って投稿内のすべてのコンテンツを取得しようとすると、最初のページしか表示されません。コンテンツに改ページがあるためです。 $post->the_content
を使用すると、完全な投稿が表示されますが、HTMLタグでフォーマットされていません。プログラム的に自分自身を追加する必要はありません。
ですから、私はすべてのコンテンツをフォーマット済みにする必要があります - これを行う方法は現時点では私にはわからないか、wp_page_links()
を無効にして私の投稿にページを付けないようにします。
EDIT - 4.4が出ましたので、content_pagination
フィルタを使うべきです。下記のbirgireの答えを見てください。
生の投稿コンテンツにフォーマットを追加するには、 適用 the コンテンツフィルタ を$post->post_content
に直接追加します。
echo apply_filters( 'the_content', $post->post_content );
これはget_the_content
関数を使用しないことによってページネーションを回避します。これはthe_content
がマルチページ投稿のために現在のページのコンテンツを取得するために内部的に使用するものです。
関数が呼び出される前にフィルタを出力に適用し、 wp_link_pages
ヘルパー関数を使用することで、__return_empty_string
が何も出力しないようにすることができます。
add_filter( 'wp_link_pages', '__return_empty_string' );
WordPress 4.4ではcontent_pagination
フィルタを使うことができます(ticket #9911 を参照)
/**
* Filter the "pages" derived from splitting the post content.
*
* "Pages" are determined by splitting the post content based on the presence
* of `<!-- nextpage -->` tags.
*
* @since 4.4.0
*
* @param array $pages Array of "pages" derived from the post content.
* of `<!-- nextpage -->` tags..
* @param WP_Post $post Current post object.
*/
$pages = apply_filters( 'content_pagination', $pages, $post );
このフィルタはWP_Query
クラスのsetup_postdata()
メソッドにあり、ページネーションページを修正するのをより簡単にします。
コンテンツのページ区切りを削除する方法の例をいくつか示します(PHP 5.4以降)。
コンテンツのページ区切りを無効にする方法は次のとおりです。
/**
* Disable content pagination
*
* @link http://wordpress.stackexchange.com/a/208784/26350
*/
add_filter( 'content_pagination', function( $pages )
{
$pages = [ join( '', $pages ) ];
return $pages;
} );
メインクエリループのみをターゲットにしたい場合は、
/**
* Disable content pagination in the main loop
*
* @link http://wordpress.stackexchange.com/a/208784/26350
*/
add_filter( 'content_pagination', function( $pages )
{
if ( in_the_loop() )
$pages = [ join( '', $pages ) ];
return $pages;
} );
メインループでpost
投稿タイプのみをターゲットにしたい場合は、次のようにします。
/**
* Disable content pagination for post post type in the main loop
*
* @link http://wordpress.stackexchange.com/a/208784/26350
*/
add_filter( 'content_pagination', function( $pages, $post )
{
if ( in_the_loop() && 'post' === $post->post_type )
$pages = [ join( '', $pages ) ];
return $pages;
}, 10, 2 );
投稿コンテンツからnextpage
マーカーを削除することで、1つのフィルタで「リンクページ」機能を無効にすることができます。
function kill_pages($posts,$qry) {
if ($qry->is_single()) {
$posts[0]->post_content = preg_replace( '/<!--nextpage(.*?)?-->/', '', $posts[0]->post_content );
}
return $posts;
}
add_filter('the_posts','kill_pages',1,2);