【问题标题】:Wordpress is_home() function returns false positive for multiple post-type queryWordpress is_home() 函数对多个 post-type 查询返回误报
【发布时间】:2017-03-24 16:56:13
【问题描述】:

我在为一些对我来说似乎是 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()returns 0。如果我在查询中添加另一种帖子类型(这对我来说是必要的)is_home()returns 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) 一个帖子类型数组没有一个帖子类型对象,因此 has_archive 不能为真。

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

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

提前感谢您的想法。

【问题讨论】:

    标签: php wordpress custom-wordpress-pages


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多