Я переделываю клиентский сайт WP / WooCommerce и у меня возникают проблемы с admin-ajax
действиями, когда клиент не вошел в систему.
Я не верю, что действия nopriv
выполняютсяобнаружен вызовом ajax.
Если это имеет значение, клиент использует WP 4.9.11.
Я работаю на локальном хосте, не HTTPS.Если я захожу в админ, все работает как надо.Однако, когда я выхожу из системы, я всегда получаю ответ 0
при запросе /wp-admin/admin-ajax
.
Я считаю, что правильно регистрирую свои действия;вот функция «получить статус корзины», которую я использую в functions.php
:
// functions.php
function get_cart() {
wp_send_json(WC()->cart->get_cart());
wp_die();
}
add_action('wp_ajax_get_cart', 'get_cart');
add_action('wp_ajax_nopriv_get_cart', 'get_cart');
И jQuery, вызывающий ее:
// cart-actions.js
const url = `${window.SITE_GLOBALS.root}/wp-admin/admin-ajax.php`;
function onDocReady() {
const request = {
method: 'GET',
url,
data: {
action: 'nopriv_get_cart',
},
dataType: 'json',
success: cart => updateCartStatus(Object.values(cart)),
error: err => console.log(err),
};
$.ajax(request);
}
$doc.ready(onDocReady);
Я пытался проверить,пользователь вошел в систему перед вызовом add_action()
в functions.php
, я попытался поднять вызовы add_action()
в начало файла, и я попытался переименовать все, чтобы убедиться, что у меня не было опечатокгде угодно.
Чего мне не хватает?