如何在wordpress插件中实现ajax

 

wordpress的优秀之处在于可以随便插,方便插,随处插.所以定制性是相当强悍的,可以做成CMS,甚至论坛.虽然有人会说这样很BT,但是如果你熟悉php,能站在WP的肩膀上,做出效率很高的其他程序又有何不可呢?一不小心又说了这么多的废话,毕竟我对WP的敬仰犹如滔滔江水.下面切入正题,介绍一下如何用插件配合javascript脚本在wordpress中实现ajax.

Ajax其实没有传说中的那么复杂的,只要你稍微熟悉一点javascript就能自己写ajax程序了.在这里我想稍微纠正一些观点,那就是大家常说的那些滑动门技术,那些很炫的div特效其实和ajax技术无关的,仅仅是通过js捕获鼠标事件再加上CSS美化完成的,而Ajax=>AsynchronousJavaScript+XML,说白了就是异步载入XML数据的一种javascript实现罢了. 通过ajax,我们可以在指定的DIV内根据需要在需要的时候载入数据从而实现无刷新更新内容.由于ajax获取的仅仅是需要的数据,所以变相的节约了网络中传输的数据量,提高了页面的载入速度,这也就是ajax能提速的原因,记住,这是ajax能提速的唯一的地方.所以千万别太迷信ajax的提速效果.关于ajax的实现,网络上可以google一大堆代码出来,所以我这里就不重复了.我推荐大家用jquery这个js框架,而不是自己去写复杂的ajax,具体的jquery和ajax请参考我的这篇文章.

客户端的js搞定了,现在的问题就是如何用插件来给ajax提供数据.前面说了,wordpress可以在很多地方接受你的插入,而对于ajax,我们最关心的就是在程序执行的初期进行插入,所以这里要用到这个勾子(hook)“add_action(“init”,”func”)”,这样就能利用默认的wordpress程序来给ajax提供数据,而不是自己编写第三方代码获取数据,下面给一段代码例子:

 

  1. /*
  2. Plugin Name: cos-smaple
  3. Plugin URI: http://www.storyday.com
  4. Description: sample
  5. Version: 1.0
  6. Author: jiangdong
  7. date:2007-11-11
  8. Author URI:http://www.storyday.com
  9. */
  10. function ajaxsample(){
  11. if( $_GET['ajax'] == true ){//如果用ajax,则需要在请求的时候加上特殊的?ajax=true,否则会影响正常的页面
  12. echo $_GET['key'];//这里将浏览器的get变量echo出来 ?key=my-custom-key
  13. /*这里可以根据这个key在数据库中获取内容
  14. ........这里省略代码若干行........
  15. */
  16. die();//因为仅仅是获取ajax数据用,所以ajax数据任务完成之后直接将程序die掉,别给出多余的数据。
  17. }
  18. }

 

add_action(‘init’, ‘ajaxsample’);

激活了这个插件之后,大家访问http://your-domain.com/index.php?ajax=true&key=your-custom-key
看看会有什么结果,是不是按照你的期待出现了特定的ajax需要的数据?本站主页右边显示的当前用户的历史留言就是这样来的,同样利用这样的方法可以在wordpress中实现更多精彩的ajax技术.

由于ajax技术本身需要使用人员对客户端和浏览器端的关系要清晰,并且至少应该要熟悉一点javascript编写,如果你是wp的爱好者,请首先要熟悉wp的模板编写方法.所这篇文章不是一篇入门的文章,唯一有的作用那就是“点拨”,希望对某些特定的朋友有所帮助.

鉴于前几天某些网友的E-mail和在本站的留言求助,写下了上面的文字,当然本人非此专业人士,有错误请指出哦,谢谢!

 

转自:http://www.storyday.com/html/y2007/1282_wp-plugin-ajax.html

 

在看这篇文章之前我已经用自己的方法,把AJAX直接写在单独文件里例如inlude/plugin_ajax.php。并且只echo JSON数据然后在文件尾部die()掉。

到这里和上面的介绍的方法都还是一样的。关键在于它的调用方式,我用的是直接在插件内判断GET_[“action”]=="ajax"这样直接进入ajax,而不是用add_action("init","xx")方法。

这样的好处是减轻服务器负担快速返回结果;但缺点是只能用些wordpress的基础函数。
因为在wordpress处理插件的时候还有很多系统代码未运行。

所以建议如果是在ajax中要用到较多的wordpress代码的用上面文章的方法;如果只是简单的返回处理数据就是用我给出的方法就好~

发布者

小懿

RingCentral敏捷教练 不懂技术的产品经理不是好教练!

发表评论

邮箱地址不会被公开。 必填项已用*标注