首页 > CMS > Wordpress > 正文

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

2024-09-07 00:50:57
字体:
来源:转载
供稿:网友

我们常常会看到一些站长写的博客会有一个最新访客功能了,他们可以非常大气的这个功能好复杂了,我后来百度一搜索发现了有很多相关文章了,下面来给各位整理一下方法.

原生wp函数就无法做到了,所以只能退居其次,调用最近留言的访客,当然,每个人只会显示一次,把下面代码放到functions.php中:

  1. //获取最近读者 
  2. function visitors($tim,$lim){ 
  3. global $wpdb
  4. $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"
  5. $wall = $wpdb->get_results($query); 
  6. foreach ($wall as $comment
  7. if$comment->comment_author_url ) 
  8. $url = $comment->comment_author_url; 
  9. else $url="#"
  10. $r="rel='external nofollow'"
  11. $tmp = "<li><a href='".$url."' ".$r." title='".$comment->comment_author." 留下".$comment->cnt."条信息'>".get_avatar($comment->comment_author_email, 40)."</a></li>"
  12. $output .= $tmp
  13. echo $output ; 

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

  1. //注册 Widget 小工具 
  2. add_action('widgets_init', create_function('''return register_widget("mk_visitors");')); 
  3. class mk_visitors extends WP_Widget { 
  4.  //注册一个WordPress小工具 
  5.  function mk_visitors(){ 
  6.   $this->WP_Widget('mk_visitors''读者墙'array'description' => '显示近期评论最多的读者头像' )); 
  7.  } 
  8.  //前端显示小工具 
  9.  function widget($args$instance) { 
  10.   extract($args, EXTR_SKIP); 
  11.   echo $before_widget
  12.   $title = apply_filters('widget_name'$instance['title']); 
  13.   $limit = $instance['limit']; 
  14.   $timer = $instance['timer']; 
  15.   echo $before_title.$title.$after_title;  
  16.   echo '<ul class="visitors">'
  17.   echo visitors($tim=$timer$lim=$limit ); 
  18.   echo '</ul><div class="clear"></div>'
  19.   echo $after_widget
  20.  } 
  21.  //保存小工具设置选项 
  22.  function update($new_instance$old_instance) { 
  23.   $instance = $old_instance
  24.   $instance['title'] = strip_tags($new_instance['title']); 
  25.   $instance['limit'] = strip_tags($new_instance['limit']); 
  26.   $instance['timer'] = strip_tags($new_instance['timer']); 
  27.   return $instance
  28.  } 
  29.  //后台小工具表单 
  30.  function form($instance) { 
  31.   $instance = wp_parse_args( (array$instancearray(  
  32.    'title' => '最近读者'
  33.    'limit' => '15'
  34.    'timer' => '30'  
  35.    )  
  36.   ); 
  37.   $title = strip_tags($instance['title']); 
  38.   $limit = strip_tags($instance['limit']); 
  39.   $timer = strip_tags($instance['timer']); 
  40.   echo '<p><label>标题:<input class="widefat" id="'.$this-/>get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$instance['title'].'" /></label></p><p><label>显示数目:<input class="widefat" id="'.$this-/>get_field_id('limit').'" name="'.$this->get_field_name('limit').'" type="number" value="'.$instance['limit'].'" /></label></p><p><label>几天内:<input class="widefat" id="'.$this-/>get_field_id('timer').'" name="'.$this->get_field_name('timer').'" type="number" value="'.$instance['timer'].'" /></label></p>'
  41.  } 

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

  1. .sidebar ul { 
  2. list-stylenone
  3. margin1.5em 0
  4. padding0
  5. .sidebar ul li { 
  6. margin0
  7. padding5px 0
  8. border-top1px solid #ddd
  9. color#969696
  10. .visitors li{float:left;} 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表