Меню
Москва, ул. Енисейская, д.46 к.2
info.sweetmary@yandex.ru
9:00-22:00 ежедневно

Каталог кондитерских изделий

Каталог

Фильтр

Отображение 5329–5364 из 9289

Цена

 

Цвет +

Декор +

Форма +

Покрытие +

Ярусность +

0
    Корзина
    Корзина пустаВернуться в каталог
    /** * Exact delivery time for flat_rate:5 */ /* 1. Поле выбора времени (исправлено: добавлены проверки и корректный ключ мета-поля) */ add_action( 'woocommerce_after_order_notes', 'add_exact_delivery_time_field' ); function add_exact_delivery_time_field( $checkout ) { // Получаем выбранные методы доставки из сессии $chosen_methods = WC()->session->get( 'chosen_shipping_methods', array() ); $show_field = in_array( 'flat_rate:5', $chosen_methods ); // Добавляем стили для плавного отображения echo ''; echo '
    '; woocommerce_form_field( 'exact_delivery_time', array( 'type' => 'select', 'class' => array('form-row-wide'), 'label' => 'Выберите точное время доставки', 'required' => true, 'options' => array( '' => 'Выберите интервал', '09:00–10:00' => '09:00–10:00', '10:00–11:00' => '10:00–11:00', '11:00–12:00' => '11:00–12:00', '12:00–13:00' => '12:00–13:00', '13:00–14:00' => '13:00–14:00', '14:00–15:00' => '14:00–15:00', '15:00–16:00' => '15:00–16:00', '16:00–17:00' => '16:00–17:00', ), ), WC()->checkout->get_value( 'exact_delivery_time' ) ); echo '
    '; } /* 2. Показываем поле только при выборе flat_rate:5 (исправлено: AJAX-события и корректная проверка) */ add_action( 'wp_footer', 'toggle_exact_delivery_time_field' ); function toggle_exact_delivery_time_field() { if ( ! is_checkout() ) return; ?> session->get( 'chosen_shipping_methods', array() ); if ( in_array( 'flat_rate:5', $chosen_methods ) && empty( $_POST['exact_delivery_time'] ) ) { wc_add_notice( 'Пожалуйста, выберите точное время доставки для курьерской доставки.', 'error' ); } } /* 4. Сохранение данных (исправлено: безопасное сохранение) */ add_action( 'woocommerce_checkout_update_order_meta', 'save_exact_delivery_time' ); function save_exact_delivery_time( $order_id ) { if ( isset( $_POST['exact_delivery_time'] ) && ! empty( $_POST['exact_delivery_time'] ) ) { update_post_meta( $order_id, '_exact_delivery_time', sanitize_text_field( $_POST['exact_delivery_time'] ) ); } } /* 5. Отображение в админке (исправлено: корректный ключ мета-поля) */ add_action( 'woocommerce_admin_order_data_after_shipping_address', 'show_exact_delivery_time_admin' ); function show_exact_delivery_time_admin( $order ) { $time = get_post_meta( $order->get_id(), '_exact_delivery_time', true ); if ( $time ) { echo '

    Точное время доставки: ' . esc_html( $time ) . '

    '; } } /* 6. Отображение в письмах и на странице заказа (дополнительно) */ add_filter( 'woocommerce_email_order_meta_fields', 'add_delivery_time_to_emails', 10, 3 ); function add_delivery_time_to_emails( $fields, $sent_to_admin, $order ) { $time = get_post_meta( $order->get_id(), '_exact_delivery_time', true ); if ( $time ) { $fields['delivery_time'] = array( 'label' => 'Время доставки', 'value' => $time, ); } return $fields; } add_action( 'woocommerce_order_details_after_order_table', 'display_delivery_time_on_thankyou', 10, 1 ); function display_delivery_time_on_thankyou( $order ) { $time = get_post_meta( $order->get_id(), '_exact_delivery_time', true ); if ( $time ) { echo '

    Детали доставки

    '; echo '

    Выбранное время: ' . esc_html( $time ) . '

    '; } }