Wordpress is_home()函数对多个post类型查询返回假阳性


Wordpress is_home() function returns false positive for multiple post-type query

我挣扎的东西对我来说似乎是Wordpress的逻辑缺陷,但不管它是不是,我需要一个解决方案。我不得不修改我目前的设置,并改变几乎所有的查询,包括两个帖子类型,而不是只有一个。

现在我的查询工作得很好,但是很多功能缺乏,因为is_home()在我的存档页面上返回1而不是0。根据它的文档,函数应该只有1在我的博客页面

* If a static page is set for the front page of the site, this function will return true only
* on the page you set as the "Posts page".

事实上,它返回true,虽然我在不同的存档比我的"帖子页"(这是博客)。如果对该存档的查询只包含一个post_type,则is_home()返回0。如果我在查询中添加另一个帖子类型(这对我来说是必要的),is_home()返回true

问题在Wordpress核心的query.php文件中。如果查询对象中的is_archivefalse,则is_home()返回true。但is_archive在我的情况下应该是正确的(它不是)。如果is_post_type_archive为真,则is_archive为真(但它不是)。

这就是问题所在:如果

is_post_type_archive只被Wordpress设置为true

1) post_type不是数组,且

2)查询has_archive的post_type对象值为true

这两个条件对我来说都不适用,因为1)post_type是一个数组,因此我期望2)没有一个post类型对象用于post类型数组,因此has_archive不可能为真。

长话短说:我有一个来自不同post_types的帖子的存档页面,它确实工作,但这些项目不是我的博客页面,因此,根据文档,is_home应该仍然是假的。

两个问题:1)这是is_home()的预期行为吗?2)是否有另一个函数可以替代该函数,并与我的多个后类型查询一起工作?(如果没有,有什么建议吗?)

提前感谢你的建议。

为了记录(如果有人偶然发现这个线程有类似的问题):我通过检查get_post_type() == 'post'而不是is_home()来解决它-仍然不满意。文档说is_home()只会在Posts页面上产生true,显然不是。