2011年04月24日 66条评论

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

这是根据 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
or
oooo

“读者墙: 数据库缓存方式版”有66条评论

  1. axiu says:

    沙发!

    1. lowstz says:

      坐沙发木有小JJ

  2. axiu says:

    缓存什么的最喜欢了

  3. axiu says:

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

    1. mopvhs says:

      @axiu
      连抢三楼木有小鸡鸡...

    2. zwwooooo says:

      @axiu
      无语的三连发,比自沙还变态

  4. SErHo says:

    看着还是比较累啊,PHP不行。

    1. zwwooooo says:

      @SErHo
      嘻嘻,可以直接用的,只要放对地方就行

  5. ZhangJun says:

    修改显示数量无效,神马问题?

    1. zwwooooo says:

      @ZhangJun
      不会啊,我测试是ok的。

  6. 奚少 says:

    看过大师的代码,不过不会应用。多谢zww大哥的修改,拿走了~~~

    1. zwwooooo says:

      @奚少
      其实不复杂

  7. Microhu says:

    你速度真快,这就改好了?!

    1. zwwooooo says:

      @Microhu
      本来就不是很复杂,主要是willin的idea

  8. A.shun says:

    mark 下次折腾改加上去

    1. zwwooooo says:

      @A.shun
      我的加上了,3个地方用了

  9. winy says:

    收藏备用

    1. zwwooooo says:

      @winy
      霍霍,上次你写的wp cache的方式我没测试成功,不知道怎么回事

  10. wmtimes says:

    嗯。读者墙我没用利用,可能是还没发现他的价值吧。 :mrgreen:

    1. zwwooooo says:

      @wmtimes
      其实可要可不要,用了就用吧

  11. 万戈 says:

    哇,Z大叔学的好快呀

    1. zwwooooo says:

      @万戈
      哪有你年轻人厉害,你是学到手,我是cp到手而已,木有具体了解

  12. akasuna says:

    把内存当缓存了,快

    1. zwwooooo says:

      @akasuna
      内存缓存最快吧

  13. dee says:

    各种缓存呀 :mrgreen:

  14. 园子 says:

    这个是更高级的版本了吧。

    1. zwwooooo says:

      @园子
      没啥版本吧,这个是我用的读者墙代码改过来的

  15. 张刚 says:

    :?: 请问有效果图吗?

    1. zwwooooo says:

      @张刚
      霍霍,这个就不需要了,要得话自己用firebug去测试

  16. Veezy says:

    我设置的12个月... 嘘~ 人太少吗,看起来YY一些

    1. zwwooooo says:

      @Veezy
      哈哈哈,12个月啊……

  17. mice says:

    :mrgreen: get_option 去看看去-_,

    1. zwwooooo says:

      @mice
      嘻嘻,你主机给力不需要了吧

  18. Alex Gao says:

    啦啦啦~~~灌水来啦~~~~ :grin:

    1. zwwooooo says:

      @Alex Gao
      水多是好事

  19. mopvhs says:

    什么原理...我看看去~~

    1. zwwooooo says:

      @mopvhs
      慢慢折腾

  20. 孤风 says:

    又有新玩意儿了,先看看

    1. zwwooooo says:

      @孤风
      研究研究

回复给 Alex Gao ¬
取消回复

昵称 *

网址

B em del U Link Code Quote