Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在wordpress中定制ajax处理程序?_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 如何在wordpress中定制ajax处理程序?

Javascript 如何在wordpress中定制ajax处理程序?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我试图在wordpress中创建自定义ajax处理程序,因为admin-ajax.php需要很长时间来处理从7秒到10秒的ajax请求,所以我在google上搜索它并管理它来做一些类似这样的自定义ajax-handler.php <?php if (is_ajax_request()) { if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exist

我试图在wordpress中创建自定义ajax处理程序,因为admin-ajax.php需要很长时间来处理从7秒到10秒的ajax请求,所以我在google上搜索它并管理它来做一些类似这样的自定义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();
}

您需要加载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本身可能不是问题所在,您是否使用像“test”这样的简单输出来测试wp-ajax

注意:当包含wp-load.php时,最好从ajax文件的目录开始,然后返回Wordpress根目录,而不是使用
$\u服务器['DOCUMENT\u root']
,因为wp可以安装在子目录中,而您可能不知道这是/将是什么(即插件中的自定义ajax处理程序)