Расширение профиля пользователей

Однако расширение может потребоваться и по другим причинам. Предположим у вас на блоге пишут посты многие авторы. А вы хотите знать о них всё! Ну или хотя бы номер телефона и Webmoney-реквизиты, чтобы как-то оплачивать им работу.

Никаких плагинов мы использовать не будем. Короче вот вам пример кода, который нужно засунуть в functions.php, сейчас расскажу, что к чему.

<?php
function show_profile_fields( $user ) { ?> 
 	<h3>Дополнительная информация</h3>
 	<!-- добавляется ещё один блок в профиле, в примере он будет называться "Дополнительная информация" -->
 	<table class="form-table">
 	<!-- для того чтобы ваши поля выглядели так же, как и стандартные в WordPress, прописывайте такие же классы как и тут -->
 	<!-- добавляем поле город -->
 	<tr><th><label for="city">Город</label></th>
 	<td><input type="text" name="city" id="city" value="<?php echo esc_attr(get_the_author_meta('city',$user->ID));?>" class="regular-text" /><br /></td></tr>
 	<!-- добавляем поле пол -->
 	<th><label for="gender">Пол</label></th>
 	<td><?php $gender = get_the_author_meta('gender',$user->ID ); ?>
 		<ul>
 			<li><label><input value="мужской" name="gender"<?php if ($gender == 'мужской') { ?> checked="checked"<?php } ?> type="radio" /> мужской</label></li>
 			<li><label><input value="женский"  name="gender"<?php if ($gender == 'женский') { ?> checked="checked"<?php } ?> type="radio" /> женский</label></li>
 		</ul>			
 	</td></tr>
 	<!-- закрываем теги и применяем функцию -->
 	</table>
 <?php }
add_action( 'show_user_profile', 'show_profile_fields' );
add_action( 'edit_user_profile', 'show_profile_fields' );

Чтобы поля работали, недостаточно только одной этой функции, поля конечно появятся, но не будут сохраняться, поэтому дополняем код вот этим:

function save_profile_fields( $user_id ) {
	update_usermeta( $user_id, 'city', $_POST['city'] );
	update_usermeta( $user_id, 'gender', $_POST['gender'] );
}
 
add_action( 'personal_options_update', 'save_profile_fields' );
add_action( 'edit_user_profile_update', 'save_profile_fields' );

Вот как это будет выглядеть в админке на странице редактирования пользователя:

пример дополнительных полей в профиле

Существуют ещё некоторые способы добавления и удаления полей в профиле.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

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