制作WordPress“带Gravatar头像评论”小工具(集成主题中、含选项)

最近在进一步折腾WordPress 主题的开发,在侧边栏小工具那里想做一个可独立于主题的、类似插件的带头像评论小工具。通过WordPress 官方文档与一些资料大概了解了小工具制作的一些知识,但对于我等PHP 菜鸟,完全自己开发是不可能的;于是在网络上找到了一段代码,分享并备忘一下。

关于WordPress 中小工具的开发,除了WordPress官方文档外,有一篇“阿叔工作室”的文章也不错,点击查看。这里不多说了。

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

<?php   /** * 继承WP_Widget_Recent_Comments * 这样就只需要重写widget方法就可以了 */ class My_Widget_Recent_Comments extends WP_Widget_Recent_Comments {   /** * 构造方法,主要是定义小工具的名称,介绍 */ function My_Widget_Recent_Comments() { $widget_ops = array('classname' => 'my_widget_recent_comments', 'description' => __('显示最新评论内容')); $this->WP_Widget('my-recent-comments', __('我的最新评论', 'my'), $widget_ops); }   /** * 小工具的渲染方法,这里就是输出评论 */ function widget($args, $instance) { global $wpdb, $comments, $comment;   $cache = wp_cache_get('my_widget_recent_comments', 'widget');   if (!is_array($cache)) $cache = array();   if (!isset($args['widget_id'])) $args['widget_id'] = $this->id;   if (isset($cache[$args['widget_id']])) { echo $cache[$args['widget_id']]; return; }   extract($args, EXTR_SKIP); $output = ''; $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title'], $instance, $this->id_base); if (empty($instance['number']) || !$number = absint($instance['number'])) $number = 5; //获取评论,过滤掉管理员自己 $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE user_id !=2 and comment_approved = '1' and comment_type not in ('pingback','trackback') ORDER BY comment_date_gmt DESC LIMIT $number"); $output .= $before_widget; if ($title) $output .= $before_title . $title . $after_title;   $output .= '<ul id="myrecentcomments">'; if ($comments) { // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.) $post_ids = array_unique(wp_list_pluck($comments, 'comment_post_ID')); _prime_post_caches($post_ids, strpos(get_option('permalink_structure'), '%category%'), false);   foreach ((array) $comments as $comment) { //头像 $avatar = get_avatar($comment, 40); //作者名称 $author = get_comment_author(); //评论内容 $content = apply_filters('get_comment_text', $comment->comment_content); $content = mb_strimwidth(strip_tags($content), 0, '65', '...', 'UTF-8'); $content = convert_smilies($content); //评论的文章 $post = '<a href="' . esc_url(get_comment_link($comment->comment_ID)) . '">' . get_the_title($comment->comment_post_ID) . '</a>';   //这里就是输出的html,可以根据需要自行修改 $output .= '<li class="comment" style="padding-bottom: 5px; "> <div> <table class="tablayout"><tbody><tr> <td class="tdleft" style="width:55px;vertical-align:top;">' . $avatar . '</td> <td class="tdleft" style="vertical-align:top;"> <p class="comment-author"><strong><span class="fn">' . $author . '</span></strong> <span class="says">发表在 ' . $post . '</span></p> </tr></tbody></table> </div> <div class="comment-content"><p class="last">' . $content . '</p> </div> </li>'; } } $output .= '</ul>'; $output .= $after_widget;   echo $output; $cache[$args['widget_id']] = $output; wp_cache_set('my_widget_recent_comments', $cache, 'widget'); }   }   //注册小工具 register_widget('My_Widget_Recent_Comments');

在后台-外观-小工具 启用即可。

要修改的地方还挺多的,要熟悉CSS、html以及一些WordPress 函数。

一些相关文章:

制作WordPress侧边栏“随机文章”小工具并集成在主题中的方法

制作WordPress侧边栏“博客统计”小工具并集成在主题中的方法

制作WordPress侧边栏“热门文章”小工具并集成在主题中的方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏更流畅、简洁的软件开发方式

其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)

终于赶出来了,现写了一遍代码。 感谢大家的支持,感谢大家提出自己的看法。衷心的感谢,真的。 应该是先写第二步的,但是想一想还是先写第三步吧。 一般大项目里...

2659
来自专栏V站

PHP丨如何判断访客PC及PE端?(图片API配合使用)

手机双端比如自适应网站的站长来说还是比较有用的,使用它不但单纯的可以完美解决如何用PHP判断用户通过电脑端还是手机端访问网站,还可以实现一些实际的网站问题,比如...

2234
来自专栏Golang语言社区

从零开始创建一个基于Go语言的web service

20个小时的时间能干什么?也许浑浑噩噩就过去了,也许能看一些书、做一些工作、读几篇博客、再写个一两篇博客,等等。而黑客马拉松(HackAthon),其实是一种自...

4719
来自专栏张善友的专栏

WCF 性能基准报告

现在我能找到的关于WCF性能方面的文章主要有几个,一个是微软Connected Frameworks Team的Saurabh Gupta (PM)2007年初...

2009
来自专栏杨建荣的学习笔记

Data Guard高级玩法:通过闪回恢复failover备库 (r10笔记第7天)

今天看到有一个网友提了一个问题,描述很简短 测试DG时,主库不能宕机,如何测试failover? 其实这个需求从业务层面来说是合理的,一...

3596
来自专栏杨建荣的学习笔记

测试环境的迁移式升级和数据整合(r8笔记第27天)

很多时候,大家工作中都会有一种被动的思维,那就是能不动就不动,从求稳的角度来看无可厚非,但是从风险的角度来说,还是有待商榷的。如果存在风险,还保持原样很可能就是...

2874
来自专栏V站

WORDPRESS插件大全

WordPress博客程序是国外最火最热的一款程序,只要懂点基本的WordPress操作就能自己开发主题,除了能开发强大的主题以外,还有一个强大的功能就是Wor...

8093
来自专栏Jerry的SAP技术分享

利用CRM中间件Middleware从ERP下载Customer Material的常见错误

下图是我在ERP创建的Material,为其维护了一个Customer Material AOP。

3898
来自专栏云端漫步

mac下开启docker API远程调用

docker容器技术至今已有五年的发展,作为一个工具,已经像Linux命令一样融入我们开发的生活。现在大多开发都使用Mac作为开发机,大都会装一个Docker ...

1.1K2
来自专栏后端技术探索

nginx防止DDOS攻击配置(二)

我们用的高防服务器只防流量攻击不防CC,现在的攻击多数都是混合型的,而且CC攻击很多,防CC只能自己搞了,按照第一篇的配置,在实际的使用中效果并不理想。限制每秒...

4532

扫码关注云+社区

领取腾讯云代金券