WordPress:Customizable Post Listings を2.1.xで使うとページも一緒にリスティングしてしまう件
以前のエントリーで紹介したCustomizable Post Listings を、WordPress 2.1.3で使ってみたところ、最新ポスト一覧にpagesまで拾ってきてしまう原因と解決方法について。
参考ページ
WordPress2.0までは、静的ページ(static)とブログエントリー(publish)を下の図の通り、テーブル"wp_posts"のpost_statusで識別していました。
2.1からこの仕様が変更され、これまで使われていなかったpost_typeにこれらの情報が、静的ページ(page)とブログエントリー(post)として格納されるようになりました(下図参照)。
ちなみにpost_statusには、公開済み(publish)or下書き(draft)が格納されるようになりました(下図参照)。
この変更により、プラグインファイル(customizable-post-listings.php)の61行目(付近)にある下の記述で、post_statusがPublishのものを全て拾ってしまうため、静的ページを含める全てのエントリーがリストに上がって来てしまうということが原因でした。publish違いの悲劇。
CODE:
-
$sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' ";
この記述を次のように、『公開済みでなおかつpost_typeがpost(ブログエントリー)のもの』と記述を変更することで、この問題を解決。
CODE:
-
$sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' AND $tableposts.post_type = 'post' ";
TrackBack URI : http://www.peacock-union.com/archives/66/trackback/



特定カテゴリの最新投稿をリスト表示させる...
このサイトは、雑多な話題を取り扱っているため(しかも結構毛色が異なる)、ある程度投稿記事をカテゴリーで色分けしておく必要があります。しかしながら、wordpressのデフォルト.....