ฉันเจอปัญหาแปลก ๆ
สมมติว่าคุณเข้าถึง 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