Ryan

Minty可用改进版最近评论小工具
换了Minty主题几天了,感觉Minty很是 不错,但是最近评论工具不符合博主的审美观:没有评论者头像,并且博主的...
扫描右侧二维码阅读全文
04
2014/02

Minty可用改进版最近评论小工具

换了Minty主题几天了,感觉Minty很是 不错,但是最近评论工具不符合博主的审美观:没有评论者头像,并且博主的回复也显示出来了。

minty_comment_widget_01

下面的代码得到的“带Gravatar头像评论”小工具可以集成到主题中,小工具后台拥有相关选项。代码是从系统自带的评论小工具中改进过来的,兼容性良好。代码作者:陈杰斌,感谢原作者。

当然,博主也小改了一下,使其更适合Minty,其他主题也能用。

minty_comment_widget_02

WordPress 3.8.1 + Minty 1.1 测试通过

把下面的代码保存为widget-comments.php,放到主题所在目录

  1. <?php  
  2.    
  3. /**
  4. * 继承WP_Widget_Recent_Comments 
  5. * 这样就只需要重写widget方法就可以了 
  6. */ 
  7. classMy_Widget_Recent_CommentsextendsWP_Widget_Recent_Comments {  
  8.    
  9.    /**
  10.      * 构造方法,主要是定义小工具的名称,介绍 
  11.      */ 
  12.    functionMy_Widget_Recent_Comments() {  
  13.        $widget_ops=array('classname' => 'my_widget_recent_comments', 'description' => __('显示最新评论内容'));  
  14.        $this->WP_Widget('my-recent-comments', __('[Minty]近期评论', 'my'),$widget_ops);  
  15.     }  
  16.    
  17.    /**
  18.      * 小工具的渲染方法,这里就是输出评论 
  19.      */ 
  20.    functionwidget($args,$instance) {  
  21.        global $wpdb,$comments,$comment;  
  22.    
  23.        $cache= wp_cache_get('my_widget_recent_comments', 'widget');  
  24.    
  25.        if(!is_array($cache))  
  26.            $cache=array();  
  27.    
  28.        if(!isset($args['widget_id']))  
  29.            $args['widget_id'] =$this->id;  
  30.    
  31.        if(isset($cache[$args['widget_id']])) {  
  32.            echo $cache[$args['widget_id']];  
  33.            return;  
  34.         }  
  35.    
  36.         extract($args, EXTR_SKIP);  
  37.        $output='';  
  38.        $title= apply_filters('widget_title',emptyempty($instance['title']) ? __('Recent Comments') :$instance['title'],$instance,$this->id_base);  
  39.        if(emptyempty($instance['number']) || !$number= absint($instance['number']))  
  40.            $number= 5;  
  41.        //获取评论,过滤掉管理员自己 
  42.        $comments=$wpdb->get_results("SELECT * FROM $wpdb->comments WHERE user_id !=1 and comment_approved = '1' and comment_type not in ('pingback','trackback') ORDER BY comment_date_gmt DESC LIMIT $number");  
  43.        $output.=$before_widget;  
  44.        if($title)  
  45.            $output.=$before_title.$title.$after_title;  
  46.    
  47.        $output.= '<ul id="myrecentcomments">';  
  48.        if($comments) {  
  49.            // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.) 
  50.            $post_ids=array_unique(wp_list_pluck($comments, 'comment_post_ID'));  
  51.             _prime_post_caches($post_ids,strpos(get_option('permalink_structure'), '%category%'), false);  
  52.    
  53.            foreach((array)$comments as $comment) {  
  54.                //头像 
  55.                $avatar= get_avatar($comment, 40);  
  56.                //作者名称 
  57.                $author= get_comment_author();  
  58.                //评论内容 
  59.                $content= apply_filters('get_comment_text',$comment->comment_content);  
  60.                $content= mb_strimwidth(strip_tags($content), 0, '65','...', 'UTF-8');  
  61.                $content= '<a style="padding:0;"href="' . esc_url(get_comment_link($comment->comment_ID)) . '">' . convert_smilies($content) . '</a>';  
  62.                //评论的文章 
  63.                $post= '<a style="padding:0;"href="' . esc_url(get_comment_link($comment->comment_ID)) . '">' . get_the_title($comment->comment_post_ID) . '</a>';  
  64.    
  65.                //这里就是输出的html,可以根据需要自行修改 
  66.                $output.= '<liclass="comment"style="margin:0; list-style:none;">  
  67.             <div>  
  68.                 <tableclass="tablayout"><tbody><tr>  
  69.                 <tdclass="tdleft"style="width:55px;">' .$avatar. '</td>  
  70.                 <tdclass="tdleft">  
  71.                     <pclass="comment-author"><strong><spanclass="fn">' .$author. '</span></strong></br><spanclass="comment-content">' .$content. '</span></p>  
  72.                 </tr></tbody></table>  
  73.             </div>  
  74.         </li>';  
  75.             }  
  76.         }  
  77.        $output.= '</ul>';  
  78.        $output.=$after_widget;  
  79.    
  80.        echo $output;  
  81.        $cache[$args['widget_id']] =$output;  
  82.         wp_cache_set('my_widget_recent_comments',$cache, 'widget');  
  83.     }  
  84.    
  85. }  
  86.    
  87. //注册小工具 
  88. register_widget('My_Widget_Recent_Comments'); 

然后在主题的functions.php添加下面这一行代码

  1. require_once(TEMPLATEPATH . '/widget-comments.php'); 

然后你就可以在小工具中找到啦。

minty_comment_widget_03

搬瓦工年付$187机房套餐补货了,电信联通优化,512M内存/500G流量/1G带宽,建站稳定,优惠码:BWH1ZBPVK,【点击购买】!
搬瓦工年付$28CN2高速线路,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快,建站稳定,优惠码同上,【点击购买】!
Last modification:March 16th, 2016 at 05:11 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

7 comments

  1. Youth.霖

    看到我了 :arrow:
    感觉不喜欢用table标签

  2. Jimmy

    小屏幕上的logo你还没改

    1. Ryan
      @Jimmy

      话说你博客没有回复邮件通知→_→

    2. Ryan
      @Jimmy

      是啊,今天家里断网我在手机上看到了

  3. 陆月疏影

    Minty主题挺喜欢的,就是没钱买不起 :cry:

    1. Ryan
      @陆月疏影

      你不是用d8么 :lol:

      1. 陆月疏影
        @Ryan

        所以没钱买了啊,当时买错了啊