¿Por qué WordPress autocompleta las URLs y las termina como le parece?

Por si no te has fijado, cuando tecleas una URL en un sitio WordPress y te equivocas, no siempre aparece la típica página de error 404 sino que el sitio autocompleta la URL con el resultado de alguna página del sitio ¿y esto?

¿No sería lo normal que te mostrase la página de error 404 en vez de cualquier resultado aleatorio que empiece con lo que has tecleado?

Yo creo que sí, pero alguien en algún momento decidió que no y resulta que hace esta otra cosa…

Pedazo de mierda ¿no?

¿Quién es el culpable?

No sé el quién pero sí el qué. En concreto la función redirect_guest_404_permalink, que están en el archivo /wp-includes/canonical.php.

Y resulta que, como descubrió Luis, afecta a los siguientes enlaces permanentes:

  • Simple
  • Dia y nombre
  • Mes y nombre
  • Nombre de la entrada – %postname%

No ocurre si usas el formato numérico o una estructura personalizada como %postname%.html

El caso de la estructura simple es curioso, al tratar con números, no diferencia la entrada de la página, pasando totalmente de ?page_id= o ?p= en su caso.

Es decir, ?page_id=1234 es lo mismo que ?p=1234 o viceversa.

Vamos, un truño considerable.

Parece ser que la culpa la tiene en concreto la función redirect_canonical enganchada con template_redirect.

¿Tiene solución?

Pues hace ya la friolera de 8 años Andrew Nacin, un auténtico crack de WordPress y el desarrollo en general, propuso añadir un filtro para evitar este comportamiento aleatorio de WordPress.

Y seguimos esperando.

Afortunadamente, todo lo que hace WordPress se puede deshacer también con WordPress.

¿Y si quitamos el filtro que engancha redirect_canonical y template_redirect?

Fácil ¿no?

Solo habría que añadir esto a tu plugin de personalizaciones o al archivo functions.php del tema activo:

El problema es que puede hacer polvo la estructura de enlaces canonical de tu web, y arruinar el SEO de tu sitio, así que mejor pasamos de ello.

Resumiendo: ¡No hagas esto!

¿Qué tal añadir un filtro que mate el autocompletado sin joder el SEO?

Mucho mejor, dónde va a parar.

Para ello, Andrew nos propone añadir esta función a tu archivo de ñapas favorito (plugin o functions.php):

Funciona de coña y no anula la función redirect_canonical.

¿Y algún plugin para los que nos da repelús andar tocando código?

Claro, alguien (Hauke Pribnow en concreto) se ocupó ya de crear un plugin que aplica justo la función anterior, este. Lo instalas, lo activas y ya.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(5 votos, promedio: 4.6)
¿Te gustó este artículo? ¡No sabes lo que te estás perdiendo en YouTube!

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Mi último libro es WordPress - La guía completa. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera. Sigue a @fernandot en Twitter

Comparte esta entrada en
468 ad

Ir al contenido