Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

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

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

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!

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

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

Весь приведенный ниже код нужно поместить в файл 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'] ) );
	}
}

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

Новое поле

Смотрите также:

Как в WooCommerce установить минимальную сумму заказа

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

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

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

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

Источник: www.cssigniter.com

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующийся на создании сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 0

Добавить комментарий