Tengo un blog con varias páginas en alguna categoría de "proyectos" que están estructurados / nombrados así:
- / proyectos / proyecto-2012
- / proyectos / proyecto-2013
- / proyectos / proyecto-2014
- / proyectos / proyecto-2015
Cuando un usuario ingresa URL como http://myblog.com/project o incluso http://myblog.com/proje , se lo redirige a la página / projects / project-2012 . (¡Con un 301 movido permanentemente!)
Si bien quiero que WordPress convierta las URL que dan como resultado una página claramente definida (por ejemplo, http://myblog.com/?p=123 ) en forma canónica, quiero deshabilitar solo la finalización automática de URL para URL "poco claras" que podría apuntar a varias páginas.
Mi pregunta es: ¿cómo puedo lograr esto?
También investigué un poco ...
La respuesta aceptada a la pregunta Desactivar autocompletar URL de Wordpress deshabilita todo el sistema de URL canónico. Esto no es aceptable para mi.
Hace unos cuatro años, algo así apareció en el rastreador de errores de Wordpress: https://core.trac.wordpress.org/ticket/8948 Mientras que algunas buenas soluciones (como ofrecer una página "No encontramos su URL. tal vez buscando una de las siguientes páginas? ") se discutieron allí, el boleto se cerró al final.
EDITAR: en realidad hay un boleto más nuevo en https://core.trac.wordpress.org/ticket/16557 que cubre exactamente lo que necesito. Parece estar dirigido a la versión 4.0. Y los comentarios del ticket también contienen una solución (ver más abajo).
Respuestas:
De acuerdo, después de buscar un poco más, finalmente encontré una respuesta a mi propia pregunta oculta en un comentario de este ticket de solicitud de función: https://core.trac.wordpress.org/ticket/16557 El usuario sugirió utilizar este código:
Si agrega esto a un nuevo archivo php de complemento (por ejemplo, en wp-content / plugins / disable-url-autocorrect-guesssing.php) tendrá un buen complemento que puede activar para desactivar la función de "adivinación" de autocorrección de Wordpress .
Para ahorrarte el problema, hice esto y entregué mi plugin en Wordpress.org. Una vez que se revise allí, debería poder descargarlo aquí: https://wordpress.org/plugins/disable-url-autocorrect-guessing/
Si bien esta es una solución que funciona, el código sugerido es un truco. Una vez que se implemente la solicitud de características en https://core.trac.wordpress.org/ticket/16557 , habrá mejores soluciones para esto, así como un control mucho mejor sobre cómo se deben realizar las conjeturas.
fuente
remove_filter()
. Pero ahora pasando por alto solo un caso específico en el que estoy teniendo problemas. Por si alguien interesado en mi problema: wordpress.stackexchange.com/questions/307670/…Desafortunadamente,
redirect_canonical()
hay más de 400 líneas de código (y sigue creciendo de versión en versión), que no está particularmente estructurado para ser controlado por propósito. Es un acuerdo de todo o nada que no se puede configurar de manera flexible.Desde el punto de vista práctico, sus mejores opciones son:
template_redirect
.redirect_canonical
gancho si el objetivo que se le ocurrió no es deseable.En cualquier caso, tendrá que desarrollar la lógica de lo que hace exactamente la redirección no deseada.
fuente
redirect_guess_404_permalink()
y no hace tal distinción, solo toma la primera coincidencia que SQL produce :(