WooCommerce пусна вградена функция за отказ от поръчка: как работи Order Withdrawal във версия 11.1

WooCommerce пусна вградена функция за отказ от поръчка и тя вече е част от ядрото, не от плъгин.

Функцията се казва Order Withdrawal и излезе с WooCommerce 11.1. До този момент всеки магазин, който искаше форма за отказ, разчиташе на външно решение като EU Order Withdrawal Button от vendidero или Germanized, а в официалното репозитори на WooCommerce стоеше отворено предложение за вградена функция. С 11.1 предложението е реализирано и формата идва с обновяването на плъгина, без нова инсталация и без лиценз.

Директива 2011/83/ЕС дава на потребителите 14-дневно право на отказ, а новият член 11а от 19 юни 2026 г. задължава всеки магазин, продаващ на потребители в ЕС, да предлага електронна функция за отказ. Правната рамка, сроковете и санкциите са описани подробно в статията за новите изисквания за отказ от договор, а тук фокусът е какво точно е пуснал WooCommerce, как се включва и къде трябва да добавите нещо от себе си.

По подразбиране Order Withdrawal е изключена и самата документация уточнява, че функцията може да помогне за съответствие, но не го гарантира.

Как се активира Order Withdrawal

Отидете в WooCommerce > Settings > Advanced > Features и потърсете Order withdrawal в основния списък. Не е в експерименталните функции, така че няма нужда от feature flag или дефиниция в wp-config.php. Включете опцията и запазете. Описанието в интерфейса гласи, че се активира публична функция за заявки за отказ от клиенти.

След активиране в WooCommerce > Settings > Advanced > Page setup се появява ново поле Order withdrawal в групата Account endpoints. Стойността по подразбиране е withdraw-order, което прави формата достъпна на адрес /my-account/withdraw-order. Ако предпочитате български slug, например otkaz-ot-poruchka, го въведете там и формата ще заработи на /my-account/otkaz-ot-poruchka без да пресъхранявате permalinks.

Частта /my-account/ идва от страницата, зададена като My account page, и ако сте я преименували, endpoint-ът следва новия адрес.

Полето в Page setup съществува само докато функцията е включена. Изключите ли я, полето изчезва заедно с URL правилата.

Какво вижда клиентът

Формата иска име и фамилия, имейл адрес, въведен два пъти за потвърждение, и номер на поръчка. Клиентът избира дали се отказва от цялата поръчка или само от определени артикули, като при частичен отказ полето Additional details става задължително и в него описва кои позиции връща. Няма поле за причина и няма изискване за регистрация, което съответства на забраната за допълнителни задължителни полета в член 11а.

woocommerce пусна вградена функция за отказ от поръчка: как работи order withdrawal във версия 11.1 - 1

Преди изпращане клиентът вижда екран за преглед на въведеното. Едва след потвърждение заявката се изпраща, така че двустъпковият процес от директивата е налице. Следва екран с потвърждение и имейл с копие на подадените данни. Проверете дали в този имейл присъстват датата и часът на получаване, защото член 11а ги изисква изрично на траен носител, а от текста на документацията не става ясно дали са включени.

Ако липсват, добавянето им е задължителна корекция, а не козметика.

Какво получава търговецът

Известието за нова заявка пристига на Administration Email Address от Settings > General в WordPress, не на имейла от настройките на WooCommerce. Reply-to адресът е имейлът на клиента, така че отговорът директно от пощата стига до него.

Тези имейли не се появяват в WooCommerce > Settings > Emails. Нямат поле за получател, нямат превключвател за включване и нямат шаблон, който да редактирате оттам. Ако заявките трябва да отиват към отделна пощенска кутия, единственият вграден път е смяната на администраторския имейл. Текстовете идват от езиковия пакет на WooCommerce, така че при непълен български превод ги коригирате през Loco Translate или gettext филтър.

На началния екран на WooCommerce се появява и inbox нотификация. Когато номерът на поръчката и billing имейлът съвпадат с реална поръчка, заявката се свързва автоматично с нея и в поръчката се добавя order note. Точно тази бележка е вашият вътрешен запис с дата и час.

woocommerce пусна вградена функция за отказ от поръчка: как работи order withdrawal във версия 11.1 - 2

Когато няма съвпадение

Грешка в номера или поръчка, направена с друг имейл, не спират заявката. Тя се приема, клиентът получава същото потвърждение, а на вас пристига имейл с текст, че WooCommerce не е успял да я свърже с поръчка. В този случай няма order note и няма inbox нотификация, така че имейлът е единствената следа. Търсите поръчката ръчно по име, имейл и въведения номер.

