Je souhaite désactiver totalement cette fonctionnalité à partir de WordPress car j'implémente ma propre version avec Javascript.
Lorsque j'essaie de récupérer tout le contenu d'un message via les fonctions get_the_content()
ou the_content()
, il ne me donne que la première page, car le contenu contient les sauts de page. Lorsque j'utilise $post->the_content
, je reçois le message complet, mais il n'est pas formaté avec des balises HTML. Je ne veux pas avoir à les ajouter moi-même par programmation.
Donc, je dois soit avoir tout le contenu déjà formaté - la manière de le faire m’est inconnue pour le moment, soit désactiver wp_page_links()
pour que cela ne pagine pas mes messages.
EDIT - Maintenant que 4.4 est sorti, vous devriez utiliser le filtre content_pagination
. Voir la réponse de birgire ci-dessous.
Vous pouvez ajouter un formatage au contenu de publication brut en en appliquant les filtres de contenu directement à $post->post_content
:
echo apply_filters( 'the_content', $post->post_content );
Cela contournera la pagination en n'utilisant pas la fonction get_the_content
, qui est ce que the_content
utilise en interne pour extraire le contenu de la page en cours pour des publications de plusieurs pages.
Vous pouvez empêcher toute sortie de wp_link_pages
en appliquant un filtre à sa sortie avant l'appel de la fonction et en utilisant la fonction __return_empty_string
helper:
add_filter( 'wp_link_pages', '__return_empty_string' );
À partir de WordPress 4.4, nous pouvons utiliser le filtre content_pagination
(voir 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 );
Ce filtre réside dans la méthode setup_postdata()
de la classe WP_Query
et facilitera la modification des pages de pagination.
Voici quelques exemples pour supprimer la pagination de contenu (PHP 5.4+):
Voici comment désactiver la pagination du contenu:
/**
* Disable content pagination
*
* @link http://wordpress.stackexchange.com/a/208784/26350
*/
add_filter( 'content_pagination', function( $pages )
{
$pages = [ join( '', $pages ) ];
return $pages;
} );
Si nous voulons uniquement cibler la boucle de requête principale:
/**
* 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;
} );
Si nous voulons seulement cibler post
post, tapez dans la boucle principale:
/**
* 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 );
Vous pouvez supprimer la fonctionnalité "Pages de liens" dans un filtre en supprimant les marqueurs nextpage
du contenu du message:
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);