Якщо ви введете у пошуку "Як додати нове поле у профілі користувача WordPress", то, швидше за все, ви знайдете всілякі приклади з десятками рядків коду, що дозволяють отримувати додаткову інформацію про користувачів під час реєстрації. Однак, якщо все, що вам потрібно - це додати, скажімо, одне нове поле з Twitter обліковим записом, є більш простий спосіб, як це зробити!
Фільтр user_contactmethods
Фільтр user_contactMethods дозволяє додавати нові та виключати існуючі контактні поля на сторінці профілю користувача. Головна перевага цього фільтра полягає в тому, що створення та оновлення нових полів контактної інформації лягає на плечі самого движка WordPress, а не через сторонні скрипти та плагіни.
Давайте розглянемо приклад, у якому ми додамо 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; }
Ось так виглядатиме контактна інформація у Профілі після внесених змін:
Якщо ви хочете приховати деякі поля з контактної інформації, просто виключіть їх із масиву. Давайте, наприклад, приберемо поля 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; }
В результаті вийде ось так:
Щоб вивести в коді цю інформацію, просто використовуйте функцію get_user_meta:
echo get_user_meta(1, 'twitter', true);
У прикладі вище ми вивели обліковий запис Twitter для користувача з 1 ID. Аргумент правда у коді використаний у тому, щоб вивести значення як текст, а чи не як масив даних.
На цьому все. Сподіваюся, ця порада виявиться вам корисною.
Коментарі до запису: 19
Доброго дня!
Спробував, але натрапив на те, що functions.php два і в темі, і десь ще. У якій із них треба вставляти код фільтра, в яке краще місце, без будь-яких "//"?
Ви можете вставити код у functions.php вашої теми, тоді при її активації буде застосована ця дія і зайві поля заберуться.
Добрий день!
Як додати довільне поле в профіль клієнта для вказівки знижки, а потім написати функцію, яка вичитає знижку із загальної вартості для кожного користувача окремо.
Суть, що можна було б окремим користувачам вказувати знижку товар, і коли користувач переглядатиме товар, що він бачив вже товар зі знижкою.
Спасибі за відповідь!
Доброго дня, для мене дуже актуальна ця тема, тому що намагаюся зробити повноцінний особистий кабінет. Але ось питання виникло. А як видалити будь-які непотрібні поля? Наприклад, поле «last name». У мене стоїть плагін Theme My Profile і версія wordpress 3.4.1! Намагався видалити непотрібні поля у [wp-admin/user-edit], але не допомогло! Я взагалі майже повний chainik у php та html але вже дещо починаю розуміти)
Хотілося б знати, чи вирішили Ви це завдання? По-моєму, людству це не вдалося, принаймні гугл про це нічого не знає або я там забанен :-)
dispay: none!important; - Forever! :)
+1
Як вставити в профіль інші елементи? наприклад контейнер у написі.
Для цього потрібно редагувати конфігураційні файли в папці wp-admin. Це керівництво не допоможе.
Ось Ви пишіть "echo get_user_meta(1, 'twitter', true);", де 1 - ID користувача. А можна якось зробити так, щоб ID вводилося для кожного користувача автоматично. Тобто у мене на сайті є 3 автори, для кожного з них я прописую Twitter-акаунти у профілі, і необхідно, щоб у пості конкретного автора прописувався саме його твіттер.
Важко відповісти, але для цього є інші плагіни, які наприкінці кожного посту виводять блок з інформацією про автора. І там може бути вказано його твіттер та інші профілі. Подивіться цей урок: https://hostenko.com/wpcafe/tutorials/kak-dobavit-bolshe-dannyih-v-blok-ob-avtore-s-pomoshhyu-besplatnogo-plagina/
Дякую за підказку, але я знайшов рішення без використання плагінів)
Розкажіть, як це ви зробили?
Добрий день. Дякую за статтю, використовував код з неї разом з Gravity Forms-тепер я можу створювати реєстраційні форми з індивідуальними полями в профілі.
Є питання - як вивести додаткові поля з профілю, які були додані завдяки вашій статті на сторінці "Користувачі", щоб можна було бачити їх, не заходячи в профіль кожного користувача.
В уроці ж написано: Щоб вивести в коді цю інформацію користувача, просто використовуйте функцію get_user_meta:
На жаль, я не знаю, де знаходиться код сторінки "користувачі" адмінпанелі. З пошуку не зміг знайти.
Ось приклад виведення поля біографія, причому id підставляється динамічно
звіт про помилку (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');
Ось написав пост про розробку особистого кабінету, найближчим часом хочу доопрацювати статтю і можливо плагін напишу невеликий.
Якщо цікаво заходите, було б супер почути вашу думку та поради. А можливо вже є такий плагін, але я про це поки не знаю). Втім якщо є ідеї пишіть на сайті або в соціальній мережі.
http://wp-admin.com.ua/razrabotka-lichnogo-kabineta-wordpress/