Рекомендуется способ применения кода. Однако, поскольку вы хотите добавить новое поле в очень конкретном c месте, я бы рекомендовал следующее
Шаг 1 : перезаписать файл шаблона
https://github.com/woocommerce/woocommerce/blob/3.8.0/templates/myaccount/form-edit-account.php
- Этот шаблон можно изменить, скопировав его в yourtheme / woocommerce / myaccount / form-edit-account. php .
Заменить: строка 42 - 47
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="account_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" autocomplete="email" value="<?php echo esc_attr( $user->user_email ); ?>" />
</p>
// ADD NEW FIELD HERE
<fieldset>
С
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="account_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" autocomplete="email" value="<?php echo esc_attr( $user->user_email ); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="billing_phone"><?php esc_html_e( 'Billing phone', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="tel" class="woocommerce-Input woocommerce-Input--text input-text" name="billing_phone" id="billing_phone" autocomplete="tel" value="<?php echo esc_attr( $user->billing_phone ); ?>" />
</p>
<fieldset>
Шаг 2 и Шаг 3
Чтобы сохранить и подтвердить поле, в котором вы можете сохранить свой существующий код (я их немного скорректировал)
/**
* Save field value
*/
function my_save_account_details( $user_id ) {
if( isset( $_POST['billing_phone'] ) ) {
update_user_meta( $user_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) );
}
}
add_action( 'woocommerce_save_account_details', 'my_save_account_details' );
/**
* Make it required
*/
function my_save_account_details_required_fields( $required_fields ){
$required_fields['billing_phone'] = 'Billing phone';
return $required_fields;
}
add_filter('woocommerce_save_account_details_required_fields', 'my_save_account_details_required_fields');