Попытка добавить поле для Woocommerce billing_phone в my-account/edit-account/
. Он присутствует на страницах обновления адреса, но при добавлении в form-edit-account.php
это не обновляет.
В настоящее время добавляем, следуя тому же коду, что и другие поля, такие как first_name
:
<input type="text" class="form-control woocommerce-Input woocommerce-Input--phone input-text" name="billing_phone" id="billing_phone" value="<?php echo esc_attr( $user->billing_phone ); ?>" />
Изображение формы с billing_phone
показывается как значение:
Но при обновлении с новым номером он не меняется…
Как сделать так, чтобы это было сохранено / обновлено?
Вам нужно добавить пользовательскую функцию, подключенную woocommerce_save_account_details
Хук действия:
add_action( 'woocommerce_save_account_details', 'my_account_saving_billing_phone', 10, 1 );
function my_account_saving_billing_phone( $user_id ) {
$billing_phone = $_POST['billing_phone'];
if( ! empty( $billing_phone ) )
update_user_meta( $user_id, 'billing_phone', sanitize_text_field( $billing_phone ) );
}
Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.
Этот код протестирован на WooCommerce версии 3+ и работает. Данные будут обновлены и отображаются правильно.
Ваш полный код поля телефона для выставления счетов в form-edit-account.php должен выглядеть примерно так:
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_phone" id="billing_phone" value="<?php echo esc_attr( $user->billing_phone ); ?>" />
</p>
Других решений пока нет …