Розробка кастомної сторінки оформлення замовлення WooCommerce
У вас воронка втрачає 30% замовлень на етапі оформлення? Надлишкові поля та повільне завантаження — часті причини. Згідно з дослідженням Baymard Institute, 60% покинутих кошиків пов'язані з незручним оформленням. Кастомний checkout на WooCommerce вирішує ці проблеми напряму: прибираємо зайве, оптимізуємо швидкість. За 5 років ми зробили понад 30 проєктів, і в кожному конверсія зросла на 20–40%.
Спрощення форми скорочує час заповнення на 30–50%, а релевантні upsell-блоки збільшують середній чек на 15–25%. Якщо ваш оборот $100,000 на місяць, зростання конверсії на 5% дає додатково $5,000 щомісячно. Кастомний checkout завантажується швидше: без зайвих скриптів і важких CSS-фреймворків. Усе це покращує Core Web Vitals (LCP, CLS) і, як наслідок, ранжування в пошуку.
Як кастомний checkout збільшує конверсію?
Спрощення форми скорочує час заповнення на 30–50%, а релевантні upsell-блоки збільшують середній чек на 15–25%. Кастомний checkout завантажується швидше: без зайвих скриптів і важких CSS-фреймворків. Усе це впливає на Core Web Vitals (LCP, CLS) і, як наслідок, на ранжування в пошуку. Економія від скорочення відмов може сягати 40% (за даними власних проєктів).
Які проблеми вирішує кастомний checkout?
Стандартний checkout створює кілька типових проблем:
- Надлишкові поля: запитує компанію, штат, другу адресу — не потрібно більшості магазинів.
- Відсутність upsell-блоків: не можна запропонувати товар перед оплатою.
- Жорсткий порядок полів: не можна згрупувати етапи (контакти → доставка → оплата) без перевизначення шаблону.
- Обмежені способи оплати: додати, наприклад, оплату за рахунком для юросіб без розробки не вийде.
Кастомний checkout вирішує кожну з цих проблем. Ми детально опрацьовуємо UX: прибираємо зайве, додаємо потрібне, оптимізуємо швидкість.
Як ми розробляємо кастомний checkout?
- Аналітика: вивчаємо поточний checkout, воронку, типові сценарії користувачів. Збираємо вимоги щодо полів, способів оплати та доставки.
- Проєктування: створюємо прототип нової форми — розташування блоків, логіка кроків (однокроковий або багатокроковий), інтеграція upsell.
- Розробка: реалізуємо кастомізацію через хуки та фільтри WooCommerce (мінімальне вторгнення в шаблони).
- Тестування: перевіряємо на різних браузерах і пристроях, тестуємо оплату реальними картками, сценарії з помилками.
- Деплой і підтримка: викочуємо на бойовий сервер, передаємо документацію та доступи, запускаємо моніторинг.
Що входить у роботу
- Аудит поточного checkout і воронки.
- Розробка прототипу (UI/UX).
- Кастомізація полів, додавання upsell-блоків, налаштування кроків.
- Інтеграція кастомних способів оплати (за потреби).
- Повне тестування на всіх пристроях.
- Документація з експлуатації та передача доступів.
- 6 місяців гарантії та підтримки.
Порівняння стандартного та кастомного checkout
| Параметр | Стандартний checkout | Кастомний checkout |
|---|---|---|
| Поля форми | Фіксовані, надлишкові | Тільки потрібні, адаптовані під ЦА |
| Upsell-блоки | Відсутні | Інтегровані, релевантні |
| Способи оплати | Тільки вбудовані | Будь-які: кастомні платіжні шлюзи, рахунки |
| Швидкість завантаження | Багато HTTP-запитів | Оптимізований, легкий |
| Конверсія | 2–5% середня | 4–10% після кастомізації |
Строки та вартість
Кастомізація полів checkout і додавання upsell-блоку займає від 2 днів. Багатокроковий checkout з кастомним способом оплати — від 5 днів. Вартість розраховується індивідуально після аудиту вашого магазину. Ми гарантуємо прозоре ціноутворення без прихованих платежів. Зв'яжіться з нами для аудиту вашого checkout. Замовте розробку кастомного checkout та отримайте консультацію.
Типові помилки при кастомізації checkout
- Видалення обов'язкових полів (наприклад, email) без альтернативи.
- Неоптимізований JS для багатокрокового checkout — зростання LCP.
- Відсутність fallback для кастомних полів при збої.
- Неправильна реалізація upsell: товар не додається в кошик при оформленні.
Ми враховуємо всі ці граблі — у наших проєктах таких проблем немає.
Підходи до кастомізації: хуки, шаблони, плагіни
| Підхід | Гнучкість | Швидкість | Складність підтримки |
|---|---|---|---|
| Хуки WooCommerce | Висока | Без втрат | Низька |
| Перевизначення шаблону | Середня | Незначне сповільнення | Середня |
| Плагіни-конструктори | Низька | +20–30% навантаження | Висока (залежність від плагіна) |
Хуки WooCommerce — найменш інвазивний спосіб. Переставити, додати, видалити блоки без перевизначення шаблону. Детальніше див. WooCommerce hooks documentation.
Хуки checkout: порядок блоків — розробка кастомної сторінки
Приклад кастомізації полів
// Переставити поля "Ім'я компанії" та "Телефон"
add_filter('woocommerce_checkout_fields', function (array $fields): array {
// Прибрати поля, які не потрібні
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_state']);
// Зробити телефон обов'язковим
$fields['billing']['billing_phone']['required'] = true;
// Додати поле "Коментар до доставки" в billing
$fields['billing']['delivery_comment'] = [
'type' => 'textarea',
'label' => 'Коментар до доставки',
'placeholder' => 'Код домофону, поверх, час доставки...',
'required' => false,
'class' => ['form-row-wide'],
'priority' => 120,
];
return $fields;
});
// Зберегти кастомне поле
add_action('woocommerce_checkout_update_order_meta', function (int $order_id): void {
if (!empty($_POST['delivery_comment'])) {
update_post_meta($order_id, '_delivery_comment', sanitize_textarea_field($_POST['delivery_comment']));
}
});
Додавання upsell-блоку
// Показати пропозицію апселла після форми доставки
add_action('woocommerce_checkout_after_customer_details', function (): void {
$upsell_product_id = 456; // ID товару для апселла
$product = wc_get_product($upsell_product_id);
if (!$product || !$product->is_purchasable()) return;
?>
<div class="checkout-upsell">
<label class="checkout-upsell__label">
<input type="checkbox" name="add_upsell_product" value="<?php echo $upsell_product_id; ?>" />
<img src="<?php echo $product->get_image_id() ? wp_get_attachment_image_url($product->get_image_id(), 'thumbnail') : ''; ?>" alt="" />
<span>Додати «<?php echo esc_html($product->get_name()); ?>» за <?php echo $product->get_price_html(); ?></span>
</label>
</div>
<?php
});
// Додати товар апселла в кошик при оформленні
add_action('woocommerce_checkout_create_order', function (WC_Order $order): void {
if (!empty($_POST['add_upsell_product'])) {
$product_id = (int) $_POST['add_upsell_product'];
$product = wc_get_product($product_id);
if ($product) {
WC()->cart->add_to_cart($product_id);
}
}
});
Багатокроковий checkout
Для реалізації wizard (крок 1: контакти, крок 2: доставка, крок 3: оплата) використовують плагін Multi-Step Checkout for WooCommerce або кастомну реалізацію через JavaScript:
// Перемикання кроків без перезавантаження
document.querySelectorAll('.checkout-step-next').forEach(btn => {
btn.addEventListener('click', (e) => {
const currentStep = btn.closest('.checkout-step');
const nextStepId = btn.dataset.next;
// Валідація поточного кроку
const fields = currentStep.querySelectorAll('[required]');
let valid = true;
fields.forEach(field => {
if (!field.value.trim()) {
field.classList.add('woocommerce-invalid');
valid = false;
}
});
if (!valid) return;
currentStep.classList.remove('active');
document.getElementById(nextStepId)?.classList.add('active');
updateProgressBar(nextStepId);
});
});
Кастомний спосіб оплати
class WC_Custom_Payment_Gateway extends WC_Payment_Gateway {
public function __construct() {
$this->id = 'custom_gateway';
$this->has_fields = true;
$this->method_title = 'Оплата за рахунком';
$this->method_description = 'Виставлення рахунку для юридичних осіб';
$this->init_form_fields();
$this->init_settings();
$this->title = $this->get_option('title');
add_action('woocommerce_update_options_payment_gateways_' . $this->id, [$this, 'process_admin_options']);
}
public function payment_fields(): void {
echo '<p>Рахунок буде виставлено на email протягом 1 робочого дня.</p>';
woocommerce_form_field('invoice_inn', [
'type' => 'text',
'label' => 'ІПН організації',
'required' => true,
]);
}
public function process_payment(int $order_id): array {
$order = wc_get_order($order_id);
$order->update_status('on-hold', 'Очікування оплати за рахунком');
WC()->cart->empty_cart();
return [
'result' => 'success',
'redirect' => $this->get_return_url($order),
];
}
}
add_filter('woocommerce_payment_gateways', function (array $gateways): array {
$gateways[] = WC_Custom_Payment_Gateway::class;
return $gateways;
});
Зв'яжіться з нами, щоб обговорити ваш проєкт — ми підготуємо оптимальне рішення за 1 день. Замовте кастомний checkout і збільште конверсію.







