@toscho向this answer 这让我再次思考。我们应该在全球范围内有多大的信任,特别是对于像$post
?
那又怎样?在检查运行之前,可以覆盖所有人的全局变量。这就是全局变量的要点:全局访问。
$post
例如,它肯定是大多数在主题本身内或通过插件修改的全局变量之一。然而,它也是在给定模板内的其他应用程序中最常用的全局应用程序,例如,用于设置相关帖子。
回答(和评论)几个有具体问题的帖子caused by the use of custom queries, 最突出的是,大多数问题都是由于未重置自定义查询(自定义查询更改主查询设置的全局值)而导致的。
由此看来,很明显$post
不可靠。任何使用自定义查询的写得不好的代码都会改变$post
这反过来又会破坏一些东西(比如相关的帖子)。
实际上,只有少数WordPress开发人员对core的内部工作有足够的了解,知道应该避免什么和不应该避免什么。更多的用户不知道WordPress核心是如何运行的。
他们只需下载一个主题并安装插件即可完成所需操作,甚至只需复制教程中的代码即可。如果他们安装了一个写得很差的插件,在一篇文章中打断了他们的相关文章,他们怎么知道是什么原因造成的?他们能自己解决这个问题吗?或者他们是第一百个就这个问题向主题作者发送电子邮件的人,还是在这个网站上发布问题的人?
My question: 当一个全局$post
这么不可靠?我们应该使用一个全局like$post
完全有哪些替代方案?
在结束之前,我想在这里分享一下我的想法:我已经想到(也在一些主题和插件中看到)使用wp_reset_postdata()
或wp_reset_query()
使用前$post
, 确保将全局查询重置为主查询的$post
. 但为什么我要在我的主题中夸大我的代码,因为其他人没有正确地编写他的插件?如果有人正确地重置了自定义查询,则此操作将不必要地再次运行,这是不好的。
我想到的第二种方法是利用$wp_query
然后使用它的方法,比如$wp_query->post
.
对此有任何想法都将不胜感激。