WordPress中的AJAX调用不适用于前台站点的订户用户

时间:2014-10-03 作者:Ankur Bhadania

我有一个简单的wordpress表单,可以使用Ajax在wordpress的自定义表中添加数据

我的Ajax代码

jQuery.ajax(ajax_object.ajax_url, {
    type: "POST",
    data: data,
    cache: false,
    success: function (response) {
        alert(response);

    },
    error: function (error) {
        if (typeof console === "object") {
            console.log(error);
        }
    },
    complete: function () {
    }
});
保存数据的php代码

 if (!class_exists(\'bookly_appo_Ajax\')) {
    class bookly_appo_Ajax
    {
        public function __construct()
        {
            add_action(\'init\', array(&$this, \'init\'));
        }

        public function init()
        {
            add_action(\'wp_enqueue_scripts\', \'enqueue_ajax_booklyapp\');
            function enqueue_ajax_booklyapp($hook)
            {

                wp_enqueue_script(\'ajax-script-booklyapp\', plugins_url(\'/ajax.js?v=\' . rand(), __FILE__), array(\'jquery\'));
                wp_localize_script(\'ajax-script-booklyapp\', \'ajax_object\',
                    array(
                        \'ajax_url\' => admin_url(\'admin-ajax.php\')
                    )
                );
            }

            add_action(\'wp_ajax_add_category_bookly\', \'add_category_bookly_callback\');
            function add_category_bookly_callback()
            {
                $storeid = $_REQUEST[\'storeid\'];

                $rows = $wpdb->insert(
                    $table_category, array(

                        \'store_id\' => $storeid,
                    )
                );
                $lastid = $wpdb->insert_id;
            }
        }
    }
}
我的问题是

当使用admin登录时,我的ajax工作正常,但当使用我网站的其他用户(订阅者用户)登录时,会出现错误“Opps!您没有足够的权限访问此页面”

  • 订阅者可以使用哪种类型的admin ajax。php文件

  • 1 个回复
    最合适的回答,由SO网友:jetlej 整理而成

    为了让非管理员用户能够使用ajax功能,还需要使用wp_ajax_nopriv

    所以在这之后:

    add_action(\'wp_ajax_add_category_bookly\', \'add_category_bookly_callback\');

    您应该包括以下内容:

    add_action(\'wp_ajax_nopriv_add_category_bookly\', \'add_category_bookly_callback\');

    结束

    相关推荐

    Why AJAX response 0!

    为什么AJAX响应为0!让我很恼火!。我想在blur上检查电子邮件地址是否有效。请建议我这是我的代码这是我的php代码 add_action(\'wp_ajax_send_message_to_customer\',\'add_send_msg\');?> <form> <input type=\"text\" name=\"email_customer\" id=\"email_customer\"/> </form>