Добавление дополнительных полей к профилю пользователя

21 января, 2010

В 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()

на то действие которое происходит когда вы нажимаете на кнопку “Обновить информацию” при редактировании Вашего или чьего-либо профиля.

Вот что у нас получилось:

extra_fileds

Теперь мы смело можем использовать это дополнительное поле при помощи следующего кода:

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!

Вот и все.

Комментарии 10

  1. Андрей 11 февраля, 2010 в 15:13

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

  2. rOOse 21 марта, 2010 в 23:29

    То есть поинты будут начисляться вручную админом?

  3. Ex_Animal 08 апреля, 2010 в 20:14

    при попытке обновить информацию в профиле выдает

    Warning: Cannot modify header information – headers already sent by (output started at /home/dbuser/site/www/wp-content/themes/visio/Visio/functions.php:49) in /home/dbuser/site/www/wp-includes/pluggable.php on line 868

  4. rOOse 08 апреля, 2010 в 20:20

    @Ex_Animal
    Надо весь код смотреть, скорее всего вы где то ошиблись.

  5. Ex_Animal 08 апреля, 2010 в 20:48

    rOOse
    теперь, когда пост редактирую или добавляю, то же сообщение появляется, а когда пользователь выходит с аккаунта вообще штук десять с этим же pluggable.php, где-то напартачил

    кстати я добавил в functions.php, который в папке с шаблоном, или нужно было в тот, который в папке wp-includes ?

  6. rOOse 08 апреля, 2010 в 21:11

    В тот что в папке с шаблоном. Закиньте functions.php куда-нибудь я посмотрю.

  7. Ex_Animal 08 апреля, 2010 в 21:28

    krasivye-stihi.ru/avtory/dopolnitelnye-polya

    тут же можете комментировать

  8. Ex_Animal 09 апреля, 2010 в 00:14

    все, разобрался с выводом, эти поля теперь же можно достать как и стандартные поля из мета-данных о пользователе

    спасибо за помощь !

  9. rOOse 09 апреля, 2010 в 00:15

    Пожалуйста)

  10. alexpts 26 августа, 2010 в 09:41

    Сделал плагин, примерно тоже самое через админку позволяет делать в визуальном режиме – http://my-wordpress.ru/plugin/extend-profile-pts-wopdpress.php

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

Разрешенные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>