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

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

Если вы введете в поиске "Как добавить новое поле в профиле пользователя WordPress", то, скорее всего, вы обнаружите всевозможные примеры с десятками строк кода, позволяющие извлекать дополнительную информацию о пользователях при регистрации. Однако, если все, что вам надо — это добавить, скажем, одно новое поле с Twitter аккаунтом, есть более простой способ, как это сделать!

Фильтр user_contactmethods

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

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

Давайте рассмотрим пример, в котором мы добавим 2 новых поля в Профиль пользователя: это будет Twitter и Facebook. Просто добавьте следующий код в ваш файл  functions.php:

add_filter('user_contactmethods', 'my_user_contactmethods');

function my_user_contactmethods($user_contactmethods){

  $user_contactmethods['twitter'] = 'Twitter Username';
  $user_contactmethods['facebook'] = 'Facebook Username';

  return $user_contactmethods;
}

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

Как добавить новое поле в Профиль пользователя WordPress

Если вы хотите скрыть некоторые поля из контактной информации, просто исключите их из массива. Давайте, например, уберем поля AIM, Yahoo IM и Jabber / Google Talk:

function my_user_contactmethods($user_contactmethods){

  unset($user_contactmethods['yim']);
  unset($user_contactmethods['aim']);
  unset($user_contactmethods['jabber']);

  $user_contactmethods['twitter'] = 'Twitter Username';
  $user_contactmethods['facebook'] = 'Facebook Username';

  return $user_contactmethods;
}

В результате получится вот так:

Как добавить новое поле в Профиль пользователя WordPress

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

echo get_user_meta(1, 'twitter', true);

В примере выше мы вывели аккаунт Twitter для пользователя с ID 1. Аргумент true в коде использован для того, чтобы вывести значение как текст, а не как массив данных.

На этом все. Надеюсь, этот совет окажется вам полезен.

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

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

Fox:

Здравствуйте!
Попробовал, но наткнулся на то, что functions.php два и в теме и где-то еще. В какой из них надо вставлять код фильтра, в какое лучше место, без всяких «//» ?

WordPresso:

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

Ivan Klimov:

Добрый день!

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

Суть, что бы можно было отдельным пользователям указывать скидку на товар, и когда пользователь будет просматривать товар, что бы он видел уже товар со скидкой..
Спасибо за ответ!

alexandr:

Добрый день, для меня очень актуальна данная тема, так как пытаюсь сделать полноценный личный кабинет. Но вот вопрос возник- А как удалить любые ненужные поля? Например поле «last name». У меня стоит плагин «Theme My Profile» и версия wordpress 3.4.1! Пытался удалить ненужные поля в [wp-admin/user-edit] но не помогло! Я как говорится почти полный chainik в php и html но уже кое что начинаю понимать)

Adward Valeev:

Хотелось бы знать — решили ли Вы эту задачу? Помоему, человечеству это не удалось, по крайней мере гугл об этом ничего не знает или я там забанен :-)

VRS:

dispay: none!important; — forever ! :)

onum:

А как вставить в профиль другие элементы? например контейнер в надписью.

WordPresso:

Для этого нужно править конфигурационные файлы в папке wp-admin. Это руководство не поможет.

Ильч:

Вот Вы пишите «echo get_user_meta(1, ‘twitter’, true);», где 1 — ID пользователя. А можно как-нибудь сделать так, чтобы ID вводилось для каждого пользователя автоматом. То есть у меня на сайте есть 3 автора, для каждого из них я прописываю Twitter-аккаунты в профиле, и необходимо, чтобы в посте конкретного автора прописывался именно его твиттер.

WordPresso:

Затрудняюсь ответить, но для этих целей есть другие плагины, которые в конце каждого поста выводят блок с информацией об авторе. И там может быть указан его твиттер и другие профили. Посмотрите этот урок: https://hostenko.com/wpcafe/tutorials/kak-dobavit-bolshe-dannyih-v-blok-ob-avtore-s-pomoshhyu-besplatnogo-plagina/

Илья:

Спасибо за подсказку, но я нашел решение без использования плагинов)

Алексей:

Расскажите, как вы это сделали?

Dmitriy Ko:

Здравствуйте. Спасибо за статью, использовал код из неё вместе с Gravity Forms- теперь я могу создавать регистрационные формы с индивидульными полями в профиле.
Есть вопрос — как вывести дополнительные поля из профиля, которые были добавлены благодаря вашей статье на странице «Пользователи», чтобы можно было видеть их не заходя в профиль каждого пользователя.

WordPresso:

В уроке же написано: Чтобы вывести в коде эту пользовательскую информацию, просто используйте функцию get_user_meta:

Dmitriy Ko:

К сожалению, я не знаю, где находится код страницы «пользователи» админпанели. По поиску не смог найти.

login2030:

Вот пример вывода поля биография, причем id подставляется динамически

error_reporting(E_ALL);

$user = get_current_user_id();

$sql = «SELECT meta_value FROM wp_usermeta WHERE meta_key=’description’ AND user_id=’$user'»;

$result = mysql_query($sql);

$row = mysql_fetch_assoc($result);

echo $row[‘meta_value’];

Юрий:

Вставлю 5 коп. Выводить данные можно ещё одним способом: echo the_author_meta(‘twitter’);

Уроки WordPress:

Вот написал пост о разработке личного кабинета, в ближайшем будущем хочу доработать статью и возможно плагин напишу небольшой.

Если интересно заходите, было бы супер услышать ваше мнение и советы. А возможно уже есть такой плагин но я об этом пока не знаю ). Вообщем если есть идеи пишите на сайте или в соц сети.
http://wp-admin.com.ua/razrabotka-lichnogo-kabineta-wordpress/

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