Как добавить настраиваемое поле в данные учетной записи WooCommerce

Click here to view original web page at hostenko.com

В некоторых случаях владельцам магазинов может понадобиться дополнительная информация о своих клиентах. Например, дата рождения может потребоваться в записи для определенных покупок или для проверки по другим причинам. В сегодняшней статье мы покажем, как добавить такое поле на вкладку «Сведения об учетной записи» на странице «Моя учетная запись», а затем для облегчения доступа отобразим информацию, введенную на странице профиля пользователя.

Добавление поля WooCommerce в учетной записи
Специализированный хостинг для сайтов на WordPress!
Специализированный хостинг для сайтов на WordPress!

Установите и активируйте дочернюю тему

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

Весь приведенный ниже код нужно поместить в файл functions.php вашей дочерней темы. Если файл пуст, разместите код сразу под открывающим тегом <? PHP.

Если файл что-то содержит, код должен быть помещен в конец файла, перед закрывающим тегом ?> PHP.

Создайте настраиваемое поле

Добавить настраиваемое поле довольно просто. Мы будем использовать хук woocommerce_edit_account_form для добавления поля и woocommerce_save_account_details для сохранения введенной информации.

add_action( 'woocommerce_edit_account_form', 'cssigniter_add_account_details' );function cssigniter_add_account_details() {$user = wp_get_current_user();?><p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"><label for="dob"><?php esc_html_e( 'Date of birth', 'your-text-domain' ); ?></label><input type="date" class="woocommerce-Input woocommerce-Input--text input-text" name="dob" id="dob" value="<?php echo esc_attr( $user->dob ); ?>" /></p><?php}add_action( 'woocommerce_save_account_details', 'cssigniter_save_account_details' );function cssigniter_save_account_details( $user_id ) {if ( isset( $_POST['dob'] ) ) {update_user_meta( $user_id, 'dob', sanitize_text_field( $_POST['dob'] ) );}}

Созданное новое поле появится под полями управления паролями.

Новое поле

Отобразите данные поля в профиле

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

add_action( 'show_user_profile', 'cssigniter_show_extra_account_details', 15 );add_action( 'edit_user_profile', 'cssigniter_show_extra_account_details', 15 );function cssigniter_show_extra_account_details( $user ) {$dob = get_user_meta( $user->ID, 'dob', true );if ( empty( $dob ) ) {return;}?><h3><?php esc_html_e( 'Extra account details', 'your-text-domain' ); ?></h3><table class="form-table"><tr><th><?php esc_html_e( 'Date of birth', 'your-text-domain' ); ?></label></th><td><p><?php echo esc_html( $dob ); ?></p></td></tr></table><?php}

Чтобы отобразить поле, используйте хуки show_user_profile и edit_user_profile с приоритетом 15, чтобы эта информация отображалась под информацией о выставлении счетов и доставке WooCommerce.

Отображение поля в учетной записи WooCommerce

С помощью пары простых фрагментов кода мы добавили настраиваемое поле учетной записи и отобразили информацию из этого поля на странице профиля пользователя. Теперь можно использовать новую информацию для улучшения покупательского опыты для ваших клиентов и облегчить работу владельцев магазинов.