【发布时间】:2012-04-14 09:59:05
【问题描述】:
我最近一直在尝试在 WordPress 中实现 AJAX。我知道有很多插件可用,但我想自己制作。
在有关 AJAXified WordPress 的文章中,大多数人建议使用 admin-ajax.php 来处理 AJAX 请求。我的第一个想法是简单地创建自定义 get_header() 和 get_footer()
第一种方式
// Boolean function ?ajax=true
function is_ajax () {
if($_REQUEST['ajax']) {
return true;
} else {
return false;
}
}
function ajax_get_header () {
if(is_ajax()) {
get_header('ajax');
/* Insert header-ajax.php which
includes only google analytics tracking code and some minor stuff */
return true;
} else {
get_header();
// Standard header
return true;
}
}
/* Function ajax_get_footer() pretty much the same */
然后,页面模板看起来像
<?php ajax_get_header(); ?>
<!-- Content -->
<?php ajax_get_footer(); ?>
当然,使 ajax 调用成为标准方式。 这种方法看起来简单而干净。 另一方面,很多人建议使用内置函数,通过创建一个钩子来捕获 AJAX 调用。
第二种方式
function process_ajax(){
/* Show the page or whatever */
}
add_action('wp_ajax_nopriv_ajax', 'process_ajax');
add_action('wp_ajax_ajax', 'process_ajax');
并将 AJAX 调用指向 admin-ajax.php
使用哪一个?
我已经尝试了这两种方法,发现第一种方法的加载速度比后一种方法快得多。在相同条件下,第一种方式(ajax_get_header)大约需要 400 毫秒来加载页面(几乎没有内容),第二种方式(admin-ajax.php)大约需要 800 毫秒。我不知道为什么,两种方式都加载 WP 核心并且做的事情几乎相同。
那么,我在问你,是否有充分的理由通过 admin-ajax.php 进行 AJAX 调用?是必要的吗?以及为什么通过推荐的方式处理呼叫需要更多时间?
【问题讨论】:
-
我想你会在WordPress StackExchange收到一些答案...