Спам филтърът на входящата поща тук е реален риск, защото един пропуснат имейл означава необработен отказ, който по закон пак може да се счита за валиден.

14-те дни се броят от грешната дата

WooCommerce отчита 14-дневния прозорец от датата на поръчката, не от доставката. Правото на отказ в ЕС тече от получаването на стоката, но системата не знае надеждно кога е доставено, затова използва датата на поръчка като заместител. Посоката е безопасна: предупреждението може да се появи само по-късно от истинския срок, никога по-рано.

При поръчка, по-стара от 14 дни, в имейла и в inbox нотификацията се добавя ред, че поръчката е извън срока. Това е чисто информативно и заявката се обработва нормално.

Същото важи за статуса на поръчката. Заявка може да се свърже с поръчка в какъвто и да е статус, включително cancelled, refunded или failed. Преди да действате, проверете текущия статус, защото формата не го валидира. Двойна заявка за една поръчка се отхвърля още във формата, а клиентът вижда съобщение да се свърже с вас, без вие да получавате известие за втория опит.

Има и ограничение от една заявка на 30 секунди по имейл и по IP адрес.

Какво не прави функцията

Подаването на заявка не сменя статуса на поръчката, не я анулира и не създава refund. Решението какво следва, дали възстановяване, искане за връщане на стоката или уточнения, е изцяло ръчно.

Функцията не разграничава артикулите по член 16 от директивата. Гравирана чаша и стандартна тениска в една поръчка се третират еднакво, макар първата да е изключена от правото на отказ. Няма и автоматично поставен линк във footer-а. WooCommerce създава endpoint, но видимият линк с текст Отказ от договора тук, достъпен от всяка страница, го добавяте вие през менюто или с код. Ако магазинът е изграден преди тези изисквания, това е моментът да го включите в общата проверка на общите условия на сайта.

add_filter( 'wp_nav_menu_items', function ( $items, $args ) {
    if ( 'footer' !== $args->theme_location ) {
        return $items;
    }
    $url = wc_get_endpoint_url( 'withdraw-order', '', wc_get_page_permalink( 'myaccount' ) );
    return $items . '<li class="menu-item"><a href="' . esc_url( $url ) . '">Отказ от договора тук</a></li>';
}, 10, 2 );

Сменете footer с реалния theme_location на вашата тема, а withdraw-order с избрания slug, ако сте го променили в Page setup. Snippet-ът стои в child theme functions.php или в code snippets плъгин, не директно в темата.

Плъгин или вградена функция

Сега, когато функцията е в ядрото, въпросът е дали да останете на плъгина, който вече ползвате. Вграденият вариант отпада като зависимост и получава ъпдейти заедно с WooCommerce. Плъгините засега дават повече контрол върху шаблона на имейла и текстовете. Ако вече имате работещ плъгин, оставете само едно от двете, иначе клиентът ще намери две различни форми за едно и също действие.

При нов онлайн магазин на WooCommerce вграденият Order Withdrawal е разумният старт, а плъгин добавяте едва когато липсва конкретна функция.

Магазини на други платформи получават формата наготово след преместване, което е още един аргумент при миграция на онлайн магазин към WooCommerce. Тест преди пускане: направете гост поръчка от incognito прозорец, подайте отказ през формата, проверете имейла на клиента и order note-а в поръчката. Едва тогава публикувайте линка във footer-а.

Обновете и общите условия, като посочите електронната функция като начин за упражняване на отказа, наред с класическия формуляр. Останалите теми около магазина, от checkout до миграции, са събрани в категорията WooCommerce.

Често задавани въпроси

  1. Как се включва Order Withdrawal в WooCommerce?

    От WooCommerce > Settings > Advanced > Features, опцията Order withdrawal. Функцията е изключена по подразбиране и не е експериментална.

  2. Трябва ли клиентът да е логнат, за да подаде отказ?

    Не. Формата на /my-account/withdraw-order е публична и иска само име, имейл и номер на поръчка, така че работи и за гост поръчки.

  3. Анулира ли се поръчката автоматично след заявка за отказ?

    Не. Заявката добавя order note и изпраща имейл, но статусът, анулирането и refund-ът остават ръчно решение на търговеца.

  4. Къде се редактира имейлът за отказ от поръчка?

    Никъде в WooCommerce > Settings > Emails. Известието отива на администраторския имейл от Settings > General, а текстовете се сменят само през превод или gettext филтър.

  5. Какво става, ако номерът на поръчката е грешен?

    Заявката пак се приема и клиентът получава потвърждение, но търговецът получава само имейл без order note и трябва да намери поръчката ръчно.

Сподели: