Я столкнулся со странной проблемой.
Допустим, у вас есть произвольный URL-адрес глубиной три или более:
http://example.com/a/b/c
http://example.com/a/b/c/d
...
Тогда is_404()
есть true
. Все идет нормально. Но почему-то последние посты запрашиваются.
$wp_query->request
является
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
Который тогда, конечно, делает have_posts()
возврат true
и так далее. Может кто-нибудь объяснить это?
Что я узнал до сих пор:
Причина того, что только начинается на трех или более уровнях, заключается в том, что до этого WP ищет сообщения и вложения, что каким-то образом приводит к некоторому другому поведению.
Кажется, что хотя WP и распознает запрос как 404, он получает самые последние сообщения. С помощью @kaiser и @GM я отследил это где-то из /wp-includes/class-wp.php:608