Quelle fonction puis-je utiliser pour récupérer le contenu d'une seule page dans un message? Supposons que je veuille diviser mon article en 5 pages. Comment puis-je obtenir le contenu de la page 3, par exemple?
Je n'arrive pas à trouver cela dans le Codex ...
Cela devrait faire l'affaire:
/**
* For posts paginated using <!--nextpage-->, return a particular "page" of content.
* This function uses code from WP's setup_postdata() function.
* @param string $content the content to search for paginated page content.
* @param int $page_number the index of the page to return the content for.
*/
function get_nextpage_content( $content, $page_number ) {
if ( strpos( $content, '<!--nextpage-->' ) ) {
$content = str_replace("\n<!--nextpage-->\n", '<!--nextpage-->', $content);
$content = str_replace("\n<!--nextpage-->", '<!--nextpage-->', $content);
$content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content);
$pages = explode('<!--nextpage-->', $content);
return ( isset ( $pages[$page_number - 1] ) ) ? $pages[$page_number - 1] : false;
} else {
return false;
}
}
Usage:
// Get the second page of content with a paginated post
echo apply_filters( 'the_content', get_nextpage_content( $post->post_content, 2 ) );
Vous devez d’abord exploser le contenu, puis exécuter quelques fonctions sur le contenu pour activer le formatage "paragraphe automatique" et les codes courts de WordPress.
$post_content = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = {$post->ID} LIMIT 0,1");
$raw_pages = explode('<!--nextpage-->', $post_content);
foreach($raw_pages as $raw_page){
$pages[] = wpautop( do_shortcode( trim($main_content) ) );
}
Maintenant, vous pouvez faire écho à chaque page comme suit:
<?php echo $page[0]; // Page 1 ?>
Vous pouvez également implémenter cette fonctionnalité/concept un peu différemment. J'aime diviser mon article en deux pages pour donner à mon rédacteur publicitaire la possibilité de créer le contenu principal et le contenu de la barre latérale. J'assigne essentiellement la deuxième page à la barre latérale. Bien que vous puissiez utiliser le même code que ci-dessus, un nettoyeur (encore moins flexible) pourrait être de faire quelque chose comme ça ...
$post_content = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = {$post->ID} LIMIT 0,1");
list($main_content, $sidebar_content) = explode('<!--nextpage-->', $post_content);
$main_content = wpautop( do_shortcode( trim($main_content) ) );
$sidebar_content = wpautop( do_shortcode( trim($sidebar_content ) ) );
Maintenant, je peux simplement renvoyer la variable $main_content
ou $sidebar_content
où je veux dans mon modèle de page.