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.
Respuestas:
ACTUALIZACIÓN 21-01-2016 19:35 SA TIEMPO - ERROR ENCONTRADO !!!!! ¡¡¡¡¡¡SI!!!!!!
Finalmente encontré el error. Como indicó en su última actualización, el error solo ocurre cuando
$post_content
hay una<!--nextpage-->
etiqueta en el contenido. Lo probé y confirmó que cualquier otra página después de la página después de que<!--nextpage-->
devuelve un 404 y luego la página vuelve a ser redirigida a la primera página.Esto se debe a las siguientes líneas de código en el
handle_404()
método que se introdujo en laWP
clase en WordPress 4.4Lo que hace este código es que, cada vez que
<!--nextpage-->
se establece la etiqueta enpost_content
, devolverá un 404 cuando se acceda a cualquier página que se agrega después del contenido a través delcontent_pagination
filtro. Debido a que se está configurando un 404,redirect_canonical()
redirige cualquier página adjunta a la primera páginaHe presentado un ticket de trac sobre este problema que puede consultar aquí.
En el momento de escribir esto, todavía no había comentarios, así que asegúrese de revisar regularmente el estado del boleto
SOLUCIÓN ACTUAL - A / W TRAC TICKET FEEDBACK
Por ahora, hasta que obtengamos algún comentario y posibles soluciones en futuras versiones, simplemente elimine esas líneas de la
WP
clase hasta nuevo avisoQUE HORA ES ...... ES TIEMPO DE DEPURACIÓN !!!!!
Tuve tiempo de probar esto completamente. Tomé tu código y lo probé en:
Mi instalación local v4.3
Mi instalación local v4.4.0
Mi instalación local v4.4.1
Complete la nueva instalación local v4.4.1 con solo la
Hello World
publicación y laSample Page
páginacon mis enlaces permanentes establecidos en
default
yPost Name
Aquí está mi código de prueba para crear 4 páginas dentro de mi publicación de prueba.
También probé
para una buena medida
En todas y cada una de las estructuras de instalación y enlace permanente, todo su código funciona ( excepto el
content_pagination
v4.3 que se espera ).También lo configuré
Sample Page
como una página principal estática, pero eso falló en la página 2 como conformación al error como se describe en mi RESPUESTA ORIGINAL y ** EDITAREntonces, la conclusión es que esto no tiene nada que ver con el error en el núcleo o cualquier otro error en el núcleo. De los comentarios, algo está desestabilizando el objeto consultado en las páginas de publicación paginada, y eso es algo que debemos depurar. Desafortunadamente, como este problema ahora está localizado, no puedo dar soluciones exactas.
DEPURANDO EL PROBLEMA
Debe usar el siguiente flujo de trabajo para depurar el problema
Consígase una gran cantidad de café con alto contenido de cafeína y mucho azúcar
Tome una copia de seguridad de usted db
Descargue e instale los siguientes complementos (no estoy afiliado a ningún complemento )
Objetos de depuración para la depuración normal. Una vez instalado y configurado, repare todos los errores obvios que el complemento pueda resaltar. No continúe con el siguiente punto principal si tiene errores obvios. Arreglarlos primero
Administrador de base de datos que usará para reparar y limpiar su base de datos antes de continuar con el siguiente punto
Borrar todos los cachés, navegadores y complementos
Desactive todos los complementos y borre todos los cachés nuevamente para una buena medida. Debido a que este problema parece un problema de redirección, probablemente primero desactive todos los complementos que puedan tener algo que ver con la redirección. Es posible que un complemento aún no sea compatible con v4.4. Compruebe si el problema persiste, si es así, continúe con el siguiente punto, de lo contrario, veamos esto con más detalle
Comience desactivando todos los complementos, también puede comenzar simplemente desactivando los complementos que podrían ser obvios para causar el problema. Probar adecuadamente su instalación después de la activación de todos y cada complemento. El primer complemento activado que causó el problema será el culpable. En ese caso, póngase en contacto con el autor del complemento con los detalles de depuración. Solo asegúrese de borrar sus cachés después de cada activación de complemento solo por si acaso
Si llegó a este punto, el punto anterior no resolvió su problema. El siguiente paso debería ser cambiar a un tema incluido para eliminar su tema como el problema. De nuevo, despeja los cachés.
Si todo falla, te quedan dos opciones más
Eliminar
.htaccess
y dejar que WordPress cree uno nuevoReinstalar WordPress
Esto debería resolver tu problema. Si no es así, debe considerar un error en el núcleo de WordPress que podría estar causando el problema.
Espero que esto ayude a atrapar el error
ACTUALIZAR
Debería haberme vinculado al siguiente boleto de trác que parece explicar todo más en detalle
Parches interesantes y bastante relevantes del boleto de trac anterior
https://core.trac.wordpress.org/ticket/35344#comment:16
https://core.trac.wordpress.org/ticket/35344#comment:34
No puedo probar concretamente nada como tal en este momento, pero debe trabajar a través de los parches sugeridos y probarlos. Lo que puedo captar es que el mismo código en el
redirect_canonical()
que es responsable de la paginación de páginas frontales estáticas también es responsable de la paginación en páginas individuales.RESPUESTA ORIGINAL
Las páginas individuales ( como las portadas estáticas ) se usan
get_query_var( 'page' )
para paginar. Con WordPress 4.4 ( y en v4.4.1 ), se produjo un error que causa problemas con la paginación cuando se usaget_query_var( 'page' )
para paginación.Los informes de errores actuales, como el ticket de trac # 35365 , solo mencionan las portadas estáticas que tienen problemas con la paginación, pero como se relaciona con el error
get_query_var( 'page' )
, creo que esto también causaría problemas con la paginación de una sola publicación que también usaget_query_var( 'page' )
.Debe probar los parches como se describe en los tickets de trac. Si esto funciona, puede aplicar el parche y esperar a la v4.4.2 que solucionará este error
fuente
Tenga en cuenta que hay un error de sintaxis para todos esos tres ejemplos que proporcionó:
donde
)
se agrega un extra .Reemplace estas líneas para:
No recomendaría jugar con objetos globales en general, por lo que creo que su último ejemplo con el
content_pagination
filtro es el camino a seguir aquí.También puede evitar agregar páginas vacías con:
También hay una falta
)
aquí:fuente