web-dev-qa-db-fra.com

L'appel Ajax dans WordPress ne fonctionne pas pour l'utilisateur abonné de l'avant-site

j'ai une forme wordpress simple pour ajouter des données dans un tableau personnalisé dans wordpress en utilisant Ajax

mon code 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 () {
    }
});

mon code php pour sauvegarder les données

 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;
            }
        }
    }
}

ma question est

  1. lors de la connexion avec admin, mon ajax fonctionne correctement, mais lorsque vous vous connectez avec un autre utilisateur (utilisateur abonné) de mon site, le message d'erreur suivant s'affiche: "Opps! Vous n'avez pas suffisamment d'informations pour accéder à cette page"
  2. quel type d'accessibilité fournit à l'abonné d'utiliser le fichier admin-ajax.php
2
Ankur Bhadania

Pour que les utilisateurs non administrateurs puissent utiliser une fonction ajax, vous devez également inclure un second hook utilisant wp_ajax_nopriv

Donc juste après:

add_action('wp_ajax_add_category_bookly', 'add_category_bookly_callback');

vous devriez inclure ceci:

add_action('wp_ajax_nopriv_add_category_bookly', 'add_category_bookly_callback');

5
jetlej