Как настроить виджет Почты России, чтоб можно было выбрать отеделение или Почтамат на карте?

Ссылка скопирована
1 ответ

Привет!
Кто уже настраивал себе на сайт виджет Почты России? Поделитесь нормальной инструкцией, пожалуйста. Почта РФ не планирует создавать плагин для woocommerce, но мы проанализировали поведение пользователей, из-за всех этих заполнений полей бесконечных и ошибок в городах и адресах многие сливаются, хотя хотят сделать заказ.
Проще было бы, чтоб покупатель мог нажать на кнопку выбрать отделение и открылась карта, где выбирает отделение почты и все. Но что-то не получается так настроить.

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ирина WP Ответ

Для WooCommerce лучше решать выбор отделения Почты России не простым HTML-виджетом, а интеграцией с доставкой на checkout: покупатель выбирает отделение/почтомат на карте, а выбранный адрес, индекс и ID отделения сохраняются в заказ. Иначе карта будет «сама по себе», а менеджеру всё равно придётся вручную уточнять доставку.

Практический путь такой:

  1. Получить доступы/API от Почты России или сервиса-агрегатора доставки.
  2. Подключить JS-виджет карты на странице оформления заказа.
  3. Добавить кнопку «Выбрать отделение» в нужный способ доставки.
  4. После выбора записать данные отделения в hidden-поля checkout.
  5. При создании заказа сохранить эти данные в meta заказа.

В WooCommerce hidden-поля можно добавить через хук:

add_action( 'woocommerce_after_order_notes', function () {
    echo '<input type="hidden" name="post_office_id" id="post_office_id">';
    echo '<input type="hidden" name="post_office_address" id="post_office_address">';
} );

add_action( 'woocommerce_after_order_notes', function () { echo '<input type="hidden" name="post_office_id" id="post_office_id">'; echo '<input type="hidden" name="post_office_address" id="post_office_address">'; } );

Сохранение в заказ:

add_action( 'woocommerce_checkout_create_order', function ( $order ) {
    if ( isset( $_POST['post_office_id'] ) ) {
        $order->update_meta_data(
            '_post_office_id',
            sanitize_text_field( wp_unslash( $_POST['post_office_id'] ) )
        );
    }
 
    if ( isset( $_POST['post_office_address'] ) ) {
        $order->update_meta_data(
            '_post_office_address',
            sanitize_text_field( wp_unslash( $_POST['post_office_address'] ) )
        );
    }
} );

add_action( 'woocommerce_checkout_create_order', function ( $order ) { if ( isset( $_POST['post_office_id'] ) ) { $order->update_meta_data( '_post_office_id', sanitize_text_field( wp_unslash( $_POST['post_office_id'] ) ) ); } if ( isset( $_POST['post_office_address'] ) ) { $order->update_meta_data( '_post_office_address', sanitize_text_field( wp_unslash( $_POST['post_office_address'] ) ) ); } } );

На фронте JS-виджет после выбора отделения должен заполнить эти поля:

function onPostOfficeSelected(point) {
    document.querySelector('#post_office_id').value = point.id;
    document.querySelector('#post_office_address').value = point.address;
}

function onPostOfficeSelected(point) { document.querySelector('#post_office_id').value = point.id; document.querySelector('#post_office_address').value = point.address; }

Если нет готового официального WooCommerce-плагина, проверьте агрегаторы доставки: СДЭК/Boxberry/Почта через единый модуль, eDost, Яндекс Доставка, ApiShip и аналоги. Часто быстрее и надёжнее подключить готовый модуль, чем писать карту, тарифы, валидацию индекса и передачу заказа в Почту России вручную.

Главное — не ограничиваться визуальным выбором на карте. Нужно, чтобы выбранное отделение сохранялось в заказе и попадало в письма/админку, иначе конверсия улучшится слабо, а ручной работы станет больше.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно