WordPress 2.1+ 的 page 問題

改變一下判斷一篇 post 是不是 page 的方法...

在我的 blog 中,Archives 是一篇 page 而不是 post (文章才是 post),我在 Archives 裡用了 [tag]Extended Live Archive[/tag] 這個 plugin 來弄出全文列表的效果,但我突然發現它居然把我的 page 也列進去了,查了一些資料才發現原來 [tag]WordPress[/tag] 2.1 在處理 page 的方式有所不同(詳情見)。

在 WP 2.1 之後 page 也可以有 publish、draft、private 的狀態,在 2.1 以前只有 post 才會有這三種狀態,所以很多 plugin 都是用

post_status = 'publish'

來表示 post,但在 2.1 之後,post_status = 'publish' 也可能是 page ,而資料表中多了一個 posty_type 的 column,WP 2.1 之後就用

post_type = 'page'

來表示 page ,這樣的改變就會讓一些 plugin 在判斷 post/page 時產生 bug。

於是我就動手小改了一下 ELAaf-extended-live-archive-include.phpaf-extended-live-archive.php 這兩個檔案,找到這兩個檔案中出現 post_status = 'publish' 的地方,在它的後面(下面?)加上

AND post_type != 'page'
(或是 AND p.post_type != 'page' 看原本怎麼寫)

這樣就可以判斷正確了!