Как получить корзину текущего пользователя в REST API(wp-json)?
Ссылка скопирована
Как получить корзину текущего пользователя в REST API(wp-json)?
Данный метод выдает пустоту:
if ( null === WC()->cart && function_exists( 'wc_load_cart') ) { wc_load_cart(); } var_dump(WC()->cart->get_cart()); |
if ( null === WC()->cart && function_exists( 'wc_load_cart') ) { wc_load_cart(); } var_dump(WC()->cart->get_cart());
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

Корзина WooCommerce в REST API пустая чаще всего потому, что REST-запрос не имеет той же сессии, что браузер пользователя. WooCommerce cart живёт в сессии/куках. Если Вы дергаете
/wp-json/...без cookies клиента, WordPress видит новый “пустой” запрос и создаёт пустую корзину.Для своего REST route нужно загрузить cart и убедиться, что запрос пришёл с cookies WooCommerce:
add_action('rest_api_init', function () { register_rest_route('my/v1', '/cart', [ 'methods' => 'GET', 'callback' => function () { if (null === WC()->session) { WC()->initialize_session(); } if (null === WC()->cart) { wc_load_cart(); } return [ 'items' => WC()->cart->get_cart(), 'total' => WC()->cart->get_total(), ]; }, 'permission_callback' => '__return_true', ]); });
На фронте запрос должен идти с cookies:
fetch('/wp-json/my/v1/cart', { credentials: 'same-origin' });fetch('/wp-json/my/v1/cart', { credentials: 'same-origin' });
Если запрос идёт с другого домена, добавляются CORS, SameSite cookies и авторизация — это уже сложнее. Для headless WooCommerce лучше использовать Store API WooCommerce Blocks, потому что он специально рассчитан на cart/checkout-сценарии.
Итог:
wc_load_cart()сам по себе не спасёт, если у REST-запроса нет сессии текущего пользователя. Передавайте cookies или используйте Store API.Для авторизованных пользователей можно дополнительно связать корзину с user ID, но у гостей всё равно основой будет cookie-сессия WooCommerce. Поэтому при тесте в Postman пустая корзина нормальна: Postman не знает cookies браузера, где пользователь добавил товар.