HOME > WordPress > WordPress:Customizable Post Listings を2.1.xで使うとページも一緒にリスティングしてしまう件

WordPress:Customizable Post Listings を2.1.xで使うとページも一緒にリスティングしてしまう件

以前のエントリーで紹介したCustomizable Post Listings を、WordPress 2.1.3で使ってみたところ、最新ポスト一覧にpagesまで拾ってきてしまう原因と解決方法について。

参考ページ

WordPress2.0までは、静的ページ(static)とブログエントリー(publish)を下の図の通り、テーブル"wp_posts"post_statusで識別していました。

2.0Table:_wp_posts

2.1からこの仕様が変更され、これまで使われていなかったpost_typeにこれらの情報が、静的ページ(page)とブログエントリー(post)として格納されるようになりました(下図参照)。

post_type

ちなみにpost_statusには、公開済み(publish)or下書き(draft)が格納されるようになりました(下図参照)。

post_statusが公開済みか否かの情報を格納する

この変更により、プラグインファイル(customizable-post-listings.php)の61行目(付近)にある下の記述で、post_statusがPublishのものを全て拾ってしまうため、静的ページを含める全てのエントリーがリストに上がって来てしまうということが原因でした。publish違いの悲劇。

CODE:
  1. $sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' ";

この記述を次のように、『公開済みでなおかつpost_typeがpost(ブログエントリー)のもの』と記述を変更することで、この問題を解決。

CODE:
  1. $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/

1 Comment

  • 特定カテゴリの最新投稿をリスト表示させる...

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

    Trackback by katsuhirano.com — November 11, 2007 @ 11:23 pm

Leave a comment

RSS feed for comments on this post. TrackBack URI