Поскольку я хочу добавить элементы в корзину woocommerce с помощью моего плагина, мне нужно быть уверенным, что сеансовый cookie-файл установлен, и установить cookie-файл, когда он еще не установлен.
Этот код прекрасно работает для внешнего интерфейса.:
add_action('woocommerce_init', 'force_non_logged_user_wc_session');
function force_non_logged_user_wc_session()
{
if (is_user_logged_in() || is_admin())
return;
if (!WC()->session->has_session()) {
WC()->session->set_customer_session_cookie(true);
}
}
К сожалению, все мои обратные вызовы REST-API больше не работают для гостей (REST-API вызывается javascript и не требует сеансов WC), но возвращаетследующее сообщение:
Неустранимая ошибка : необученная ошибка: вызов функции-члена has_session () для null в C: \ Users .... \ wp-content \ plugins........ php: 318
Причина проблемы, скорее всего, заключается в том, что WC загружает обработчик сеанса только на страницах переднего плана.Для моего требования этого достаточно, но я не знаю, как установить cookie только для внешнего интерфейса.Я могу только установить cookie в заголовке, но как мне узнать, если это запрос от внешнего интерфейса или API REST?
Я пытался обработать проверку следующими проверками: if(did_action( 'wp_loaded' ))
и я попытался добавить действие к другим хукам действий: wp_loaded
и init