Aggiornamento 21-01-2016
Tutti i test attuali da parte mia vengono eseguiti su nuove installazioni di 4.4.1 con le seguenti impostazioni:
Plain permalinks
Twentysixteen Theme
No plugins activated
Se il post ha solo 1 pagina (cioè <!--nextpage-->
non appare nel post), le pagine extra vengono aggiunte correttamente (anche se aggiungi più pagine extra¹).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Se il post ha 2+ pagine, le pagine extra 404 e il reindirizzamento canonico alla pagina 1 del post.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
Nel secondo caso $wp_query->queried_object
è vuoto dopo aver toccato le pagine extra. Per vedere questo, dovrai disabilitare il reindirizzamento canonicoremove_filter('template_redirect', 'redirect_canonical');
Entrambe le seguenti correzioni principali sono state provate, separatamente e insieme, senza alcun cambiamento nel comportamento: https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Per facilità d'uso questo è il codice con cui sto attualmente testando:
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;
}
¹Questo è il codice che ho usato per testare più pagine extra su un singolo post
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;
}
Domanda originale
Prima della 4.4 ero in grado di aggiungere una pagina aggiuntiva a un post di mutlipage con il seguente:
add_action('template_redirect', 'custom_content');
function custom_content() {
global $post;
$content = html_entity_decode(stripslashes(get_option('custom_content')));
$post->post_content .= $content;
}
Con get_option ('custom_content') è qualcosa del tipo:
<!--nextpage-->
Hello World
Dall'aggiornamento a 4.4 il codice non ha funzionato; la navigazione nella pagina aggiuntiva genera un errore 404 e redirect_canonical li rimanda al permalink del post. La disabilitazione di redirect_canonical mi consente di visualizzare la pagina aggiuntiva e il contenuto aggiuntivo è lì, ma provoca ancora un errore 404.
Ho provato una serie di soluzioni alternative, nessuna delle quali risolve l'errore 404, tra cui:
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;
}
Ho anche provato a sfruttare il nuovo filtro content_pagination che è stato aggiunto in 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;
}
A questo punto non ho idea di come ripristinare questa funzionalità e qualsiasi assistenza sarebbe apprezzata.