这是根据 willin kan 最近的文章《另类的缓存方式》里面的方法修改的,有人需要并找我帮忙更改一下读者墙代码,于是就顺便贴出来。
其实按照 willin 的文章是很容易修改的,不过没接触过 php 的朋友还是会不知如何下手。
下面是根据我现在用的读者墙代码修改成,有需要的朋友可以直接拿去,我写成函数方式,方便使用
1. 在主题的 functions.php 加入如下读者墙函数代码
/* 读者墙函数 - 数据库缓存方式版 */ function mostactive_zww() { if(!$mostactive = get_option('mostactive')){ global $wpdb; $limit_num = '16'; //显示数量 $time = '1 MONTH'; //最近1个月内 $noneurl = 'https://zww.me/'; //改为你自己博客地址 $my_email = "'" . get_bloginfo ('admin_email') . "'"; //排除管理员评论 $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 $time ) AND comment_author_email != $my_email AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT $limit_num "); $mostactive = ''; if(empty($counts)) { $mostactive = '<li>none data.</li>'; } else { foreach ($counts as $count) { $c_url = $count->comment_author_url; if ($c_url == '') $c_url = $noneurl; $title_alt = $count->comment_author . ' ('. $count->cnt. ' comments)'; $mostactive .= '<li class="mostactive">' . '<a rel="external nofollow" href="'. $c_url . '" title="' .$title_alt . '">'.get_avatar($count->comment_author_email,$size='40',$default='').'</a></li>'; } } update_option('mostactive', $mostactive); } echo $mostactive; } function clear_mostactive() { update_option('mostactive', ''); // 清空 mostactive } add_action('comment_post', 'clear_mostactive'); // 新评论发生时 add_action('edit_comment', 'clear_mostactive'); // 评论被编辑过
2. 在需要的地方调用此读者墙函数(如 sidebar.php)
<?php if(function_exists('mostactive_zww')) mostactive_zww(); ?>
ps:关于css样式参考以前我的文章《WordPress 免插件读者墙 willin 版本》
完。
zww
赏
oooo
or
- 本文标题:读者墙: 数据库缓存方式版
- 本文链接:https://zww.me/archives/25446
- 发布时间:2011年04月24日 20:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
我先在本地试试,我怕出错!
@宝佑
好习惯
学习了,先在本地测试下
@空中楼阁
嗯嗯,比较保险
我现在还不敢缓存数据库
@软件盒子
缓存数据库?这只是把数据缓存到数据库的一个表值而已
哈哈哈,看上你现在用的private主题、。。囧
@西华秦
其实和 zSnos2 差不多,只是多了自用ajax加载和头部的改变
这个的话,是不是一有评论就更新的~?
@IM路人
是的,不然数据就不准了
我还没接触PHP呢,呵呵。不过先测试一下。
@towry
可以本地测试下
php学的差,只会用,
@无冷
会用就很厉害了
代码复制过去都不能用
@西风
要复制对地方哦
读者墙我现在不是很想折腾了。
@liveme
需要才折腾
好久换着用了
本地试了下,为什么对于新发的评论,没立即在读者墙上显示头像?
@shelwee
新头像?你的意思是木有更新统计?按道理不会的,我这工作正常。
@shelwee
注意,不统计博主的头像的。
如果用了头像缓存还可以用吗
@dtdShan
这里是缓存“读者墙”的查询,而不是缓存图片
对于新的评论 不能立即显示出来 我测试了一下 一个评论 一下在评论5条 满足在评论墙上显示了 可是 依旧不显示在上面
@所谓刚子
没问题吧,看看是不是用了缓存插件之类的。