web-dev-qa-db-de.com

Ajax-Aufruf in WordPress funktioniert nicht für Benutzer vor Ort

ich habe einfache WordPress-Form, um Daten in benutzerdefinierte Tabelle in WordPress mit Ajax hinzuzufügen

mein Ajax-Code

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

mein PHP-Code zum Speichern von Daten

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

meine Frage ist

  1. wenn ich mich mit admin anmelde, funktioniert mein Ajax einwandfrei, aber wenn ich mich mit einem anderen Benutzer (Abonnentenbenutzer) meiner Site anmelde, wird der Fehler "Opps! Sie haben nicht genügend Berechtigungen, um auf diese Seite zuzugreifen" angezeigt.
  2. welche Art der Zugänglichkeit bietet der Abonnent der verwendeten Datei admin-ajax.php?
2
Ankur Bhadania

Damit Benutzer ohne Administratorrechte eine Ajax-Funktion verwenden können, müssen Sie auch einen zweiten Hook mit wp_ajax_nopriv einfügen.

Also gleich danach:

add_action('wp_ajax_add_category_bookly', 'add_category_bookly_callback');

sie sollten dies einschließen:

add_action('wp_ajax_nopriv_add_category_bookly', 'add_category_bookly_callback');

5
jetlej