一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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

时间:2014-05-28 编辑:简简单单 来源:一聚教程网


原生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;}

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

    热门栏目