我正在尝试在wordpress中制作自定义ajax处理程序,因为admin-ajax.php需要花费很长时间才能处理从7s到10s的ajax请求所以我谷歌它并管理这样做一些自定义的ajax-handler.php这样
<?php
if (is_ajax_request()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
$action = $_POST["action"];
switch($action) { //Switch case for value of action
case "test": test_function(); break;
}
}
}
//Function to check if the request is an AJAX request
function is_ajax_request() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
function test_function()
{
$response = wc_get_product(1463);
header('Content-Type: application/json');
echo json_encode($response);
die();
}
并且我首先将响应发送为文本$response = "test"
并且ajax调用花费300毫秒但是当尝试从另一个文件调用函数时$response = wc_get_product(1463);
它会在响应Fatal error: Call to undefined function wc_get_product() in C:\wamp\www\....
中引发错误
我试图使用这个ajaxflow plugin制作自定义wordpress ajax handel,但它接缝的东西请所以我如何从其他文件中调用这些函数,并提前感谢任何帮助。
答案 0 :(得分:0)
您需要加载wp才能使用其功能
require_once 'wp-load.php' //note find the file relative to your files location or do a dynamic url to find .. e.g. `$_SERVER['DOCUMENT_ROOT']`
if (is_ajax_request()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
$action = $_POST["action"];
switch($action) { //Switch case for value of action
case "test": test_function(); break;
}
}
}
//Function to check if the request is an AJAX request
function is_ajax_request() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
function test_function()
{
$response = wc_get_product(1463);
header('Content-Type: application/json');
echo json_encode($response);
die();
}
但是wp-ajax本身可能不是问题,你是否用简单的输出来测试wp-ajax,例如&#39; test&#39; ?