Ich möchte diese Funktionalität in WordPress vollständig deaktivieren, da ich meine eigene Version mit Javascript implementiere.
Wenn ich versuche, den gesamten Inhalt eines Posts über die get_the_content()
oder die the_content()
abzurufen, erhalte ich nur die erste Seite, da der Inhalt Seitenumbrüche aufweist. Wenn ich $post->the_content
verwende, erhalte ich den vollständigen Beitrag, der jedoch nicht mit HTML-Tags formatiert ist. Ich möchte diese nicht selbst programmatisch hinzufügen müssen.
Entweder muss ich den gesamten Inhalt bereits formatieren - die Art und Weise, wie dies geschieht, ist mir derzeit unbekannt, oder ich deaktiviere wp_page_links()
, damit meine Beiträge nicht paginiert werden.
EDIT - Nachdem 4.4 veröffentlicht wurde, sollten Sie den content_pagination
-Filter verwenden. Siehe Birgires Antwort unten.
Sie können den Inhalt der unformatierten Posts formatieren, indem Sie anwenden den Inhaltsfilter direkt an $post->post_content
senden:
echo apply_filters( 'the_content', $post->post_content );
Dies umgeht die Paginierung, indem die Funktion get_the_content
nicht verwendet wird. Diese Funktion verwendet the_content
intern, um den Inhalt der aktuellen Seite für mehrseitige Posts abzurufen.
Sie können verhindern, dass wp_link_pages
irgendetwas ausgibt, indem Sie einen Filter auf seine Ausgabe anwenden, bevor die Funktion aufgerufen wird, und die Hilfsfunktion __return_empty_string
verwenden:
add_filter( 'wp_link_pages', '__return_empty_string' );
Ab WordPress 4.4 können wir den content_pagination
Filter verwenden (siehe 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 );
Dieser Filter entspricht der setup_postdata()
-Methode der WP_Query
-Klasse und erleichtert das Ändern der Seitenumbrüche.
Hier einige Beispiele zum Entfernen der Inhaltspagination (PHP 5.4+):
So können wir die Paginierung von Inhalten deaktivieren:
/**
* Disable content pagination
*
* @link http://wordpress.stackexchange.com/a/208784/26350
*/
add_filter( 'content_pagination', function( $pages )
{
$pages = [ join( '', $pages ) ];
return $pages;
} );
Wenn wir nur die Hauptabfrageschleife anvisieren wollen :
/**
* 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;
} );
Wenn wir nur post
Beitragstypen in der Hauptschleife anvisieren wollen:
/**
* 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 );
Sie können die "Link-Seiten" -Funktionalität in einem Filter deaktivieren, indem Sie die nextpage
-Markierungen aus dem Inhalt des Posts entfernen:
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);