wordpress 中的 Ajax 调用不适用于前端站点的订阅者用户

Posted

技术标签:

【中文标题】wordpress 中的 Ajax 调用不适用于前端站点的订阅者用户【英文标题】:Ajax call in wordpress not working for subscriber user in front site 【发布时间】:2014-10-06 06:13:07 【问题描述】:

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

我的 jquery 代码(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');
            add_action('wp_ajax_nopriv_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;
            
      
   

我的问题是

    使用管理员用户登录时,我的 ajax 工作正常,但使用其他用户登录时 我网站的用户(订阅用户)给出错误“Opps!你不 有足够的权限访问此页面” 哪种类型 可访问性向订阅者提供使用的 admin-ajax.php 文件

【问题讨论】:

【参考方案1】:

我的猜测是您没有为特权用户和非特权用户定义操作。两个都有吗

add_action( 'wp_ajax_ACTION', 'bookly_appo_Ajax' );
add_action( 'wp_ajax_nopriv_ACTION', 'bookly_appo_Ajax' );

在你的 php? wp_ajax_nopriv_ACTION 可能是您所缺少的。

【讨论】:

以上是关于wordpress 中的 Ajax 调用不适用于前端站点的订阅者用户的主要内容,如果未能解决你的问题,请参考以下文章

ActionFilter 不适用于 AJAX 调用

数据表不适用于ajax调用

Ajax POST 调用不适用于 WCF

WordPress REST API 不适用于自定义 wordpress 路径

Ajax 调用仅适用于表的第一行,不适用于下一行

Cors 不适用于 XMLhttprequest 节点/快递