Ajax Call в WordPress не работает для абонента на переднем сайте

У меня есть простая форма WordPress для добавления данных в пользовательскую таблицу в WordPress с помощью Ajax

мой код 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;
            }
      }
   }
}

мой вопрос

  1. при входе с правами администратора мой ajax работает нормально, но при входе с другим пользователем (подписчиком) моего сайта выдает ошибку "Opps! У вас недостаточно прав для доступа к этой странице"
  2. какой тип доступа предоставляет подписчику используемый файл 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 вероятно то, что вы упускаете.

Другие вопросы по тегам