Всем привет!
Сегодня я расскажу, как добавить дополнительные поля в профиль пользователя WordPress.
Не знаю, пригодится ли эта возможность вам, но недавно я делал заказ, где мне нужно было создать дополнительные поля в профиле и вывести всю эту информацию на сайт.
Считаю, что читателями BlogGood.ru будует интересно и полезно ознакомиться с этой процедурой.
Чтобы добавить дополнительные поля в профиль пользователя, откройте файл «function.php» вашей активной темы и…
…вставьте вот такой код перед символом «?>»:
/* добавление поля в профиле*/ add_action( 'show_user_profile', 'add_extra_social_links' ); add_action( 'edit_user_profile', 'add_extra_social_links' ); function add_extra_social_links( $user ) { ?> <h3>Дополнительные данные пользователя</h3> <p>здесь будут дополнительные поля</p> <?php }
Обратите внимание на строку №8 и №9.
Вот туда будем вставлять дополнительные поля вот такого формата:
<input ENGINE="text" name="НАЗВАНИЕ_ПОЛЯ" value="<?php echo esc_attr(get_the_author_meta( 'НАЗВАНИЕ_ПОЛЯ ', $user->ID )); ?>" class="regular-text" />
НАЗВАНИЕ_ПОЛЯ – замените на любое подходящее название, например, «adress_prof»:
<input type="text" name="adress_prof" value="<?php echo esc_attr(get_the_author_meta( 'adress_prof', $user->ID )); ?>" class="regular-text" />
В итоге, наша общая картина будет выглядеть вот так:
/* добавление поля в профиле*/ add_action( 'show_user_profile', 'add_extra_social_links' ); add_action( 'edit_user_profile', 'add_extra_social_links' ); function add_extra_social_links( $user ) { ?> <h3>Дополнительные данные пользователя</h3> <input type="text" name="adress_prof" value="<?php echo esc_attr(get_the_author_meta( 'adress_prof', $user->ID )); ?>" class="regular-text" /> <?php }
Теперь, чтобы введенная в форму информация сохранялась, сразу после верхнего кода добавьте вот этот код:
// сохранение add_action( 'personal_options_update', 'save_extra_social_links' ); add_action( 'edit_user_profile_update', 'save_extra_social_links' ); function save_extra_social_links( $user_id ) { update_user_meta( $user_id,'adress_prof', sanitize_text_field( $_POST['adress_prof'] ) ); }
Обратите внимание на строку №7 на название «adress_prof» – это имя нашего созданного поля. Естественно, если будете создавать новые поля, то придумывайте им уникальные имена.
Чтобы вывести информацию на сайте из этого поля, вставьте в любом месте вашего сайта вот такой код:
<?php echo get_the_author_meta('adress_prof', 1); ?>
Обратите внимание, что здесь тоже есть уникальное имя созданного поля «adress_prof». Я думаю, вы саму суть поняли.
Цифра «1» – это пользователь, ID которого 1. То есть, будет выводиться из поля «adress_prof» только у пользователя с ID=1 (это админ сайта).
Вот такой код я написал в одном из своих заказов:
/* добавление поля в профиле*/ add_action( 'show_user_profile', 'add_extra_social_links' ); add_action( 'edit_user_profile', 'add_extra_social_links' ); function add_extra_social_links( $user ) { ?> <h3>Дополнительные данные пользователя</h3> <table class="form-table"> <tr> <th><label for="adress_prof">АДРЕС</label></th> <td><input type="text" name="adress_prof" value="<?php echo esc_attr(get_the_author_meta( 'adress_prof', $user->ID )); ?>" class="regular-text" /></td> </tr> <tr> <th><label for="email_prof">КОНТАКТЫ (Email)</label></th> <td><input type="text" name="email_prof" value="<?php echo esc_attr(get_the_author_meta( 'email_prof', $user->ID )); ?>" class="regular-text" /> <input type="text" name="email_prof2" value="<?php echo esc_attr(get_the_author_meta( 'email_prof2', $user->ID )); ?>" class="regular-text" /></td> </tr> <tr> <th><label for="tel_prof">Технический одел и сервис (тел:.)</label></th> <td><input type="text" name="tel_prof" value="<?php echo esc_attr(get_the_author_meta( 'tel_prof', $user->ID )); ?>" class="regular-text" /> <input type="text" name="tel_prof2" value="<?php echo esc_attr(get_the_author_meta( 'tel_prof2', $user->ID )); ?>" class="regular-text" /></td> </tr> <tr> <th><label for="tel_prof_zap">Отдел запчастей (тел:.)</label></th> <td><input type="text" name="tel_prof_zap" value="<?php echo esc_attr(get_the_author_meta( 'tel_prof_zap', $user->ID )); ?>" class="regular-text" /></td> </tr> </table> <?php } // сохранение add_action( 'personal_options_update', 'save_extra_social_links' ); add_action( 'edit_user_profile_update', 'save_extra_social_links' ); function save_extra_social_links( $user_id ) { update_user_meta( $user_id,'adress_prof', sanitize_text_field( $_POST['adress_prof'] ) ); update_user_meta( $user_id,'email_prof', sanitize_text_field( $_POST['email_prof'] ) ); update_user_meta( $user_id,'email_prof2', sanitize_text_field( $_POST['email_prof2'] ) ); update_user_meta( $user_id,'tel_prof', sanitize_text_field( $_POST['tel_prof'] ) ); update_user_meta( $user_id,'tel_prof2', sanitize_text_field( $_POST['tel_prof2'] ) ); update_user_meta( $user_id,'tel_prof_zap', sanitize_text_field( $_POST['tel_prof_zap'] ) ); }
На сайте выводим вот так:
<p><strong>АДРЕС</strong> <br><?php echo get_the_author_meta('adress_prof', 1); ?><br><br> <strong>КОНТАКТЫ</strong><br> Email: <?php echo get_the_author_meta('email_prof', 1); ?><br>Email: <?php echo get_the_author_meta('email_prof2', 1); ?><br><br><strong>Технический одел и сервис</strong><br>тел.: <?php echo get_the_author_meta('tel_prof', 1); ?><br>тел.: <?php echo get_the_author_meta('tel_prof2', 1); ?><br><strong> Отдел запчастей</strong><br>тел.: <?php echo get_the_author_meta('tel_prof_zap', 1); ?></p>
Результат в админке:
Результат на сайте:
Если вас такой способ не устраивает, можно сделать немножко по-другому, используя фильтр «user_contactmethods». Но не нужно будет писать никаких скриптов для сохранения полей, сам вордпресс обо всем позаботится.
Поля сразу отобразятся в разделе «профиля» под «контактами».
Вот шаблон функции для вставки новых полей:
//======= Новые поля в разделе Контакты ============= function modify_contact_methods( $contact_fields ) { // Новы поля // здесь будут новые поля return $contact_fields; } add_filter('user_contactmethods', 'modify_contact_methods');
В строке №5 добавляйте новые поля. Шаблон для добавления полей будет вот таким:
$contact_fields['УНИКАЛЬНОЕ_ИМЯ'] = 'НАЗВАНИЕ ПОЛЯ';
«УНИКАЛЬНОЕ_ИМЯ» – это ID поля. Оно должно быть уникальным и на латинице.
«НАЗВАНИЕ ПОЛЯ» – это название поля для пользователя. Пишем на любом языке.
Пример:
$contact_fields['contakttel'] = 'Ваш телефон';
Теперь попробуем все на практике. Откройте файл «function.php» вашей активной темы и вставьте вот такой код перед
символом «?>»:
//======= Новые поля в разделе Контакты ============= function modify_contact_methods( $contact_fields ) { // Новы поля $contact_fields['twitter'] = 'Twitter'; $contact_fields['facebook'] = 'Facebook'; $contact_fields['gplus'] = 'Google+'; $contact_fields['contakttel'] = 'Ваш телефон'; return $contact_fields; } add_filter('user_contactmethods', 'modify_contact_methods');
Итак, я добавил 4 поля, это поле «Twitter», «Facebook», «Google+» и «Ваш телефон» (№5 - №8).
Результат в админке:
Чтобы вывести на сайте информацию из формы, воспользуйтесь вот таким шаблоном (код вставляете в файлах сайта, где выводится информация, например, в футере):
<?php echo get_the_author_meta('УНИКАЛЬНОЕ_ИМЯ', 1); ?>
«УНИКАЛЬНОЕ_ИМЯ» – это ID поля.
«1» – это ID пользователя, информацию которого нужно вывести на сайте. В данном случае это информация администратора сайта.
Попробуем вывести на сайте все поля, которые я создал:
<?php echo "Twitter админа".get_the_author_meta('twitter', 1); echo "facebook админа".get_the_author_meta('facebook', 1); echo "Google+".get_the_author_meta('gplus', 1); echo "Телефон админа".get_the_author_meta('contakttel', 1); ?>
На сайте отобразится вся информация, которую вы ввели в эти поля. Удачи!
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 330346 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274701 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 222533 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 187741 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186564
4 Ответов на комментарий - Добавляем дополнительные поля в профиль пользователя WordPress
Добавить комментарий
Метки: wordpress, без плагинов
А если в профиле пользователя нужно вывести не просто слово, а часть кода. Например, этот код в теге див, который выводит баннер на странице пользователя. Меня бы устроил и шорткод в поле биографии, но ничего из этого не работает таким способом. Есть ли решение?
для начала, код на php или javascript?
Здравствуйте интересует возможность добавление полей в профиль Ясненько с возможностью редактирования только администратором админ панели и выводом в профиль участника без возможности редактирования. Информация 2 типа дата и число. Подскажите как реализовать
Доброго времени. Подскажите, пожалуйста, а как вывести посты по автору на страницу этого автора. В Записях есть выборка по автору, а вот как посты по этому автору вывести, что-то найти не могу((
За ранее спасибо