Deshabilitar el autocompletado de URL en WordPress
Recientemente noté que WordPress intenta autocompletar una URL cuando no se envía en su totalidad. Por ejemplo, tengo una URL de entrada que se ve así:
http://www.mysite.com/some-post-title
Si navego a la siguiente URL:
http://www.mysite.com/some-post-ti
Puedo ver que la URL se envía a WordPress pero que WordPress está haciendo una redirección 301 a http://www.mysite.com/some-post-title
.
¿Cómo puedo deshabilitar este comportamiento?

Creo que esa es la función redirect_canonical
enganchada a template_redirect
. Deberías poder desactivarla con:
remove_filter('template_redirect', 'redirect_canonical');
Pero realmente deberías considerar si deseas hacer eso, ya que es bastante complicada y realiza algunas funciones importantes para SEO:
Redirige los enlaces entrantes a la URL correcta basándose en la URL del sitio.
Los motores de búsqueda consideran www.somedomain.com y somedomain.com como dos URLs diferentes cuando ambas van a la misma ubicación. Esta mejora para SEO evita penalizaciones por contenido duplicado al redirigir todos los enlaces entrantes a una u otra.
Evita la redirección para feeds, trackbacks, búsquedas, ventanas emergentes de comentarios y URLs de administración. No redirige en IIS 7 que no admita enlaces permanentes bonitos, vistas previas de páginas/entradas, administración de WP, Trackbacks, robots.txt, búsquedas o en solicitudes POST.
También intentará encontrar el enlace correcto cuando un usuario ingrese una URL que no existe basada en la consulta exacta de WordPress. En su lugar, intentará analizar la URL o la consulta para determinar la página correcta a la que dirigirse.
http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/canonical.php#L13
El siguiente código podría desactivar el autocompletado sin afectar el componente de SEO, pero no lo puedo garantizar. El código apenas ha sido probado ya que nunca he querido desactivar esto. Realmente tendría que estudiar redirect_canonical
para estar seguro de algo.
function kill_404_redirect_wpse_92103() {
if (is_404()) {
add_action('redirect_canonical','__return_false');
}
}
add_action('template_redirect','kill_404_redirect_wpse_92103',1);

Agregué este fragmento de código al final de mi archivo /wp-includes/canonical.php y los redireccionamientos siguen ocurriendo. ¿Estoy haciendo algo mal? ¿Alguien más no puede desactivar este comportamiento?

@user1380540 no editas archivos del núcleo. Esto iría al functions.php del tema o a un plugin.

Esto parece terriblemente irresponsable, que esta "adivinación" ocurra automáticamente. Estaría mucho más abierto a ello si hubiera algún medio para definir cuál es la página correcta a la que dirigirse.
Tengo numerosas páginas que están construidas como una secuencia, y esta auto-adivinación está eligiendo incorrectamente responder con páginas que están (¿aleatoriamente?) en algún lugar de la secuencia, en lugar de la página de inicio.
ACTUALIZACIÓN: Este es un comportamiento conocido, y está siendo considerado aquí: https://core.trac.wordpress.org/ticket/16557

Como seguimiento a la respuesta de FitPM, se ha creado un complemento que deshabilita el comportamiento de auto-detección de URLs.
Funciona correctamente para mí en WordPress 4.8 al 2 de agosto de 2017. El complemento está aquí: https://wordpress.org/plugins/disable-url-autocorrect-guessing/

Una nota: Si deshabilitas redirect_canonical (por ejemplo con remove_action('template_redirect', 'redirect_canonical');
), enlaces aleatorios como https://tld.com/cadena-aleatoria/post-del-blog también funcionarán (se mostrará el contenido de https://tld.com/slug-de-categoria-real/post-del-blog).
Si quieres prevenir eso y devolver un error 404 en esas URLs aleatorias, usa algo como:
add_filter( 'redirect_canonical', function( $redirect_url ) {
$url = 'http'.((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off')?'s':'').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if( $redirect_url !== $url ) {
global $wp_query;
$wp_query->set_404();
status_header( 404 );
nocache_headers();
}
return false;
});
