首页 > 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. { 
  8. if( $comment->comment_author_url ) 
  9. $url = $comment->comment_author_url; 
  10. else $url="#"; 
  11. $r="rel='external nofollow'"; 
  12. $tmp = "<li><a href='".$url."' ".$r." title='".$comment->comment_author." 留下".$comment->cnt."条信息'>".get_avatar($comment->comment_author_email, 40)."</a></li>"; 
  13. $output .= $tmp; 
  14. } 
  15. echo $output ; 
  16. } 

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

  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) $instance, array(  
  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.  } 
  42. } 

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

  1. .sidebar ul { 
  2. list-style: none; 
  3. margin: 1.5em 0; 
  4. padding: 0; 
  5. } 
  6. .sidebar ul li { 
  7. margin: 0; 
  8. padding: 5px 0; 
  9. border-top: 1px solid #ddd; 
  10. color: #969696; 
  11. } 
  12. .visitors li{float:left;} 

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

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