Category: WordPress

WordPress友言近期评论Widget更新(v1.1)

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/wordpress-uyan-recent-comment-widget-v1-1 前两天写了一个友言近期评论的 WordPress Widget,初步测试还能用,但多次进行刷新,会出现不能正常登录之类的问题(Failed to authentication with uyan.cc、Invalid comments data from uyan.cc 之类的报错),而且原来每次都需要登录友言的后台管理严重影响速度,我也比较怕怕这样不断发请求会导致友言把我的脚本和博客给封掉,嘿嘿。 由于友言没有公开 API 给我等码农来调用,因此今天又花了点时间做了一些改进,弄了个 1.1 版本,原介绍文章在这: https://zohead.com/archives/wordpress-uyan-recent-comment-widget/ 1.1版本更新说明: 1、登录友言后台管理,得到近期评论等地方增加错误处理,如果服务端返回的 JSON 数据不对则报错 2、减少 PHP 本身的 error message 输出 3、将得到近期评论的功能分离为一个函数单独调用 4、登录成功之后保存得到的 cookies 到同目录下的 uyan_cookie.php 文件中方便下次直接使用,而无需再重复登录,如果 cookie 过期下次获取评论时失败则再重新登录 5、发查询近期评论请求时增加友言本身的管理地址作为 referer 此次增加了一个 uyan_cookie.php 文件用于保存 cookie,从下面的链接下载解压缩之后,请将此文件也上传到同一目录中(不上传的话 PHP 可能会报 require_once 出错),此文件默认为空,详细代码就不贴了,直接在下面下载查看吧。友言 的登录邮箱、密码、域名之类的修改请参考原始的介绍文章了。 这个是 1.1 版本的下载地址: http://miseal.googlecode.com/files/uyan_comments_v1.1.zip 当前的通过临时文件保存 cookie 方式应该还有改进空间,有任何问题欢迎指正咯 ^_^

PHP实现WordPress友言近期评论Widget

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/wordpress-uyan-recent-comment-widget/ 现在有很多人都使用 WordPress 来搭建自己的博客系统,其中有一些是像我这样使用 友言 这个社交评论插件来替代系统原始的评论框的,友言 评论框插件对一些主流的社交网站支持比较好,很是推荐,友言官网: http://uyan.cc/ 之前我写过一个修改 友言 插件实现完美与 WordPress Mobile Pack 插件配合实现移动版博客的文章,在这里仅供参考: https://zohead.com/archives/modify-plugin-wordpress-mobile-pack/ 但现在发现还是有一点不足,由于使用了友言评论框替代 WordPress 本身的,导致 WordPress 的 ”近期评论“ Widget(小工具)显示不了,因此小折腾一个晚上,靠着还依稀记得的 PHP 编程经历,写了一个简单的显示 友言 近期评论的 WordPress Widget,先看效果图(本博客右侧就有 ^_^): 原理及代码: 实现原理比较简单,先用工具分析 友言 评论的后台登录和评论显示之类的 HTTP 包信息,然后用 PHP 的 fsockopen 来自己发送 GET、POST 请求实现在 WordPress 上列举显示已经存在的友言评论(备注:默认只显示已经经过审核的评论)。 由于中间有几步 GET 和 POST 请求,就找了个现成的 post-to-host 这个很小的 PHP 脚本来发 GET 和 POST 请求,下载地址: http://code.google.com/p/post-to-host/ 下面是主程序 uyan_comments.php 的代码: 代码本身比较简单,有些 PHP 基础就可以看懂了,把 uyan_comments.php 文件最上面的 $email、$password、$domain、$maxcomments 改为实际的 友言 后台管理的登录邮箱、密码、你的域名、显示的最多评论数(备注:默认为10条,如果改为小于0的值则不限制显示的评论条数),就可以使用了。你应该已经发现这个 uyan_comments.php 其实和 WordPress 没太大关系,完全也可以直接单独使用。 需要注意的是为了避免使用明文密码而可能导致的问题(安全第一 ^_^),上面的 $password 是 友言 后台管理时实际用到的加密过的密码。这个加密过的密码可以通过 Firefox 的 Live HTTP headers 插件之类的抓取 HTTP 协议头的插件或工具来得到。 得到友言的加密登录密码: 下面以 Firefox 的 Live HTTP headers 插件为例说明如何得到 友言 的实际加密的密码,打开 Live HTTP headers,该插件会自动开始抓取,然后用正确的邮箱和密码登录 友言 的后台管理,停止 Live HTTP headers 的抓取,在输出里就能找到地址为如下格式的 GET 请求,请求参数中就有加密的密码: http://uyan.cc/index.php/youyan_login/userAutoLoginCrossDomain?callback=jsonpxxxxxxx&email=xxxxx@xxxxx.com&loginPassword=xxxxxxxxxxxxxxxxx&rem=1&domain=xxx.com 其中的 email 段就是登录邮箱,loginPassword 段即为加密的密码,保存下该密码,修改 uyan_comments.php 文件中的 $email 和 $password 值。 Live HTTP headers 的抓取截图如下所示(后面的未显示完整): 如何加入 WordPress Widget 列表中: 你如果有真正实现一个 WordPress Widget 的心思,可以用本代码加上 WordPress 的 register_widget 之类的接口来实现。无奈我是一个超级懒人,懒人就有懒人的办法,下面介绍的就是懒人的办法,哈哈。 首先下载本文最下面下载链接中的 post_to_host.php 和 uyan_comments.php,将 uyan_comments.php 中对应的 登录邮箱、密码、域名 改掉(参考上面),将这两个文件上传到 WordPress 根目录中(位置也可以自己修改),然后给 WordPress 安装 PHP Code Widget 插件,这是一个通用 Widget,添加之后,可以自行添加 文本、HTML、PHP 代码等,比较方便,插件地址: http://wordpress.org/extend/plugins/php-code-widget/ 安装之后,在 WordPress 管理后台的 外观 - 小工具 里就能看到名为 “PHP Code”  的小工具,将其托至右侧的 “第一小工具区域”,输入自定义的标题,然后加入以下代码保存即可(如果上传的位置不在 WordPress 根目录那请自行修改): 重新访问 WordPress,如果上面的 登录邮箱、密码、域名 设定都正确的话,应该就可以出现类似上面效果图的评论列表。 不足和改进: 1、uyan_comments.php 每次访问时都需要登录 友言 管理后台,请求评论列表,因此速度会有些影响,这个有空再改进了。 2、由于需要在 Web服务器中使用 PHP 的 fsockopen 来发 GET、POST 请求得到评论列表,因此可能对 WordPress 博客的访问速度造成一些影响,如果 PHP 空间在国内还可以,像我这样空间在国外的就稍微悲剧点了,所以建议安装 WP Super Cache WordPress 之类的插件来实现更好的缓存加速,将影响尽量降低。 下载地址(115网盘): http://115.com/file/beezjk3b 写博客好累,准备休息,HOHO,本文件为个人作品,有任何问题欢迎指正。 ^_^

