Mise à jour 2016-01-21
Tous les tests actuels de ma part sont effectués sur de nouvelles installations de 4.4.1 avec les paramètres suivants:
Plain permalinks
Twentysixteen Theme
No plugins activated
Si la publication ne comporte qu'une seule page (c'est-à <!--nextpage-->
- dire qu'elle n'apparaît pas dans la publication), les pages supplémentaires sont correctement ajoutées (même si vous ajoutez plusieurs pages supplémentaires¹).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Si le message contient plus de 2 pages, les pages supplémentaires 404 et la redirection canonique vers la page 1 du message.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
Dans le second cas $wp_query->queried_object
est vide une fois que vous avez atteint les pages supplémentaires. Vous devrez désactiver la redirection canonique pour voir ceciremove_filter('template_redirect', 'redirect_canonical');
Les deux correctifs de base suivants ont été essayés, séparément et ensemble, sans changement de comportement: https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Pour plus de facilité d'utilisation, voici le code avec lequel je teste actuellement:
add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
global $post;
$content = "\n<!--nextpage-->\nThis is the extra page v1";
$post->post_content .= $content;
}
add_filter('content_pagination', 'custom_content_two', 10, 2);
function custom_content_two($pages, $post) {
if ( in_the_loop() && 'post' === $post->post_type ) {
$content = "This is the extra page v2";
$pages[] = $content;
}
return $pages;
}
add_action('the_post', 'custom_content_three');
function custom_content_three() {
global $multipage, $numpages, $pages;
$content = "This is the extra page v3";
$multipage = 1;
$numpages++;
$pages[] = $content;
}
¹C'est le code que j'ai utilisé pour tester plusieurs pages supplémentaires sur une seule page
add_action('template_redirect', 'custom_content_one');
function custom_content_one() {
global $post;
$content = "\n<!--nextpage-->\nThis is the extra page v1-1\n<!--nextpage-->\nThis is the extra page v1-2\n<!--nextpage-->\nThis is the extra page v1-3";
$post->post_content .= $content;
}
Question d'origine
Avant la version 4.4, je pouvais ajouter une page supplémentaire à un message multipage avec ce qui suit:
add_action('template_redirect', 'custom_content');
function custom_content() {
global $post;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$post->post_content .= $content;
}
Avec get_option ('custom_content') étant quelque chose comme:
<!--nextpage-->
Hello World
Depuis la mise à niveau vers 4.4, le code n'a pas fonctionné; la navigation vers la page supplémentaire déclenche une erreur 404 et redirect_canonical les renvoie au permalien de la publication. La désactivation de redirect_canonical me permet d'afficher la page supplémentaire et le contenu supplémentaire est là, mais cela déclenche toujours une erreur 404.
J'ai essayé un certain nombre de solutions de contournement, dont aucune ne résout l'erreur 404, notamment:
add_action('the_post', 'custom_content');
function custom_content() {
global $multipage, $numpages, $pages;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$multipage = 1; // ensure post is considered multipage: needed for single page posts
$numpages++; // increment number of pages
$pages[] = $content;
}
A également essayé de tirer parti du nouveau filtre content_pagination qui a été ajouté dans 4.4:
add_filter('content_pagination', 'custom_content', 10, 2);
function custom_content($pages, $post) {
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$pages[] = $content;
return $pages;
}
À ce stade, je n'ai plus d'idées sur la façon de restaurer cette fonctionnalité et toute aide serait appréciée.