Home > WordPress > Customizable Post Listings を WordPress 2.3 系統で使用する

Customizable Post Listings を WordPress 2.3 系統で使用する

  • 2008-01-18 (金) 14:00 | Visited 4556 times, 1 so far today
  • WordPress
  • add to hatena hatena.comment (2) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 2

WordPress 2.3 以降対応の Ver3.0が公開!

coffee2code.com » Customizable Post Listings にて、ついに WordPress 2.3 以降に対応した Customizable Post Listings が公開されました。

以下用済みの記述

カテゴリを指定して最近の投稿やコメントのリストを生成できるプラグイン、Customizable Post Listings は大変便利なのですが、WordPress 2.3 でカテゴリを指定しようとすると、

WordPress database error Table '***.wp_post2cat' doesn't ex
ist for query SELECT DISTINCT * FROM wp_posts LEFT JOIN wp_post2cat ON (wp_posts.ID = wp_post2cat.post_id)  AND ( category_id
 = 13) WHERE wp_posts.post_date <= '2008-01-18 12:33:51' AND ( wp_posts.post_status = 'publish' ) AND wp_posts.post_password
= '' GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10

のようなエラーが出ます。これは、power source* » WP2.3: データベース変更点の確認 にあるように、 wp_post2catがなくなってしまったせいなのですね。WordPress2.3で動作しないプラグインのリスト | コリス にもしっかり載っていますし。

けれども、これが使えないと不便な場合も多いので、なんとかできないか調べてみました。

WordPress 公式サイトの WordPress › Customizable Post Listings « WordPress Plugins で配布されている最新バージョンは、1.5 ですが、Scott Reilly 氏のサイトで配布されている1.1に対するパッチが見つかりました。

(追記)該当の記事の少し後に、SQL 構文が間違っているというツッコミ があったので、それを反映して、パッチ、ダウンロードファイルを置き換えてあります。

パッチ

$ diff -u customizable-post-listings.php.org customizable-post-listings.php
--- customizable-post-listings.php.org  2004-09-27 13:50:33.000000000 +0900
+++ customizable-post-listings.php      2008-01-18 13:32:27.000000000 +0900
@@ -39,10 +39,13 @@
        $authors = '',                  // space separated list of author IDs -- leave empty to get all
        $include_passworded_posts = false)
 {
-       global $wpdb, $tablecomments, $tableposts, $tablepost2cat;
+       global $wpdb, $tablecomments, $tableposts, $tableterm_relationships, $tableterm_taxonomy;
        if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments;
-       if (!isset($tablepost2cat)) $tablepost2cat = $wpdb->post2cat;
+       if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments;
+       if (!isset($tableterm_relationships)) $tableterm_relationships = $wpdb->term_relationships;
+       if (!isset($tableterm_taxonomy)) $tableterm_taxonomy = $wpdb->term_taxonomy;
        if (!isset($tableposts)) $tableposts = $wpdb->posts;
+
        if ($order != 'ASC') $order = 'DESC';
        if ('max_comment_date' == $orderby) { $add_recent_comment_to_sql = 1; }
        else {
@@ -55,7 +58,7 @@
        if ($add_recent_comment_to_sql) $sql = "SELECT $tableposts.*, MAX(comment_date) AS max_comment_date FROM $tablecomments, $tableposts ";
        else $sql = "SELECT DISTINCT * FROM $tableposts ";
        if ($categories) {
-               $sql .= "LEFT JOIN $tablepost2cat ON ($tableposts.ID = $tablepost2cat.post_id) ";
+               $sql .= "LEFT JOIN $tableterm_relationships ON ($tableposts.ID = $tableterm_relationships.object_id) LEFT JOIN $tableterm_taxonomy ON ($tableterm_relationships.term_taxonomy_id = $tableterm_taxonomy.term_taxonomy_id)";
                $cats = explode(' ', $categories);
        }
        $sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' ";
@@ -69,7 +72,7 @@
                foreach ($cats as $cat) {
                        if ($first) $first = 0;
                        else $sql .= "OR ";
-                       $sql .= "$tablepost2cat.category_id = '$cat' ";
+                       $sql .= "$tableterm_relationships.term_taxonomy_id = '$cat' ";
                }
                $sql .= ") ";
        }

使い方

Customizable Post Listings:Functions にある使い方がそのまま適用されますが、$categories で指定するのは、カテゴリー ID ではなく、WordPress 2.3 で新設された、wp_term_taxonomy テーブルの term_taxonomy_id を指定します。簡単にこの値を調べる方法はないので、管理画面で確認できるようにしました。併せてこちらのパッチも適用すると、使いやすくなるかと。

ダウンロード

簡単なパッチですが、適応済みの 1.1 のファイルをアップロードしておきます。当方の環境では動いていますが、ご利用の際はテスト環境などで動作確認の上、お使い下さい。

拍手する
この記事が参考になったり面白かったりしたらお気軽にご評価ください
1 Star2 Stars3 Stars4 Stars5 Stars (0 件の評価, 平均: 0.00 点 / 5 点満点中)
読み込み中 ... 読み込み中 ...

Comments:0

Comment Form
Remember personal info

Trackbacks:0

トラックバックURL
Listed below are links to weblogs that reference
Customizable Post Listings を WordPress 2.3 系統で使用する from MOMENTS

Home > WordPress > Customizable Post Listings を WordPress 2.3 系統で使用する

応援中
サイト内検索
フィード
メタ情報
広告
ブログパーツ
あわせて読みたい フィードメーター - MOMENTS

Return to page top