修改 WordPress 插件配合 WordPress Mobile Pack 实现移动版博客

WordPress Mobile Pack 是一款相当不错的 WordPress 移动版本转换插件,安装启用之后,可以快速生成适合手机访问的移动版本 WordPress 博客,插件安装地址如下:   http://wordpress.org/extend/plugins/wordpress-mobile-pack/   可以在 WordPress 后台配置中搜索 WordPress Mobile Pack 或者手工下载安装包进行安装。   实际使用,在 WordPress 本身插件比较少的情况下,WordPress Mobile Pack 在手机上效果很不错,但安装了一些额外的插件之后,这些插件的代码也在移动版本中显示出来,这样会明显影响移动设备上的显示效果,而且会花费比较多的流量。   下面以实际经历介绍如何修改 WordPress 插件实现与 WordPress Mobile Pack 的完美配合,以社交评论插件 友言 为例。   友言是一款很适合当前社交应用的 WordPress 评论插件,访问博客的用户可以使用社交网站用户连接并进行评论,而且可以和 WordPress 本身的评论进行同步,官方网站:   http://www.uyan.cc/   同时安装了 友言 和 WordPress Mobile Pack 插件,先看看在桌面浏览器上的文章显示效果:     这种效果在桌面浏览器上是比较好的,但在移动浏览器是有点不能接受的,过于复杂而且耗费很多流量。   WordPress Mobile Pack 会自动去除页面上的脚本等不适合移动设备显示的东西,但友言的评论框可能由于内嵌的原因,不能自动去除,而且如果直接去除的话,在移动设备中就会出现不能评论文章的问题,因此我们可以修改 友言 的插件代码,在判断 WordPress Mobile Pack 插件已经加载并且当前使用的移动版本的 WordPress 时就自动不加载 友言 的评论框,转而使用 WordPress 标准的评论框(可以同步到 友言 评论)。   简单查看 友言 和 WordPress Mobile Pack 的源代码之后,做出以下修改就可以达到移动设备上的完美显示:   修改 WordPress 安装目录下 wp-content/plugins/youyan-social-comment-system/uyan_plugin.php 文件,将   add_filter('comments_template', 'uyan_comment');   改为:   if (!function_exists('wpmp_switcher_outcome') || wpmp_switcher_outcome() ==     WPMP_SWITCHER_DESKTOP_PAGE) {     add_filter('comments_template', 'uyan_comment'); }   通过 WordPress Mobile Pack 插件中的 wpmp_switcher_outcome 函数判断当前使用的移动版本还是桌面版本。   更改之后,需要禁用并重新启用 WordPress Mobile Pack 插件才能起作用,然后在移动设备浏览器中查看,下面是在我的 android 手机上的效果,非常清爽,而且用的流量也很少:     如果还有其它的 WordPress 也可以采取类似的方法在需要显示的地方进行修改,已经测试过 多说 插件通过这种方法修改也可以。   PS: 1、友言 插件相对于 多说 等其它社交评论插件来说,对服务器的要求要低一些,但如果 PHP 的 cURL 等功能如果未启用,可能会出现一些错误;   2、WordPress Mobile Pack 的默认配置中启用了移动图像裁剪,在 PHP 不支持 GD 等库的情况下,会出现错误,造成移动设备上图片显示不了,如果遇到这种情况,可以关闭 WordPress Mobile Pack 的图像裁剪功能;   3、Android、iPhone等智能机设备上如果需要对 WordPress 站点进行管理,可以安装 WordPress for Android 等软件,通过这些 App 管理效果更好。