Woocommerce - добавьте настраиваемое поле оформления заказа в адрес электронной почты новой учетной записи клиента - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь отобразить настраиваемое поле "billing_gender", которое я добавил в форму оформления заказа, в электронное письмо с уведомлением о новой учетной записи клиента.

Поле правильно сохранено в базе данных, но в пустом отображаетсяэлектронная почта для новой учетной записи.

Другие пользовательские мета-поля (телефон, ...) работают, но не мое настраиваемое поле проверки.

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

Вот мой код:

functions.php

add_filter( 'woocommerce_checkout_fields' , 'divi_override_checkout_fields' );

function divi_override_checkout_fields( $fields ) {

unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_country']);

// Custom gender field
$fields['billing']['billing_gender'] = array(
    'type'     => 'select',
    'class'    => array( 'form-row-wide' ),
    'label'    => __( 'Title', 'divi-ultimate'),
    'required' => true,
    'priority' => 3,
    'options'  => array(
        ''           => __( 'Select title', 'divi-ultimate' ),
        'male'       => __( 'Mr', 'divi-ultimate' ),
        'female'     => __( 'Mrs', 'divi-ultimate' )
    ),
);

return $fields;
}

// Gender select default value

add_filter( 'default_checkout_billing_gender', 'checkout_billing_gender',10,2 );

 function checkout_billing_gender($value) {
if ( is_user_logged_in()){
    $current_user = wp_get_current_user();
    $value = get_user_meta( $current_user->ID, 'billing_gender', true );
}
return $value;
}


//* Update the order meta with fields values

 add_action('woocommerce_checkout_update_order_meta', 'divi_select_checkout_field_update_order_meta', 10, 2);

 function divi_select_checkout_field_update_order_meta( $order_id ) {

if ($_POST['delivery-shop']) update_post_meta( $order_id, 'delivery-shop', esc_attr($_POST['delivery-shop']));
if ($_POST['billing_gender']) update_post_meta( $order_id, 'billing_gender', esc_attr($_POST['billing_gender']));

 }

 //* Update the user meta with gender value

add_action( 'woocommerce_checkout_update_user_meta', 'divi_save_extra_user_fields', 10, 2 );

 function divi_save_extra_user_fields($customer_id) {
 if (isset($_POST['billing_gender'])) {
     update_user_meta( $customer_id, 'billing_gender',  esc_attr($_POST['billing_gender']) );
 }
 }

Что я делаю не так?

Приветствия.

1 Ответ

0 голосов
/ 11 декабря 2018

Вот файл customer-new-account.php:

$user = get_user_by('login', $user_login );

if (!empty($user)) {
$gender = get_user_meta($user->ID, 'billing_gender', true);
$lastname = $user->last_name;
$user_email = $user->user_email;
}

if( !empty($gender) && !empty($lastname) ) {
printf( esc_html__( 'Dear ' . $gender . ' %s,', 'woocommerce' ), esc_html( $lastname ) );
}
else {
    printf( esc_html__( 'Hi %s,', 'woocommerce' ), esc_html( $email ) );
} ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...