我遇到了一个奇怪的问题。
假设您访问一个随机网址,深度为三个或三个以上级别:
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的某个位置。
如果不添加该页面的代码会是很难帮助你
—
托马斯科特
这不是我的代码专用的。在具有所有默认主题的全新安装上,其行为也是如此。
—
kraftner 2014年
您能否命名至少一个主题,因为我的自定义主题无效?您是否在使用特定参数?你换了吗?您正在使用哪个版本的WP?
—
托马斯科特
真的可以 但是,如果您愿意,请尝试二十一。
—
kraftner 2014年
对不起所有问题,我以为帖子正在显示。
—
托马斯科特