Я создал несколько настраиваемых полей на странице оформления заказа woocommerce. Мой код правильный, и поля отображаются правильно. Я сохранил данные поля и отобразил их в панели администратора. Мой код правильный, и поля отображаются правильно.
Я написал код для включения этих данных в электронное письмо администратора при каждом заказе нового продукта. Мой код НЕ правильный, и информация не отображается в электронном письме.
Все остальные ответы stackoverflow по этой теме полагаются на устаревший фильтр woocommerce_email_order_meta_keys
Нет stackoverflow, который отвечает фильтром woocommerce 3.8.0 woocommerce_email_order_meta_fields
.
Я использую woocommerce 3.8.0 и wordpress 5.3. Я сохраняю эти файлы в wp-content / themes / child-theme / functions.php
WTF не так с моим кодом? Я проверял это снова и снова и не могу понять, что не так. Может кто-нибудь сказать мне, что я делаю не так? Я рубиновый разработчик, пытающийся научиться php и wordpress.
add_filter('woocommerce_email_order_meta_fields','custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['custom_field_1'] = array(
'label' => __( 'custom_field_1' ),
'value' => get_post_meta( $order->id, 'custom_field_1', true ),
);
$fields['custom_field_2'] = array(
'label' => __( 'custom_field_2' ),
'value' => get_post_meta( $order->id, 'custom_field_2', true ),
);
$fields['custom_field_3'] = array(
'label' => __( 'custom_field_3' ),
'value' => get_post_meta( $order->id, 'custom_field_3', true ),
);
$fields['custom_field_4'] = array(
'label' => __( 'custom_field_4' ),
'value' => get_post_meta( $order->id, 'custom_field_4', true ),
);
return $fields;
}
Мои настраиваемые поля формы на странице оформления заказа woocommerce находятся здесь
add_filter( 'woocommerce_checkout_fields', 'isca_custom_checkout_fields' );`
function isca_custom_checkout_fields($fields){
$fields['isca_extra_fields'] = array(
'custom_field_1' => array(
'class' => array(
'form-row-first'
),
'type' => 'text',
'required' => true,
'placeholder' => __( 'Name' )
),
'custom_field_2' => array(
'class' => array(
'form-row-last'
),
'type' => 'text',
'required' => true,
'placeholder' => __( 'Nickname' )
),
'custom_field_3' => array(
'class' => array(
'form-row-first'
),
'type' => 'text',
'required' => true,
'placeholder' => __( 'Favorite Exercise' )
),
'custom_field_4' => array(
'class' => array(
'form-row-last'
),
'type' => 'text',
'required' => false,
'placeholder' => __( 'Favorite Stretch' )
),
);
return $fields;
}
Затем я добавляю его на страницу оформления заказа woocomerce с помощью этого кода
add_action( 'woocommerce_after_checkout_billing_form' ,'isca_extra_checkout_fields' );
function isca_extra_checkout_fields(){
$checkout = WC()->checkout(); ?>
<br/>
<div class="extra-fields">
<h3><?php _e( 'Fitness Information' ); ?></h3>
<?php
foreach ( $checkout->checkout_fields['isca_extra_fields'] as $key => $field ) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
</div>
<?php }