Пользовательский плагин, предоставляющий: wp-admin/admin-ajax.php 400 (Плохой запрос)


У меня возникли проблемы с отладкой проблемы с плагином, который я пишу. Я хочу выполнить запрос Ajax, когда пользователь изменяет параметр на выбранном входе. Дело в том, что вчера он полностью работал, как и ожидалось, а затем, когда я тестировал веб-сайт сегодня (со вчерашнего дня никаких изменений в коде не было сделано вообще) Я получаю:

Domain.com/wp-admin/admin-ajax.php 400 (Неверный запрос)

Сообщение в моей консоли Chrome. Если я попробую в Internet Explorer/Firefox, это не даст ошибка в консоли, но запрос Ajax все еще не работает.

Плагин, который я создаю, находится на DigitalOcean droplet, который был создан с помощью их приложения one click для WordPress.

Вот код, который я использую в плагине для ajax:

//This is in a class' constructor method
add_action('wp_enqueue_scripts', array($this, 'plugin_prefix_scripts'));

//PLUGIN_URL is a constant created earlier in the plugin
public function plugin_prefix_scripts() {
wp_enqueue_script('plugin_prefix_scripts', PLUGIN_URL . 'scripts/frontend_script.js');
wp_localize_script('plugin_prefix_scripts', 'js_object',
  array(
    'ajax_url' => admin_url('admin-ajax.php')
  )
);

}

Frontend_script.js :

$('#plugin-prefix-option-one, #plugin-prefix-option-two').on('change', function() {
    var data = {
        'action': 'plugin_prefix_page_change',
        'option_val': 'some_val',
    }

    $.post(js_object.ajax_url, data, function(response) {
        console.log(response);
});

Возвращаемся в класс:

add_action('wp_ajax_plugin_prefix_page_change', array($this, 'plugin_prefix_page_change'));

public function plugin_prefix_page_change() {
    $arr = array(1, 2, 3, 4, 5);

    wp_send_json($arr);

    //I've also tried wp_die() and no die call at all but same outcome
    die();
}

Я не уверен, как отладить это дальше. Любая помощь будет очень признательна.

Спасибо

Author: thairish, 2018-03-09

1 answers

Как упомянул Джейкоб Питти, эта проблема возникала у вышедших из системы пользователей, и его предложение подключить wp_ajax_nopriv устранило проблему:

add_action('wp_ajax_nopriv_plugin_prefix_page_change', array($this, 'plugin_prefix_page_change'));
 3
Author: thairish, 2018-03-09 15:32:23