Оформление цифрового заказа
Оформление связывает корзину с заказом: покупатель указывает контакт, выбирает способ оплаты и подтверждает условия. Для цифрового материала доставка не нужна, но это не означает автоматическое исчезновение всех billing fields. В «Полке» рассмотрим Checkout Block и настроим учебный путь без реальных адресов, карт и банковских реквизитов.
До урока Cart содержит GRID-PDF и FORM-ZIP с subtotal 20.00. После урока будет описан контракт заполнения и отказов формы. Payment completion ещё не добавлен: отдельный сценарий песочницы появится в следующем шаге. Никакой checkout не выполнялся при подготовке курса, поэтому окна и ошибки являются ожидаемыми.
Checkout page и необходимые блоки
Проверьте назначение Checkout page в WooCommerce Settings → Advanced. Откройте её в Editor/List View и найдите native Checkout Block. Новые stores используют Cart/Checkout blocks как обычную основу; история classic shortcodes не должна заставлять вас менять уже созданный современный путь. Общая документация находится в Customizing Cart and Checkout.
Контейнер объединяет contact information, address, shipping при необходимости, payment options и order summary. Часть внутренних blocks locked, чтобы сохранить согласованное действие. Настройки видимых полей ищите в sidebar выбранного block и текущих Woo settings. Не переносите classic PHP field hooks вслепую: Blocks используют собственные documented interfaces.
Для нашего virtual assortment shipping section не требуется. Если она появляется, проверьте flags всех items, включая variation HTML-EXT. Один неверно отмеченный товар может заставить checkout запросить доставку для всей корзины. Удаление блока shipping из разметки не исправит ошибку Product model; сначала исправляется причина.
Billing information может оставаться даже без доставки, поскольку связано с оплатой и другими правилами магазина. В лаборатории используем только вымышленные значения, требуемые локальной формой. Мы не объявляем определённый список полей универсальным для любого цифрового магазина: provider, налоги и договорные требования способны изменить его.
Контакт нужен для пути получения
Введите student@example.test и имя «Учебный Покупатель». Домен .test выбран для искусственных данных, а Polka Lab Guard должен быть активен до первого заказа. Guard перехватывает wp_mail, не отправляя письмо. Эта мера позволяет изучать notifications без сообщения настоящему человеку.
Email связывает заказ с уведомлением и может участвовать в проверке download link. Нельзя считать это поле неважным только потому, что в лаборатории нет реальной доставки почты. Позже изменение billing email способно повлиять на доступ к файлу. Поэтому сохраняем один вымышленный контакт через всю последовательность и понимаем назначение данных.
Проверка синтаксиса email не доказывает владение адресом. Значение может выглядеть корректно, но принадлежать другому человеку. В реальном проекте account/security flow рассматривает дополнительные свойства. Курс ограничивается локальным учебным заполнением и не обещает подтверждение личности по одной строке формы.
В order summary должны сохраниться те же товары и 20.00. Если на checkout сумма отличается, объясните источник: coupon, tax, shipping или изменение цены. В нашей модели этих новых факторов пока нет. Не принимайте неожиданный total за «округление системы» без сравнения line items и настроек.
Условия видны до подтверждения
Создайте локальные учебные страницы с описанием состава покупки и приватности лаборатории. Укажите, что магазин вымышленный, деньги не принимаются, материалы служат обучению и письма перехватываются. Назначьте страницы в соответствующих Woo settings, если используете блок соглашения. Это не готовый юридический текст для реального бизнеса.
На checkout ссылка должна открывать понятные условия, а confirmation — относиться к ним. Не используйте пустую страницу «Правила», которую никто не может прочитать до действия. Даже учебный интерфейс должен связывать checkbox с конкретной доступной информацией. Наличие названия страницы само по себе не создаёт содержательных условий.
Отдельное согласие на маркетинговую рассылку не добавляем: рассылки в лаборатории нет. Если в реальном проекте такое действие требуется, оно должно иметь отдельный смысл и не маскироваться под необходимое оформление заказа. Для курса важно сохранять минимальную цель каждого поля, чтобы читатель понимал, зачем его просят заполнить.
Ошибки помогают проверить контракт
Файл specs/checkout.md задаёт учебные исходные условия, а не автоматически меняет UI. Сверьте его с выбранной формой после собственной установки.
# Контракт оформления
Только учебные данные: student@example.test, имя Учебный Покупатель.
Virtual убирает доставку, но не автоматически все billing fields.
Цена GRID-PDF12 + FORM-ZIP8 =20.00USD; с LAB10 ожидается18.00USD.
Проверяются пустой email, недопустимый email, непринятое соглашение и пустая корзина.
Правила и приватность — учебные страницы без юридического обещания.
Нет реальных карт, банковских реквизитов и адресов.
Список полей меняется средствами Checkout Block текущей версии.
Не переносить classic PHP field hooks в Blocks без документированной поддержки.
Попробуйте оставить email пустым, ввести недопустимую строку и не подтвердить обязательные условия. Ожидается понятный отказ, связанный с конкретным field. Эти действия предназначены для будущей локальной проверки и не выполнялись нами. Сообщение должно не только запретить отправку, но и помочь исправить значение без потери остальных заполненных данных.
Не делайте error сообщением одного цвета без текста. Пользователи различают интерфейс по-разному, а browser screenshot может скрыть реальные keyboard transitions. Проверьте, что focus помогает найти ошибку, labels соответствуют input и кнопка имеет понятное назначение. Такой опыт проверяет связность формы, а не только её статичный appearance.
Пустая cart должна направить человека обратно к выбору товаров или показать соответствующее empty состояние. Нельзя создавать завершённый заказ без items ради успешного нажатия. При block checkout также возможны технические draft records до окончательной отправки. В reports позднее потребуется отличать их от оплаченных orders; число records не является числом продаж.
Если payment method не отображается, причиной может быть disabled gateway либо отсутствие Blocks support у extension. Не добавляйте старый shortcode только чтобы увидеть кнопку, не выяснив совместимость. Checkout Block описывает состав и доступные настройки выбранного пути.
Кнопка завершения оформления соединяет несколько решений: какие позиции выбраны, куда относится заказ и каким методом он будет обработан. Перед нажатием сверяйте названия и вариант ещё раз: Extended должен оставаться Extended после перехода из корзины. Исправление обязательного поля не должно незаметно менять комплект или добавлять товар. В учебной паре GRID-PDF и FORM-ZIP сумма до купона остаётся 20.00. Это ожидаемое состояние связывает работу формы с уже изученными данными и позволяет обнаружить неожиданное изменение состава отдельно от ошибки поля.
Результат этого шага — оформление сохраняет состав корзины, объясняет условия и собирает только учебные сведения, нужные текущему сценарию. Оплата ещё не подтверждена, файлы пока не выданы. Следующий урок добавит локальное ожидание и опциональный Dummy result, после чего можно будет связать действие формы с осмысленным состоянием заказа.