Дополнительные поля в профиле пользователей

Дополнительные поля в профиле пользователей

Существует множество плагинов, которые расширяют возможности стандартной регистрации в блоге на WordPress. Однако, не всегда стоит пользоваться дополнительным плагином, если все, что вам от него нужно это пара лишних полей в профиле пользователя вроде аськи или твиттера. Плагинами, конечно, пользоваться проще, но, к сожалению, простых и легких плагинов расширения пользовательских профилей мне найти не удалось. Такие монстры как Cimy User Extra Fields будут только зря нагружать ваш блог, поэтому лучше воспользоваться изложенным ниже методом, основанным на редактировании файла functions.php вашего шаблона.

Чтобы добавить дополнительные поля в профиль пользователя достаточно открыть файл functions.php вашего шаблона и вставить туда код:

add_action('show_user_profile', 'show_my_profile_fields');
add_action('edit_user_profile', 'show_my_profile_fields');
 
function show_my_profile_fields($user) { ?>
<h3>Дополнительные поля</h3>
<table class="form-table">
  <tr>
    <th><label for="twitter">Twitter</label></th>
      <td>
      <input type="text" name="twitter" id="twitter" value="
      <?php echo esc_attr(get_the_author_meta('twitter', $user->ID)); ?>" 
      class="regular-text" /><br />
      <span class="description">Пожалуйста введите ваш Twitter логин.
      </span>
      </td>
  </tr>
  <tr>
      <th><label for="icq">ICQ</label></th>
      <td>
      <input type="text" name="icq" id="icq" value="
      <?php echo esc_attr(get_the_author_meta('icq', $user->ID)); ?>" 
      class="regular-text" /><br />
      <span class="description">Пожалуйста введите ваш ICQ номер.</span>
      </td>
  </tr>
</table>
<?php }

Этот код добавит поля ICQ и Twitter в профиль пользователя. На примере этого кода вы можете добавить любые другие нужные вам поля. Однако этот код только добавляет поля в профиль, а если вы захотите сохранить значения этих полей, то ничего не произойдет. Чтобы значения сохранялись, добавьте еще код в файл functions.php:

add_action('personal_options_update', 'save_my_profile_fields');
add_action('edit_user_profile_update', 'save_my_profile_fields');
 
function save_my_profile_fields($user_id) {
	if ( !current_user_can( 'edit_user', $user_id ) )
		return false;
	update_usermeta($user_id, 'twitter', $_POST['twitter']);
	update_usermeta($user_id, 'icq', $_POST['icq']);
}

Теперь у вас есть дополнительные поля в профиле, которые полностью работают. Довольно просто и избавляет от необходимости установки лишних плагинов. Но как использовать эту дополнительную информацию из профиля на самом блоге? Для этого добавьте в файл functions.php еще одну функцию:

function my_author_box() { ?>
  <div class="author-profile vcard">
 
      <p class="author-name"><?php echo get_avatar(get_the_author_meta('user_email'), '16'); ?>
      Автор статьи: <?php the_author_posts_link(); ?></p>
 
      <?php if (get_the_author_meta('twitter')) { ?>
          <p class="twitter">
            <img src="http://www.wordpressplugins.ru/wp-content/themes/wpplugins/images/twitter.png" width="16" height="16" />
            Twitter: <a href="http://twitter.com/<?php the_author_meta('twitter'); ?>"><?php the_author_meta('twitter'); ?></a>
          </p>
      <?php } ?>
 
      <?php if (get_the_author_meta('icq')) { ?>
          <p class="icq">
            <img src="http://web.icq.com/whitepages/online?icq=<?php the_author_meta('icq'); ?>&img=5" />
            ICQ: <?php the_author_meta('icq'); ?>
          </p>
      <?php } ?>
 
  </div>
<?php }

А в нужном файле шаблона (например, в single.php) вставьте вызов этой функции my_author_box():

<?php my_author_box(); ?>

Получится что-то вроде:

Вывод дополнительных полей из профиля пользователей

Необязательно добавлять функцию my_author_box() именно в файл functions.php, можно ее вставить прямо в нужный файл шаблона. Но использование файла functions.php позволяет вам вызывать показ нужной информации из профиля лишь одной строчкой вызова функции и, тем самым, вы не будете нагружать файлы шаблона лишним кодом.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 57 комментариев)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.