¿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.

Si te gusta este contenido prueba tambien a suscribirte al canal en YouTube.
VALORA ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
FlojitoNo está malEstá bienMe ha servidoFantástico (4 votos, promedio: 5,00 de 5)
Cargando…

Al dejar una valoración se recopila la IP para evitar fraudes

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.

Comparte esta entrada en
468 ad

Centro de preferencias de privacidad

Cookies imprescindibles

Se usan para saber si ya aceptaste nuestras políticas, si ya estás suscrito a nuestra newsletter, para reconocer el estado de tu sesión si la tuvieses y para servir más rápidos los contenidos.

No se captura IPs ni siquiera para el servicio de Analytics así que tu visita es privada.

JSESSIONID, _cfuid, wpSGCachePypass, mailerlite, gdpr, gawp
mailerlite, _cfuid

Cookies de terceros

Usamos cookies de terceros con servicios, también garantes de tu privacidad, que analizan tus usos de navegación para que podamos mejorar los contenidos, si ya estás suscrito al boletín y los elementos compartidos en redes sociales y el formulario de comentarios.

1P_JAR, APISID, CONSENT, HPSID, NID, SAPISID, SID, SIDCC, SSID, disqus_unique, disqusauth
disqus_unique, disqusauth
1P_JAR, APISID, CONSENT, HPSID, NID, SAPISID, SID, SIDCC, SSID

Pin It on Pinterest

Share This
Ir al contenido