Hyn*_*kal 5 php ajax wordpress jquery
我最近一直在玩AJAX到WordPress.我知道有很多插件可用,但我想自己制作.
在有关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 */
Run Code Online (Sandbox Code Playgroud)
然后,页面模板看起来像
<?php ajax_get_header(); ?>
<!-- Content -->
<?php ajax_get_footer(); ?>
Run Code Online (Sandbox Code Playgroud)
当然,制作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');
Run Code Online (Sandbox Code Playgroud)
并将AJAX调用指向admin-ajax.php
我已经尝试了这两种方法并发现第一种方法加载速度明显快于后者.在相同条件下,第一种方式(ajax_get_header)花费大约400ms来加载页面(几乎没有内容),第二种方式(admin-ajax.php)大约需要800ms.我不知道为什么,两种方式加载WP核心并做几乎相同的事情.
所以,我问你,是否有一个严肃的理由通过admin-ajax.php进行AJAX调用?它是必须的吗?为什么通过推荐的方式处理呼叫需要更多时间?
第一种方法总是比 WordPress 自己的 ajax 更快,因为 admin-ajax.php 负责处理许多其他事情,例如核心管理挂钩和其他函数调用,这反过来又使整个 ajax 调用变得相当庞大。
在第一种方式中,除了您自己的功能和输出之外,您无需担心其他任何事情。这会提高性能。
没有硬性规定要使用什么,第一种方法可以更快地完成任务,但它们不会与 WordPress 的核心管理功能挂钩,这对于某些目的来说可能是一个缺点。
请参阅 admin-ajax.php
$core_actions_get = array(
'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
'autocomplete-user', 'dashboard-widgets', 'logged-in',
);
$core_actions_post = array(
'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment',
'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment',
'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'autosave', 'closed-postboxes',
'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment',
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1189 次 |
| 最近记录: |