linux命令 java 开源 nginx Android HTML5 mysql Windows wordpress Firefox google Python Ubuntu apache php 程序员 linux centos 微软 shell

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

1. 在主题的 functions.PHP 加入如下读者墙函数代码

/* 读者墙函数 - 数据库缓存方式版 */
function mostactive_mf() {
	if(!$mostactive_mf = get_option('mostactive_mf')){
		$array = array();
		$comments = get_comments( array('status' => 'approve',user_id=>0) );
		$admin_mail = get_option('admin_email');
		foreach($comments as $comment){
			$email = $comment->comment_author_email;
			$author = $comment->comment_author;
			$url = $comment->comment_author_url;
			if($email!="" && $email!=$admin_mail){ // 排除邮箱
				$index = deep_in_array($email, $array);
				if( $index > -1){
					$array[$index]["number"] +=1;
				}else{
					array_push($array, array(
						"email" => $email,
						"author" => $author,
						"url" => $url,
						"number" => 1
					));
				}
			}
		}
		foreach ($array as $k => $v) {
			$edition[] = $v['number'];
		}
		array_multisort($edition, SORT_DESC, $array); // 数组倒序排列
		if(empty($array)) {
			$mostactive_mf = '<ul><li>none data.</li></ul>';
		} else {
			foreach ($array as $k => $v) {
				$mf_avatar = get_avatar($v["email"],$size='40',$default='');
				$mf_url = $v["url"];
				$mf_alt = $v["author"] . ' ('. $v["number"]. ' comments)';
				$mostactive_mf .= "<li class='mostactive_mf'><a rel='external nofollow' href='$mf_url' title='$mf_alt'>$mf_avatar</a></li>";
			}
		}
		update_option('mostactive_mf', $mostactive_mf);
	}
	echo $mostactive_mf;
}
function deep_in_array($value, $array) { // 返还数组序号
	$i = -1;
    foreach($array as $item => $v) { 
		$i++;
        if($v["email"] == $value){
			return $i;
		}
    } 
    return -1; 
}
function clear_mostactive_mf() {
  update_option('mostactive_mf', ''); // 清空 mostactive_mf
}
add_action('comment_post', 'clear_mostactive_mf'); // 新评论发生时
add_action('edit_comment', 'clear_mostactive_mf'); // 评论被编辑过

2.在需要的地方调用此读者墙函数(如 sidebar.php

<?php if(function_exists('mostactive_mf')) mostactive_mf(); ?>

延伸阅读

评论