2016-11-10 37 views
1

我努力處理一些對我來說似乎是來自Wordpress的邏輯缺陷,但是不管它是否是,我需要一個解決方案。 我不得不修改我當前的設置,並將幾乎所有查詢都改爲包含兩個帖子類型,而不是僅包含一個。Wordpress is_home()函數返回多個post-type查詢的假陽性

現在我的查詢工作正常,但缺少很多功能,因爲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_archivefalse,則返回true。但在我的情況下,is_archive應該是真的(它不是)。如果is_post_type_archive爲真(它不是),則is_archive將爲真。

而這就是問題所在規定: is_post_type_archive僅由WordPress如果

1)post_type不是陣列設置爲true,以及用於has_archive

2)post_type對象值從查詢是true

這兩個條件都不適用於我,因爲1)post_type是一個數組,因此我期望2)post類型數組沒有一個post類型的對象,因此has_archive不能爲true。

長話短說:我有一個來自不同post_types的帖子的存檔頁面,它可以工作,但這些項目不是我的博客頁面,因此根據文檔,is_home應該仍然是錯誤的。

兩個問題:1)這是is_home()的預期行爲嗎?和2)是否有另一個函數可以替代函數,並可以與我的多後期類型查詢一起工作? (如果沒有,關於如何實現這一點的任何建議?)

在此先感謝您的想法。

回答

0

爲了記錄(如果有人在類似的問題上絆倒這個線程):我通過檢查get_post_type() == 'post'而不是is_home() - 仍然不滿意。文檔說is_home()只會在文章頁上產生錯誤,而且顯然不會。