Ich bin auf ein seltsames Problem gestoßen.
Angenommen, Sie greifen auf eine zufällige URL zu, die drei oder mehr Ebenen tief ist:
http://example.com/a/b/c
http://example.com/a/b/c/d
...
Dann is_404()
ist true
. So weit, ist es gut. Aber aus irgendeinem Grund werden die letzten Beiträge abgefragt.
$wp_query->request
ist
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
Was dann natürlich have_posts()
zurückkehrt true
und so weiter. Kann jemand das erklären?
Was ich bisher herausgefunden habe:
Der Grund, der nur in drei oder mehr Ebenen einsetzt, ist, dass WP zuvor nach Posts und Anhängen sucht, die irgendwie zu einem anderen Verhalten führen.
Es scheint, dass WP, obwohl es die Anfrage an einem Punkt als 404 erkennt, die neuesten Beiträge abruft. Mit Hilfe von @kaiser und @GM habe ich dies von /wp-includes/class-wp.php:608 aufgespürt