Добавление дополнительных полей к профилю пользователя
В WordPress не только у записей есть дополнительные поля, но и у пользователей.
Зачем дополнительные поля пользователю? Ну к примеру есть у пользователя такие настройки как Контакты. В контактах есть поля: E-mail, Сайт и несколько дополнительных полей для IM-контактов. Но, нет например Twitter’a, Facebook’a и т.д.
Попробуем исправить это. Используем для примера добавление дополнительного поля – аккаунта в твиттере.
Открываем файл functions.php
Добавляем туда следующий код:
<?php
function action_show_user_profile($user) {
?>
<h3>Дополнительные контакты</h3>
<table>
<tr>
<th><label for="twitter">Twitter</label></th>
<td>
<span>http://twitter.com/</span>
<input type="text" name="twitter" id="twitter" value="<?php echo esc_attr(get_the_author_meta('twitter', $user->ID) ); ?>" />
</td>
</tr>
</table>
<?php } ?>
Эта функция будет добавлять дополнительные настройки при редактировании профиля пользователя.
и еще немного кода:
<?php
function action_user_option_update($user_id) {
update_usermeta($user_id, 'twitter', ( isset($_POST['twitter']) ? $_POST['twitter'] : '' ) );
}
?>
Эта функция будет сохранять наши новые настройки.
И наконец делаем несколько хуков:
<?php
add_action('show_user_profile', 'action_show_user_profile');
add_action('edit_user_profile', 'action_show_user_profile');
add_action('personal_options_update', 'action_user_option_update');
add_action('edit_user_profile_update', 'action_user_option_update');
?>
Первый и второй хук навешивает нашу функцию
action_show_user_profile()
на просмотр и редактирование профиля. Третий и четвертый хук навешивает функцию
action_user_option_update()
на то действие которое происходит когда вы нажимаете на кнопку “Обновить информацию” при редактировании Вашего или чьего-либо профиля.
Вот что у нас получилось:
Теперь мы смело можем использовать это дополнительное поле при помощи следующего кода:
echo 'http://twitter.com/'.get_the_author_meta('twitter');
которая выведет нам http://twitter.com/наш_твиттер Ну или полный вариант:
echo '<a href="http://twitter.com/'.get_the_author_meta('twitter').'">Follow me!</a>';
Который выведет ссылку на наш аккаунт в твиттере с надписью – Follow me!
Вот и все.