Wordpress is_home()函数为多个后置类型查询返回误报

时间:2016-11-10 15:36:15

标签: php wordpress custom-wordpress-pages

我对一些对我来说似乎是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_home()is_archive,则false会返回true。但在我的情况下is_archive应该是真的(事实并非如此)。如果is_archive为真(不是),则is_post_type_archive为真。

那就是问题所在: 如果

is_post_type_archive仅由Wordpress设置为true

1)post_type不是数组,

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

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

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

两个问题:1)这是is_home()的预期行为吗? 2)是否有另一个功能可以替代该功能,并将与我的多后期类型查询一起使用? (如果没有,关于如何实现这一点的任何建议?)

提前感谢您的想法。

1 个答案:

答案 0 :(得分:0)

对于记录(如果有人在这个问题上遇到类似的问题):我通过检查get_post_type() == 'post'而不是is_home()来解决这个问题 - 仍然不满意。文档说is_home()只会在帖子页面上生成,而且显然不会。