Отображать значения настраиваемых полей в заказе WooCommerce и уведомлении по электронной почте - PullRequest
4 голосов
/ 12 марта 2019

На основе " Выбор даты и времени после выбора метода ответа WooCommerce ", который отображает настраиваемые поля получения и даты доставки, следующий код отображает данные доставки этих полей при редактировании заказа стр.

Вот мой код:

// View fields in Edit Order Page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_fields_order_meta', 10, 1 );
function my_custom_fields_order_meta($order){   

    $delivery_option = $order->get_meta('_delivery_option');

    if( $delivery_option == 'date' ) {
    $delivery_datetime = $order->get_meta('_delivery_datetime');

    echo '<p><strong>'.__('Delivery').':</strong> ' . get_post_meta( $order->id, '_delivery_option', true ) . '</p>';
    echo '<p><strong>'.__('Delivery Date').':</strong> ' . get_post_meta( $order->id, '_delivery_datetime', true ) . '</p>';
    }
}

К сожалению, правильно отображается только дата доставки, которую выбирает клиент, а параметры переключателя «Как можно скорее» не отображаются.

Видимо, я что-то не так делаю.

Я также хотел бы отобразить значения этих полей на странице Спасибо и в электронном письме.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 13 марта 2019

Чтобы отобразить значения настраиваемых полей на страницах редактирования внутреннего заказа (если они сохранены в базе данных для заказа) , используйте следующее:

// View fields in Edit Order Page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_fields_value_admin_order', 10, 1 );
function display_custom_fields_value_admin_order( $order ){
    // Display the delivery option
    if( $delivery_option =  $order->get_meta('_delivery_option') )
        echo '<p><strong>'.__('Delivery type').':</strong> ' . $delivery_option . '</p>';

    // Display the delivery date
    if( $delivery_datetime = $order->get_meta('_delivery_datetime') )
        echo '<p><strong>'.__('Delivery Date').':</strong> ' . $delivery_datetime . '</p>';
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here


Лучший более короткий и понятный способ отображения значений настраиваемых полей повсюду на страницах внешнего интерфейса и в уведомлениях по электронной почте - это отображение их в таблице итогов заказа, так же, как и используемые способы оплаты:

// Display the chosen delivery information
add_filter( 'woocommerce_get_order_item_totals', 'chosen_delivery_item_order_totals', 10, 3 );
function chosen_delivery_item_order_totals( $total_rows, $order, $tax_display ) {;
    $new_total_rows = [];

    // Loop through Order total lines
    foreach($total_rows as $key => $total ){
        // Get the chosen delivery values
        $delivery_option  = $order->get_meta('_delivery_option');
        $delivery_datetime = $order->get_meta('_delivery_datetime');

        // Display delivery information before payment method
        if( ! empty($delivery_option) && 'payment_method' === $key ){
            $label  = empty($delivery_datetime) ? __('Delivery') : __('Delivery Date');
            $value  = empty($delivery_datetime) ? __('AZAP', $domain) : $delivery_datetime;

            // Display 'Delivery method' line
            $new_total_rows['chosen_delivery'] = array( 'label' => $label,'value' => $value );
        }
        $new_total_rows[$key] = $total;
    }

    return $new_total_rows;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here


Тема по теме: Выбор даты и времени после выбора способа доставки WooCommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...