Добавить поле в электронные письма и заказы Woocommerce

#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. Это работает как сон! Я начал немного раздражаться на себя за то, что не разобрался в этом раньше.