为WordPress个性化主题添加读者墙(最活跃的读者)功能
2012-04-22

最近在为客户修改WordPress博客主题的过程中,一个要求是在侧边栏增加读者墙功能,就是将站点活跃读者的头像显示在侧边栏,以更好地鼓励朋友多评论,增加站点的互动性。实现读者墙功能的插件倒是不少,不过为了WordPress的简洁,偶米工作室在此采取代码方案实现该需求。

将以下代码粘贴到主题functions.php 文件里面:

function zsofa_most_active_friends($friends_num = 10) {
    global $wpdb;
    $counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id='0' AND comment_author != 'zwwooooo' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author ORDER BY cnt DESC LIMIT $friends_num");
    foreach ($counts as $count) {
    $c_url = $count->comment_author_url;
    if ($c_url == '') $c_url = get_bloginfo('url');
    $mostactive .= '<li>' . '<a href="'. $c_url . '" title="' . $count->comment_author . ' ('. $count->cnt . 'comments">' . get_avatar($count->comment_author_email, 32) . '</a></li>';
    }
    return $mostactive;
}

但是如何调用以上函数呢?调用方法如下:

<h3>Most Active Friends</h3>
<ul>
    <?php if (function_exists('zsofa_most_active_friends')) { echo zsofa_most_active_friends(24);} ?>
</ul>

函数说明:zsofa_most_active_friends(24) 里面的 24 是指显示的读者头像的数量,请根据需要修改。

因为要在侧边栏显示朋友头像(图片),为页面美观,定义 css:.ffox_most_active,参考如下:

#sidebar .ffox_most_active{overflow:hidden;}
#sidebar .ffox_most_active li{list-style:none;float:left;line-height:0;}
#sidebar .ffox_most_active img.avatar{width:28px;height:28px;border:1px solid #dfdfdf;padding:2px;margin:0 1px 0 0;}

OK,搞定!!

相关知识