Publicación única paginada no se redirige a la URL principal después de eliminar la paginación

4

He utilizado

<!--nextpage-->

( Codex ) para paginar (dividir) algunas publicaciones individuales. Ahora quité todas las partes html de la siguiente página de las publicaciones. Todo se ve bien. Lamentablemente las antiguas URL como

sample.com/tipps-for-me/2

sample.com/tipps-for-me/3

sample.com/tipps-for-me/4

...

no redirigir a la url principal sample.com/tipps-for-me . En su lugar, muestra exactamente el mismo contenido (completo) de la url principal ( sample.com/tipps-for-me ) cuando estoy viendo sample.com/tipps-for-me/2 , sample.com/tipps-for-me/3 , sample.com/tipps-for-me/4 y así sucesivamente.

No utilizo ningún complemento de redirección ni función de redirección en ningún lugar. ¿Alguna idea de cómo solucionar este problema?

    
pregunta NewUser 05.02.2016 - 11:07

1 respuesta

4

EDITAR

He jugado con una posible solución a tu problema. Podemos probar lo siguiente

  • Agregue nuestra propia acción a template_redirect donde hacemos lo siguiente

    • Compruebe que la solicitud actual sea una página de publicación única paginada y que no tenemos la etiqueta <!--nextpage--> en el contenido de la publicación.

    • Si todo sale bien en nuestra condición, haremos una redirección manual a la primera página de la publicación

Aquí está el código:

add_filter( 'template_redirect', function()
{
    if (    is_single() 
         && false === strpos( get_queried_object()->post_content, '<!--nextpage-->' )
         && get_query_var('page') 
    ) {
        wp_redirect( get_permalink( get_queried_object_id() ) );
        die;
    }
});

NOTAS IMPORTANTES

Esto también redirigirá la página de la única publicación paginada actual a la primera página, incluso si hacemos uso del filtro content_pagination . El código solo tiene en cuenta la etiqueta <!--nextpage--> , por lo que deberá asegurarse de que no paginará una sola publicación con ningún otro método que no sea la etiqueta <!--nextpage-->

FIN DE EDICIÓN

RESPUESTA ORIGINAL

Estoy bastante seguro de que esto necesitará mucha investigación y muchas pruebas, juramentos y reescrituras de código para hacer que esto funcione.

Desafortunadamente, cuando tienes una URL como sample.com/tipps-for-me/4 , WordPress lo hará y siempre lo tengo que recuerdo haber conocido a WordPress en la versión 3.3.1, aceptó esa estructura de URL como válida, incluso cuando una publicación solo tiene una página, así que Esto no es nada nuevo.

WordPress 4.4 vio el nuevo filtro content_pagination y el siguiente fragmento de código para redirect_canonical

$next = '<!--nextpage-->';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
    $page = trim( $this->query_vars['page'], '/' );
    $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}

Lo que esto hace con éxito es, si tienes la etiqueta <!--nextpage--> en una publicación, cada página después de la última página después de la etiqueta <!--nextpage--> 404 se redireccionará a la primera página. Esta es realmente la única vez que tendrá éxito con URL como sample.com/tipps-for-me/4 cuando esa página sea una página después de la última página después de la etiqueta <!--nextpage--> . Si eliminamos la etiqueta <!--nextpage--> , aún podemos ingresar exitosamente cualquier URL sin ser redirigidos como pre-WordPress 4.4

Sin embargo, este fragmento de código crea otros problemas que he planteado ( aún sin resolver ) trac ticket para, y entre yo y @birgire manejamos el problema en la siguiente pregunta hace una semana o dos

En el ticket de trac mencionado, pedí que eliminara el código de redirect_canonical() para evitar los nuevos problemas creados hasta que encontremos una solución sólida para manejar la paginación en publicaciones individuales.

Creo que lo que realmente hace esto muy difícil ahora es el nuevo filtro content_pagination , ya que tendremos que encontrar una manera de manejar las páginas correctamente que se agregan a través del filtro con y sin la etiqueta <!--nextpage--> . Otro problema es que antes de WordPress 4.4, la gente usaba el filtro the_post para agregar una página adicional a una sola publicación además de la etiqueta <!--nextpage--> , por lo que esto agrega aún más problemas para manejar de tal manera que no los rompamos. sitios que aún se basan en métodos válidos anteriores

PARA CONCLUIR

Ciertamente no habrá una solución para esto en un futuro próximo. Al igual que muchos otros errores que existen, como todas las publicaciones devueltas por WP_Query en un término o taxonomía no válido o en un envío de búsqueda vacío o sobre nombres de términos de desinfección en un tax_query , realmente no hay una solución concreta para solucionar estos problemas. Mi apuesta es que algunos de estos problemas nunca se solucionarán y se mantendrán hasta el final de los días.

Desde el punto de vista de SEO, no tiene ningún efecto, por lo que no es nada de qué preocuparse.

    
respondido por el Pieter Goosen 05.02.2016 - 12:33

Lea otras preguntas en las etiquetas