#email #woocommerce #customization #custom-fields
Вопрос:
Я добавил средство выбора даты в Woocommerce, чтобы клиенты могли выбирать, когда они получают свои заказы в магазине. Собрав воедино кусочки кода, я даже сумел отобразить данные в задней части, чтобы их можно было увидеть на экране заказа для администраторов.
Однако я изо всех сил пытаюсь получить данные для отображения в электронных письмах Woocommerce или во внешних заказах клиента. Есть какие-нибудь предложения?
Код, который у меня есть для сохранения и отображения на серверной части, выглядит следующим образом:
function showe_save_date_order( $order_id ) { global $woocommerce; if ( $_POST['collection_date'] ) update_post_meta( $order_id, '_collection_date', esc_attr( $_POST['collection_date'] ) ); } add_action( 'woocommerce_admin_order_data_after_billing_address', 'showe_collection_weight_display_admin_order_meta' ); function showe_collection_weight_display_admin_order_meta( $order ) { echo 'lt;pgt;lt;stronggt;Collection Date:lt;/stronggt; ' . get_post_meta( $order-gt;get_id(), '_collection_date', true ) . 'lt;/pgt;'; }'''
Ответ №1:
Вы можете использовать woocommerce_email_order_meta
крючок действия. попробуйте выполнить приведенный ниже код.
add_action( 'woocommerce_email_order_meta', 'add_custom_order_meta_to_email', 10, 3 ); function add_custom_order_meta_to_email( $order, $sent_to_admin, $plain_text ){ $collection_date = get_post_meta( $order-gt;get_order_number(), '_collection_date', true ); // Don't display anything if it is empty if( empty( $collection_date ) ) return; if ( $plain_text === false ) { echo 'lt;ulgt; lt;ligt;lt;stronggt;Collection Date: lt;/stronggt;' . $collection_date . 'lt;/ligt; lt;/ulgt;'; } else { echo "Collection Date: ". $collection_date; } }
Комментарии:
1. Это работает как сон! Я начал немного раздражаться на себя за то, что не разобрался в этом раньше.