波斯马BOSSMA Information Technology

WordPress微信分享插件

发布时间:2017年7月8日 / 分类:PHP, WordPress / 12,326 次浏览 / 评论

前几天写了几篇博客,分享到微信朋友圈时,没有图片,发给朋友也很丑陋。网上看了很多过时的解决方案,什么body后边放一张300*300的图片,什么图片需要jpg格式的,又或者使用已经受限的JS接口,都不能解决问题。于是自己动手参考微信JS-SDK的文档实现了一个,集成到WordPress中也挺好用的(其实微信官方已经提供了PHP的例子,只不过我开始没看到,所以又造了个轮子)。

后来想把这个功能做成WordPress插件,分享出来,大家都能用多好。恰逢周末,于是开始改造,本想很快就能出一版,结果花了很长时间。遇到的几个问题:

1、将微信AppID和AppSecrect保存到option表,查询的时候用get_option函数,所以加载了wp-load.php,可能因为这里边又要加载一大堆东西,而我的数据库性能有点差,导致页面加载时间较长。最后去掉了加载WordPress环境的部分,完全不使用WordPress提供的函数,修改为保存到文件的方式,和微信AccessToken和JsTicket保存到一起,这里参考了微信官方的例子。

2、对线程安全和页面运行机制有点糊涂,PHP的所谓线程安全主要是针对Web Server的,Web Server对请求的处理方式不同而选择不同的PHP版本。PHP的每次请求是相互隔离的,所有的变量都只在每次请求的过程中有效,原生没有针对整个应用程序全局内存缓存(也许是我还没发现),所以缓存一般就是缓存到文件或者外部的缓存程序,另外绝大部分时候也没必要使用锁。由于对这些机制的不了解,导致反反复复改了很多次。

3、虽然之前写过WordPress的插件,但是对插件机制和开发方法不熟悉,现学现卖,要符合官方的规定,也花了不少时间。

问题虽然很多,不过最终都解决了。


目前这个版本功能还比较简单:

1、在WordPress管理后台添加微信AppID和AppSecrect。

2、目前只支持文章页面的微信分享给朋友和朋友圈,还不支持首页、栏目、存档页等的分享。

3、另外由于我使用了W3 Total Cache插件,页面会被缓存,为了防止签名过期,采用了动态生成javascript的方式,所以可以兼容启用了类似缓存插件的情况。

这个插件本着简便的原则,不会提供除了分享之外的功能,并且原则上不需用户显式的去设置分享的内容,尽量使用WordPress的原生数据结构,不增加表和字段。例如对于文章分享:标题为文章标题、图片为文章内容中的第一张图片(如果文章无图,则随机产生一个),内容为文章摘要。

后续将会提供的一些功能包括:

1、显示网站服务器的出口IP,方便添加到微信公众号白名单。

2、支持首页、栏目页、存档页的微信分享。

3、增加对内存缓存的支持。

….


插件目前已经发布到WordPress插件库,您可以通过管理后台安装使用了。

Bosima WeChat Page Sharing

 

另外源码已经提交到Github,有兴趣的可以看看:

https://github.com/bosima/wechat-page-sharing

欢迎测试反馈。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《WordPress微信分享插件

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有3 条评论

  1. peter 0楼:

    博主你好,我已经自己解决了,原因是缺少jquery.min.js,可能是我CDN问题。谢谢

  2. peter 0楼:

    您好,我使用了这个插件,但是分享到微信时仍然无法显示缩略图和简介,请问是否可以指导一下?非常感谢!

发表评论