WordPress博客页面增加最近访客功能

作者:袖梨 2022-06-25


原生wp函数就无法做到了,所以只能退居其次,调用最近留言的访客,当然,每个人只会显示一次。

把下面代码放到functions.php中:

 

 代码如下 复制代码
//获取最近读者
function visitors($tim,$lim){
global $wpdb;
$query="SELECT COUNT(comment_ID) 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 $tim day )  AND comment_author_email != '' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY comment_date DESC LIMIT $lim";
$wall = $wpdb->get_results($query);
foreach ($wall as $comment)
{
if( $comment->comment_author_url )
$url = $comment->comment_author_url;
else $url="#";
$r="rel='external nofollow'";
$tmp = "".get_avatar($comment->comment_author_email, 40)."";
$output .= $tmp;
}
echo $output ;
}

上面是核心函数,然后需要做成小工具就可以了:

 代码如下 复制代码


//注册 Widget 小工具
add_action('widgets_init', create_function('', 'return register_widget("mk_visitors");'));
class mk_visitors extends WP_Widget {
 //注册一个WordPress小工具
 function mk_visitors(){
  $this->WP_Widget('mk_visitors', '读者墙', array( 'description' => '显示近期评论最多的读者头像' ));
 }
 //前端显示小工具
 function widget($args, $instance) {
  extract($args, EXTR_SKIP);
  echo $before_widget;
  $title = apply_filters('widget_name', $instance['title']);
  $limit = $instance['limit'];
  $timer = $instance['timer'];
  echo $before_title.$title.$after_title;
  echo '

  • ';

  •   echo visitors($tim=$timer, $lim=$limit );

  •   echo '
';
  echo $after_widget;
 }
 //保存小工具设置选项
 function update($new_instance, $old_instance) {
  $instance = $old_instance;
  $instance['title'] = strip_tags($new_instance['title']);
  $instance['limit'] = strip_tags($new_instance['limit']);
  $instance['timer'] = strip_tags($new_instance['timer']);
  return $instance;
 }
 //后台小工具表单
 function form($instance) {
  $instance = wp_parse_args( (array) $instance, array(
   'title' => '最近读者',
   'limit' => '15',
   'timer' => '30'
   )
  );
  $title = strip_tags($instance['title']);
  $limit = strip_tags($instance['limit']);
  $timer = strip_tags($instance['timer']);
  echo '

标题:

显示数目:

几天内:

';
 }
}

上面的说明已经很仔细了,然后就是样式的问题了,这个可以自由发挥,下面是明凯博客的样式了:

 代码如下 复制代码
.sidebar ul {
list-style: none;
margin: 1.5em 0;
padding: 0;
}
.sidebar ul li {
margin: 0;
padding: 5px 0;
border-top: 1px solid #ddd;
color: #969696;
}
.visitors li{float:left;}

其实大部分是主题自带的。

相关文章

精彩推荐