मैं एक अजीब मुद्दे पर आया था।
मान लें कि आप एक यादृच्छिक 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