Sorry, this entry is only available in 中文.
Category: WordPress
Fix WordPress by bringing MySQL back in PHP 7
Sorry, this entry is only available in 中文.
Consider enable SRI to prevent Qiniu CDN HTTPS tamper
Sorry, this entry is only available in 中文.
Fix Batcache plugin bug in WordPress
Sorry, this entry is only available in 中文.
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 管理效果更好。