WordPressで、はてなダイアリーで言うところの「注目のエントリー」的なリストを表示する

ブックマークされた数が多い順にエントリーを表示するのに重宝しているSBM_Popular_Entryですが、単純にブックマーク数が多い順だと中々リストの内容が変わらず、どうしても古い記事が上の方に来ます。そこではてなダイアリーで言うところの、注目のエントリー機能が欲しいなぁと思ったので、SBM_Popular_Entryに書き足してみました。このブログでは右側の「最近の注目のエントリー」が、書き足した機能で表示しているリストです。まぁ自分で「注目の」とか言うのは結構恥ずかしいのですけども。

結論だけ書きます。下記のコードをwp-sbm_popular_entry.phpの下の方に書き加えます。汚くてごめんなさい。SQL構築処理に手を入れるのが嫌だったので豪快にコピペしています。ごめんなさいごめんなさい。

function SBM_popular_recent_entry_list($limit=10, $threshold=5, $val="") {
    global $wpdb;
    
    $pluginurl = get_option('siteurl')."/wp-content/plugins/wp-sbm_popular_entry/";
    $metalist = $wpdb->get_results( SBM_popular_recent_entry_list_sql($limit, $threshold, $val) );

    if ( $metalist ) {
        ob_start();
        foreach ($metalist as $metarow) {
            $permalink = get_permalink($metarow->ID);
            $title = $metarow->post_title;
            $meta = get_post_meta($metarow->ID, "SBM_count", 1);
            $popup = "iconImageClickHandler(this, '".$permalink."', event)";
            list($count, $icon, $link, $add) = _template_parm($pluginurl, $permalink, $title, $metarow->meta_value);

            if($count['sum'] > 0)
                include('wp-content/plugins/wp-sbm_popular_entry/template_list.php');
        }
        $content = ob_get_contents();
        ob_end_clean();
        echo $content;
    }

}

function SBM_popular_recent_entry_list_sql($limit, $threshold, $val="") {
    global $wpdb, $tablepost2tag, $tabletags;

    $val = mysql_real_escape_string($val);

    $sql = "SELECT ID, post_title, meta_value ";
    $sql.= "FROM $wpdb->posts, $wpdb->postmeta WHERE ";
    $sql.= "$wpdb->posts.ID=$wpdb->postmeta.post_id and meta_key = 'SBM_count' and meta_value >= $threshold ".
                 "ORDER BY ID DESC LIMIT ".$limit;
    return $sql;
}

上記修正を行った後に、リストが欲しい場所で以下のようにします。1つ目の引数(10)はリストのアイテム数の上限で、2つ目の引数(5)はブックマーク数の下限値です。以下の場合は「5ブックマーク数以上のエントリを新しいものから最大10件取得」という事になります。

< ?php SBM_popular_recent_entry_list(10, 5) ?>

これでリピータの方にも最近の活動の様子を少しアピールできるようになりましたね。汚いコードは誰か直して下さい。僕にはもうその元気がありません。あと、以前にちょろっと書いたパッチもあわせて参照して下さいませ。

2 thoughts on “WordPressで、はてなダイアリーで言うところの「注目のエントリー」的なリストを表示する”

  1. Pingback: WordPressハッカーズ

Leave a Reply

Your email address will not be published. Required fields are marked *