Simple answer: <不要为AJAX请求添加单独的PHP文件。声明将在插件中使用的函数,并通过admin-ajax.php
.
add_action(\'wp_ajax_custom_action_name\',\'custom_action_handler\');
// to make AJAX action available for non-logged in users:
add_action(\'wp_ajax_nopriv_custom_action_name\',\'custom_action_handler\');
function custom_action_handler() {
global $wpdb;
// optionally keep the actual functions separately
// include(dirname(__FILE__).\'/ajax-handler.php\');
// custom_ajax_handler_process(); // handle request
// or just handle request here
exit;
}
$endpoint = admin_url(\'admin-ajax.php\').\'?action=custom_action_name\';
WordPress将自动
action
并将其与
wp_ajax_
(和/或
wp_ajax_nopriv_
) 用于加载挂钩函数的挂钩后缀(
custom_action_handler
).
Complex answer: 您可以使用一个单独的PHP文件来处理AJAX请求,但您需要能够加载所需的WordPress函数和类(例如$wpdb
) 首先在它内部。您可以通过以下方式执行此操作:
define(\'SHORTINIT\',true);
需要wp-blog-header.php
从WordPress根路径手动包含任何所需的WordPress包含 处理AJAX请求
步骤3是最难的部分,因为根据您所做的工作,您可能需要许多相互关联的函数,以便在没有
fatal error
使代码崩溃,从而请求响应。虽然如果您只是访问数据库函数/类,那么这些可能是最小的。总的来说,这是一种可行的方法,但可能意味着要做更多的工作,只需稍微增加AJAX响应性能时间,所以简单的答案可能更好。