Модул 1 · 1.2
Как работи WooCommerce
Модул 1: Преди да започнете · Време за четене: 10 минути
Учебна цел: След този урок ще можете да обясните как WooCommerce работи в WordPress и къде се намират продуктите, поръчките, количката и планираните задачи.
Основни понятия: тип продукт, тип публикация product, поръчки (HPOS), страници на магазина, сесия и количка, Store API, REST API, Action Scheduler, транзакционни имейли, разширения
Разширение, което превръща Вашия сайт в магазин
В курса за WordPress (уроци 1.2 и 1.3) видяхте как се създава една страница: уеб сървърът предава заявката на PHP, PHP зарежда WordPress, разширенията и темата, извлича данни от базата данни и ги превръща в HTML. WooCommerce се включва в този процес като голямо разширение. То носи четири неща:
- Данни: продукти, поръчки, клиенти, данъчни ставки, зони за доставка.
- Страници: Магазин, Количка, Поръчка и Моят профил.
- Процеси: отделна количка за всеки посетител, плащания чрез доставчик на плащания, имейли, обновяване на наличностите, планирани задачи.
- Входове за програми: Store API и REST API.
Който знае къде се намират тези части, по-късно ще открие една грешка много по-бързо. Затова сега ще ги разгледаме една по една.
Продукти: собствен тип публикация
WordPress познава типове публикации: страниците и публикациите са два от тях (курс за WordPress, урок 4.2). WooCommerce добавя типа публикация product. Следователно един продукт, също като страница, се намира в таблицата с публикации, а допълнителните му данни (цена, SKU, наличност, тегло) се съхраняват като метаданни. Категориите и етикетите на продуктите са отделни таксономии, независими от тези на Вашия блог.
Всеки продукт има тип продукт. В основата си това са прост, групиран, външен (връзка към друг магазин) и променлив. Към тях можете да включите отметките виртуален (няма нищо за изпращане) и за изтегляне (файл след плащане). Променливият продукт има вариации, например чайник в три цвята; всяка вариация е отделен артикул със собствена цена и наличност. Модул 3 разглежда това по-подробно.
Поръчки: собствени таблици (HPOS)
Преди WooCommerce съхраняваше и поръчките като публикации. При натоварените магазини това ставаше бавно, защото поръчките и публикациите в блога споделяха една и съща голяма таблица. Затова се появи HPOS (High-Performance Order Storage): поръчки в собствени таблици, като wc_orders, wc_order_addresses и wc_orders_meta (с префикса на таблиците на Вашия сайт пред тях). От WooCommerce 8.2 (октомври 2023) HPOS е включен при всяка нова инсталация. По-старият магазин остава на старото съхранение, докато сами не превключите в WooCommerce > Настройки > Разширени > Характеристики.
Защо трябва да знаете това? По три причини:
- Резервни копия: поръчките не са във Вашите файлове, а в базата данни. Резервно копие без база данни е безполезно за онлайн магазин (урок 6.2).
- Разширения: по-старо разширение, което все още чете поръчките като публикации, не работи добре с HPOS. WooCommerce предупреждава при разширението, ако то не е съвместимо.
- Възстановяване: ако възстановите резервно копие от вчера, поръчките от днес изчезват. При онлайн магазин това е много по-лошо, отколкото при блог (урок 6.2).
Количката: различна за всеки посетител
Обикновената страница е еднаква за всеки посетител. Количката не е. Щом посетител постави нещо в количката, WooCommerce стартира сесия: бисквитка (wp_woocommerce_session_, последвано от код) в браузъра и ред в таблица със сесии в базата данни. Така при следващата заявка магазинът знае коя количка принадлежи на този посетител.
Две последици, които ще срещнете отново по-късно:
- Количка, Поръчка и Моят профил никога не трябва да попадат в кеша на страниците, иначе един посетител ще вижда количката на друг. WooCommerce сам изпраща на тези страници заглавни редове, които забраняват кеширането (урок 6.4).
- Магазин, който стартира сесия за всеки посетител, дори без количка, прави кеша на страниците на целия сайт безполезен. Това е честа грешка на теми и разширения.
Страниците на магазина и блоковете
При инсталацията WooCommerce създава четири страници: Магазин, Количка, Поръчка и Моят профил. От версия 8.3 (ноември 2023) новите инсталации използват блокове за количката и поръчката; по-старите магазини често все още използват кратки кодове (shortcodes). И двата варианта работят. Разликата е важна за разширенията: разширение, което добавя нещо към поръчката, трябва да поддържа варианта, който използвате. Урок 2.2 показва как да проверите това.
Два входа за програми: Store API и REST API
WooCommerce има два програмируеми входа и разликата между тях е важна за сигурността:
| Store API | REST API | |
|---|---|---|
| Адрес | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| За кого | Самият магазин (блоковете в браузъра) и други витрини на магазина | Интеграции: счетоводство, наличности, приложения |
| Нужен ли е ключ? | Не, публичен: всеки може да чете продукти и цени | Да, API ключ с права за четене или запис |
| Какво съдържа | Продукти, цени, състояние на наличността, количката на текущия посетител | Също поръчки, клиенти, отчети |
Това, че Store API е публичен, не е теч на данни: това е точно онова, което всеки посетител вижда в магазина, само във вид, който програмите могат да четат. Опитайте с Вашия собствен магазин: отворете https://shop.example.com/wp-json/wc/store/v1/products в браузъра си (с Вашия собствен адрес) и ще видите продуктите си като JSON. REST API, напротив, трябва да е затворен без ключ. Урок 2.4 проверява и двата.
Зад кулисите: Action Scheduler и имейли
Голяма част от работата в един онлайн магазин не се извършва, докато клиентът чака, а по-късно. За това WooCommerce използва Action Scheduler: опашка от планирани задачи, като анулиране на неплатена поръчка след зададеното време, изпращане на webhooks или обновяване на отчети. Опашката виждате в WooCommerce > Състояние > Планирани действия. Тези задачи работят чрез WP-Cron, който се изпълнява само когато има посетители. При тих магазин работата може да остане неизпълнена; урок 7.3 показва как истински cron решава това.
Освен това WooCommerce изпраща транзакционни имейли: имейл до Вас при нова поръчка и имейли до клиента при получаване, изпращане, възстановяване на сума или нов профил. Ако те не пристигат, клиентът мисли, че нещо не е наред. Урок 6.1 урежда доставката на имейлите.
На практика: ето как изглежда в WooCommerce
В администрацията на WordPress на Theehuis Example след инсталацията се появяват три нови менюта: WooCommerce (поръчки, клиенти, настройки, състояние), Продукти и Анализ (в последните версии понякога под WooCommerce). В WooCommerce > Състояние ще намерите сървърната среда, таблиците в базата данни, планираните действия и дневниците. Този екран ще Ви трябва често. Стъпките са еднакви при всеки хостинг доставчик, защото са в самия WordPress.
Обобщение
- WooCommerce носи данни, страници, процеси и два програмируеми входа.
- Продуктите са собствен тип публикация; при новите магазини поръчките са в собствени таблици (HPOS, по подразбиране от 8.2).
- Количката работи със сесия за всеки посетител; затова Количка, Поръчка и Моят профил не трябва да попадат в кеша.
- Store API е публичен и показва това, което вижда всеки посетител; REST API трябва да е затворен без ключ.
- Планираните задачи се изпълняват чрез Action Scheduler и WP-Cron; имейлите са част от процеса на поръчка.
Тест (quiz)
Задача
Задача A1.2: Работи ли този сайт с WooCommerce? Въведете домейн, изберете да или не и запишете какво доказателство сте видели (например "generator" или "wc/store/v1"). Програмата зарежда началната страница, чете REST индекса (/wp-json/, само списъка с namespaces) и заявява /wp-json/wc/store/v1/products?per_page=1. Тя разпознава WooCommerce по meta generator с WooCommerce, namespace wc/store/v1 в REST индекса, работещ Store API, файлове от /wp-content/plugins/woocommerce/ или класа на body woocommerce. Зелена: изборът Ви е верен и доказателството Ви се среща в заглавните редове, HTML, REST индекса или отговора на Store API; тогава виждате също броя на продуктите и валутата. Оранжева: изборът Ви е верен, но не откриваме доказателството Ви. Червена: изборът Ви не е верен. Опитайте първо с Вашия собствен магазин, а след това с магазин, който познавате. Нищо не се поставя в количка и нищо не се изпраща.
Прочетете още
Когато стъпките са в контролен панел, те важат за WebOké; при други доставчици работи по подобен начин.
- Безплатен курс по WordPress 1.2: Под капака: уеб сървър, PHP и база от данни
- Безплатен курс по WordPress 1.3: Файлове, wp-config и базата данни
- Безплатен курс по WordPress 4.2: Страници, публикации, категории и тагове
- High-Performance Order Storage (developer.woocommerce.com, на английски): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, на английски): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (на английски): https://actionscheduler.org/
