站长之家 - 站长资讯 - 易采站长站

当前位置: > 建站教程 > 源码教程 > 博客日志 >

wordpress开发教程:原生态的wordpress ajax

2015-07-18 17:23 | 来源:网络整理 | 编辑:秋军 |

最近小V(本站好友)在开发一款自适应的wordpress博客主题,该wordpress主题大量数据展示与提交都用到了ajax技术,所以小V特意写一篇教程记录下,方便其他wordpress开发者做wordpress ajax应用开发的时候做参考。如果有些小伙伴还不知道什么是ajax,请自行百度脑补~~,闲话就不多说了,教程开始。

不少开发者在写插件时喜欢用以下方式实现ajax:

require_once( '../../../../wp-config.php' );

就连百度站长平台官方开发的wordpress结构化数据提交插件也是如此实现ajax的,这是一种极其不合理的写法,因为一旦用户设置的目录不同, 相对路径就会失效.并且, 如果你在你的插件中使用的是面向对象的写法, 你将无法直接使用一些变量和私有方法. 最大的坏处就是会导致整个WordPress的框架额外重新加载一遍,严重的影响了网站的运行效率。

其实,wordpress为了方便开发者开发带有ajax功能的插件主题已经预定义好了ajax方法,我们只需按照官方预留的方法去使用就好了。在开发wordpress ajax你要先了解的是,不管是后台还是前台任何的Ajax请求都是在admin-ajax.php处理的,向admin-ajax.php发送请求的时候, 有一个必须的参数是$_REQUEST['action'], 因为admin-ajax.php需要根据用户是否登陆了来触发不同的hooks。

if ( is_user_logged_in() ) {

/**

* Fires authenticated AJAX actions for logged-in users.

*

* The dynamic portion of the hook name, `$_REQUEST['action']`,

* refers to the name of the AJAX action callback being fired.

*

* @since 2.1.0

*/

do_action( 'wp_ajax_' . $_REQUEST['action'] );

} else {

/**

* Fires non-authenticated AJAX actions for logged-out users.

*

* The dynamic portion of the hook name, `$_REQUEST['action']`,

* refers to the name of the AJAX action callback being fired.

*

* @since 2.8.0

*/

do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );

}

以上代码取自wordpress系统文件admin-ajax.php,从以上代码我们可以看出我们要发起一个请求首先要知道这个请求是否在登录状态下发起的?不同状态触发的hook也不一样,下面是个在主题利用jquery实现ajax的示例代码:

add_action( 'wp_head', 'v7v3AjaxScript');

function v7v3AjaxScript(){

print '<script>var v7v3_ajaxurl = "'. admin_url( 'admin-ajax.php' ) . '"' . ";</script>\n";

print "<script>

$(docunment).ready(function(){

$.ajax( {

url: v7v3_ajaxurl,

data:{

action : 'is_login'

},

type:'post',

cache:false,

success:function(data) {

alert(data);

}

});

});

</scrip>";

}

add_action( 'wp_ajax_nopriv_is_login', 'v7v3_ajax_not_login' );

add_action( 'wp_ajax_is_login', 'v7v3_ajax_is_login' );

function v7v3_ajax_is_login(){

global $current_user;

get_currentuserinfo();

printf( '登录用户您好 : %s!', $current_user->display_name );

//函数结束前的die或exit很重要,一定要加。

die;

}

function v7v3_ajax_not_login(){

print '尊敬的访客您好!';

//函数结束前的die或exit很重要,一定要加。

die;

}

在开发wordpress ajax应用中最重要的一点就是函数结束之前一定要加die或者exit,如果不加的话会把整个wordpress框架都重新加载一遍。

  • WordPress中删除垃圾评论的方法
  • WordPress 添加Meta Box的方法
  • WordPress 自定义文章列表列的实现方法
  • WordPress的模板层次
  • 提高性能!五种WordPress防止垃圾评论方法
  • WordPress博客程序常见错误的解决方法
  • WordPress用户登录登出后重定向到指定页面的实现方法
  • wordpress页面压缩 加速网站访问的方法
  • 优化WordPress数据库提升网站运行速度
  • WordPress博客系统搜索引擎优化seo全攻略
  • 网友评论

    关于我们 - 联系我们 - 广告服务 - 版权声明 - 人才招聘 - 友情链接 - 网站地图 - 帮助 - -

    CopyRight © 2010-2016 源码下载 easck.com , All Rights Reserved

    蒙公网安备 15052402000103号

    蒙ICP备14002389-1号