Добавить поле мобильного телефона в Мой аккаунт> изменить аккаунт в Woocommerce - PullRequest
0 голосов
/ 29 июня 2018

мой вопрос: Как добавить поле мобильного телефона на странице Woocommerce my-account/edit-account/ (Связанный шаблон: form-edit-account.php file)

Как в следующей ветке ответа:
Сохранение значения телефонного номера настраиваемого поля в WooCommerce Мой аккаунт> Данные аккаунта

Но этот код ответа неполон, поскольку отсутствуют некоторые перехваченные функции. Любая помощь приветствуется, чтобы получить что-то полное, то есть отображение поля.

1 Ответ

0 голосов
/ 29 июня 2018

У вас есть 3 варианта отображения настраиваемого поля мобильного телефона в разделе Моя учетная запись> Страница редактирования учетной записи:

1) В качестве первого поля используется woocommerce_edit_account_form_start action hook (см. Ниже).

2) После существующих полей с использованием woocommerce_edit_account_form ловушка действий:

// Display the mobile phone field
// add_action( 'woocommerce_edit_account_form_start', 'add_billing_mobile_phone_to_edit_account_form' ); // At start
add_action( 'woocommerce_edit_account_form', 'add_billing_mobile_phone_to_edit_account_form' ); // After existing fields
function add_billing_mobile_phone_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
     <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="billing_mobile_phone"><?php _e( 'Mobile phone', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" />
    </p>
    <?php
}

// Check and validate the mobile phone
add_action( 'woocommerce_save_account_details_errors','billing_mobile_phone_field_validation', 20, 1 );
function billing_mobile_phone_field_validation( $args ){
    if ( isset($_POST['billing_mobile_phone']) && empty($_POST['billing_mobile_phone']) )
        $args->add( 'error', __( 'Please fill in your Mobile phone', 'woocommerce' ),'');
}

// Save the mobile phone value to user data
add_action( 'woocommerce_save_account_details', 'my_account_saving_billing_mobile_phone', 20, 1 );
function my_account_saving_billing_mobile_phone( $user_id ) {
    if( isset($_POST['billing_mobile_phone']) && ! empty($_POST['billing_mobile_phone']) )
        update_user_meta( $user_id, 'billing_mobile_phone', sanitize_text_field($_POST['billing_mobile_phone']) );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

3) В определенном месте , переопределяя файл шаблона myaccount/form-edit-account.php через тему, как объяснено в этой документации . и эта ветка ответа

В этом случае вам необходимо добавить следующий HTML-код в шаблон ( как в этой ветке ответов ) :

 <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
    <label for="billing_mobile_phone"><?php _e( 'Mobile phone', 'woocommerce' ); ?> <span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" />
</p>

В последнем случае вам нужно будет добавить в файл function.php вашей темы 2 последние подключенные функции из раздела 2 (проверка и сохранение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...