Old

读者墙: 数据库缓存方式版

这是根据 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 = 'http://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
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25446

66 comments

  1. axiu axiu

    沙发!

    沙发
  2. axiu axiu

    缓存什么的最喜欢了

    板凳
  3. axiu axiu

    地板也占了……嗯,我准备拿去。 :neutral: :neutral:

    地板
  4. ......
  5. 宝佑 宝佑

    我先在本地试试,我怕出错!

    21楼
  6. 空中楼阁 空中楼阁

    学习了,先在本地测试下

    22楼
  7. 软件盒子 软件盒子

    我现在还不敢缓存数据库

    23楼
  8. 西华秦 西华秦

    哈哈哈,看上你现在用的private主题、。。囧

    24楼
  9. IM路人 IM路人

    这个的话,是不是一有评论就更新的~?

    25楼
  10. towry towry

    :razz: 我还没接触PHP呢,呵呵。不过先测试一下。

    26楼
  11. 无冷 无冷

    php学的差,只会用, :evil:

    27楼
  12. 西风 西风

    代码复制过去都不能用

    28楼
  13. liveme liveme

    读者墙我现在不是很想折腾了。

    29楼
  14. 浩子 浩子

    好久换着用了

    30楼
  15. shelwee shelwee

    本地试了下,为什么对于新发的评论,没立即在读者墙上显示头像?

    31楼
  16. dtdShan dtdShan

    :?: 如果用了头像缓存还可以用吗

    32楼
  17. 所谓刚子 所谓刚子

    对于新的评论 不能立即显示出来 我测试了一下 一个评论 一下在评论5条 满足在评论墙上显示了 可是 依旧不显示在上面

    33楼

Leave a Reply