Actualizar 2016-01-21
Todas las pruebas actuales de mi parte se están realizando en nuevas instalaciones de 4.4.1 con la siguiente configuración:
Plain permalinks
Twentysixteen Theme
No plugins activated
Si la publicación solo tiene 1 página (es decir <!--nextpage-->
, no aparece en la publicación), las páginas adicionales se agregan con éxito (incluso si agrega varias páginas adicionales¹).
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Si la publicación tiene más de 2 páginas , las páginas adicionales 404 y la redirección canónica a la página 1 de la publicación.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<!--nextpage-->
This is page 2
En el segundo caso $wp_query->queried_object
está vacío una vez que llegue a las páginas adicionales. Tendrá que deshabilitar la redirección canónica para ver estoremove_filter('template_redirect', 'redirect_canonical');
Se han intentado las dos correcciones principales siguientes, por separado y juntas, sin cambios en el comportamiento: https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
Para facilitar su uso, este es el código con el que estoy probando actualmente:
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;
}
¹ Este es el código que usé para probar varias páginas adicionales en una sola publicación de página
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;
}
Pregunta original
Antes de 4.4 pude agregar una página adicional a una publicación de mutlipage con lo siguiente:
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') siendo algo así como:
<!--nextpage-->
Hello World
Desde la actualización a 4.4, el código no ha funcionado; navegar a la página adicional desencadena un error 404 y redirect_canonical los envía de vuelta al enlace permanente de la publicación. La desactivación de redirect_canonical me permite ver la página adicional y el contenido adicional está allí, pero aún activa un error 404.
He intentado varias soluciones alternativas, ninguna de las cuales resuelve el error 404, que incluye:
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;
}
También intenté aprovechar el nuevo filtro content_pagination que se agregó en 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;
}
En este punto no tengo ideas sobre cómo restaurar esta funcionalidad y cualquier ayuda sería apreciada.