Me encontré con un problema extraño.
Supongamos que accede a una URL aleatoria, con tres o más niveles de profundidad:
http://example.com/a/b/c
http://example.com/a/b/c/d
...
Entonces is_404()
es true
. Hasta ahora tan bueno. Pero por alguna razón se consultan las últimas publicaciones.
$wp_query->request
es
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
AND wp_posts.post_type = 'post'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
Lo cual, por supuesto, have_posts()
devuelve, true
etc. ¿Alguien puede explicar esto?
Lo que descubrí hasta ahora:
La razón por la que solo entra en tres o más niveles de profundidad es que antes de que WP busque publicaciones y archivos adjuntos que de alguna manera resultan en algún otro comportamiento.
Parece que a pesar de que WP reconoce la solicitud como 404 en un punto, luego obtiene las publicaciones más recientes. Con la ayuda de @kaiser y @GM , he rastreado esto en algún lugar desde /wp-includes/class-wp.php:608