一个插件module引发的血案  

之前写的小插件myQaptcha也有几个月了,陆陆续续有陌生朋友开始使用.具体请参看 WordPress集成Qaptcha的滑动解锁插件–myQaptcha

昨天有一位使用良心 Deve Theme的朋友,插件无法使用.偶正好有时间,就看了看代码研究了一下,

三十岁

一.首先发现是jQuery重复加载问题.去掉重复.

二.还有问题,发现jQuery的关键字被主题js冲突,$无法使用.似乎这个问题在其他theme也可能出现,一不做二不休的把插件改了,升级到 1.0.4 版本.然后那位朋友测试终于好用了.我也感觉做了一件善事.木哈哈哈

三.晚上了,那位朋友又联系我.说启用 Deve 中的扩展小工具功能又出现问题了.好人做到底,查代码发现几个小问题,最严重的是问题只有一个.良心在page中启动列表时,干扰了wordpress的内置函数 is_singular(),深查了一下发现 is_single()||is_page()||is_attachment() 都有问题.无语了.只好告诉那位朋友临时修改我的插件,能凑合用上吧.直接成了插件定制版了.

不知道是不是良心主题兼容性问题还是已经解决了,那位朋友已经抓图证明了自己是正版用户,我测试的环境是周良的Deve泄露版.就拿来帮人测试了.主题不错,但是拿来用就会被人骂了.具体的问题,还是靠广大劳动群众自己去发掘吧.

下面贴一个科普知识:

曾经简单的认为is_sigular()相当于is_single()||is_page()||is_attachment()没有什么大问题。也就是说,有is_single()||is_page()

<!--?php if ( is_single()||is_page() ) { ?-->

的地方,都可以替换成is_singular()

<!--?php if ( is_singular() ) { ?-->

但是其实上述这种理解不是太准确。来比较一下is_single()与is_sigular()的文档。is_single()是可以加参数的。参数可以是post_id,post_slug,post_title。2.5之后还可以同时对这几个参数加以判断。

当不带参数时,返回的是当前显示的是不是一个单独的post(而且类型不是page和attachment)。

而带了参数,返回的就是当前显示的是不是编号/标题/标志为“XXX”的那篇post。

在数据库里,is_single不仅要查询ID是否存在,还要保证type是“post”而不是“page”,“attachment”甚至“revision”。is_sigular()则简单的多。就是当前显示的是不是一条单独的post所形成的页面。在数据库里,is_sigular()也只是判断ID是否存在即可。

这些问题,你懂了么?

欢迎大佬支持本博客的发展 -- Donate --

本文链接:一个插件module引发的血案

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
  1. 我也是用的Deve,折腾了两个半夜后暂时解决了问题,但是貌似还不完美。除去jQuery重复的问题,Deve小工具也确实与此插件存在冲突,我排查了后定位到的语句是“ ”。PHP都是自己摸索的,到这卡住了就。
    插件很棒的说!

    • 额,语句貌似被过滤掉了,哇咔咔,就是查询文章数量信息的query_posts。。。有它那行代码的页面,都不会显示滑动解锁。

      • 是么?应该不会啊,我这里是好的,反正新版本的wp是有问题,没更新

  2. 我的网站用了这个插件,现在都彻底杜绝了垃圾留言,很简单,很实用的插件!

  3. 您好,问下网站中的相关文章是通过什么插件实现的,还是主题中自带的?谢谢

    • 看了一下.这个验证码装上,估计来看的人好疯了

      • 我写的,求围观,求指点,求修正BUG。http://www.ineeke.com/archives/1350/

        • 看了,你还用着俺的滑动解锁.没有更好的建议

  4. 我不太喜欢给博客添加什么验证码,嘿嘿

    • 哈,看来你的spam要么不多,要么你就是不删手痒

    • 还有估计我被多说黑名单了.所有我发的评论都不显示.你那没法留言

  1. 没有通告