私は奇妙な問題に出くわしました。
3レベル以上の深さのランダムな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
てきます。誰かがこれを説明できますか?
これまでにわかったこと:
3つ以上のレベルでのみキックインする理由は、そのWPがその前に投稿と添付ファイルを検索するため、何らかの形で他の動作が発生するためです。
WPがリクエストをある時点で404として認識したとしても、最新の投稿をフェッチするようです。@kaiserおよび@GMの助けを借りて、これを/wp-includes/class-wp.php:608からどこかに追跡しました