admin-ajax.php找不到已经定义的ajax操作

时间:2018-12-11 21:57:13

标签: php ajax wordpress

我已经到了必须在这里向您寻求帮助的地步。

有关admin-ajax.php代码的一部分,用于检查您是否已注册ajax操作。但是由于某种原因,触发Ajax请求时找不到我的操作。但是,如果我检查代码中的操作,就可以了。这是检查有效操作的代码部分。

if ( ! has_action( 'wp_ajax_' . $_REQUEST['action'] ) )

这是WordPress文件admin-ajax.php中的代码段:

if ( is_user_logged_in() ) {
    // If no action is registered, return a Bad Request response.
    if ( ! has_action( 'wp_ajax_' . $_REQUEST['action'] ) ) {
        wp_die( '0', 400 );
    }

    /**
     * Fires authenticated Ajax actions for logged-in users.
     *
     * The dynamic portion of the hook name, `$_REQUEST['action']`,
     * refers to the name of the Ajax action callback being fired.
     *
     * @since 2.1.0
     */
    do_action( 'wp_ajax_' . $_REQUEST['action'] );
} else {
    // If no action is registered, return a Bad Request response.
    if ( ! has_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ) ) {
        wp_die( '0', 400 );
    }

    /**
     * Fires non-authenticated Ajax actions for logged-out users.
     *
     * The dynamic portion of the hook name, `$_REQUEST['action']`,
     * refers to the name of the Ajax action callback being fired.
     *
     * @since 2.8.0
     */
    do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
}

您可以在此处查看完整的代码:

https://github.com/WordPress/WordPress/blob/master/wp-admin/admin-ajax.php#L155

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对于其他路过的人。经过大量的调试和测试,我找到了答案。该操作已在继承的类中注册,因此,在代码需要时,该操作已不存在。因此,在调用了在父构造方法中注册动作的方法之后,所有方法都开始起作用。