| |||
|
|
Друзья-программисты, а кто-то писал плагины под WooCommerce? UPD: Друзья, спасибо всем за советы, вопрос решен. Правильный ответ (с вашими подсказками) нашел мудрый Кирилл. Итак, вопрос был, как в магазине WooCommerce фронтенд JS может обратиться к бэкенду по Ajax и получить доступ к сессии, пользователю, его корзине и номеру заказа. Правильный ответ: 1. В магазине WooCommerce (в отличие от прочих магазинов типа OpenCart и PrestaShop) нельзя узнать номер заказа до нажатия кнопки Checkout: заказа не существует, хоть корзина уже зарегистрирована в сессии. Заказ будет создан и получит номер только в момент выполнения Checkout. 2. Даже если вы зарегистрировали отдельный rest-эндпоинт и гоняете туда запросы аяксом, WooCommerce не сможет опознать сессию и проигнорирует авторизационные куки WooCommerce и WordPress. Чтобы сессия была опознана, необходимо при запросе делать специальные манипуляции: в дополнение к авторизационным кукам разместить в хедерах некие загадочные ключи Nonce и X-WP-Nonce. Искать их надо столь же неочевидным способом: X-WP-Nonce доступен в объекте wp.apiFetch.nonceMiddleware, а Nonce передается при загрузке страницы и затем обновляется по React, так что его актуальная версия лежит в LocalStorage 'storeApiNonce'. Чтобы не париться, для своих Аякс-запросов можно использовать даже тот эндпоинт, что использует кнопка Checkout, дописав туда свои процедуры на случай запроса аяксом. Сам запрос в итоге такой:
При этом, разумеется, мы понимаем, что в нагромождении граблей этого магазина (React над плагином WooCommerce над WordPress) может существовать и другой путь, каким фронтенд может обратиться к бэкенду дабы зарегистрировать заказ и узнать его уникальный номер. Возможно, есть специальная процедура wc.SpecialMagic[666].FuckingSecretApi(wp По личным ощущениям: с благодарностью вспоминаю магазины OpenCart3, OpenCart4 и PrestaShop, написание плагинов для которых потребовало неделю-две напряженной работы на каждый. По сравнению с ними WooCommerce — невероятно запутанная йобань, с которой я провозился уже месяц, и без помощи Кирилла и ваших советов точно бы не осилил. Сложнее, вероятно, окажется лишь Magento — насколько я уже успел видеть, это закупленное пафосным Adobe удивительное поделие девяностых: в 2024 году его админят из терминала набором текстовых команд в консоли... [ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ] |
|||||||||||||||