Как в buddypress в общем списке пользователей выводить не только ФИО, но и другие поля профиля
Здравствуйте. Собственно в теме весь вопрос) Заранее спасибо
общий список пользователей может выводится как стандартным шаблоном бадипресс так и быль шаблоном в вашей теме. У вас как реализовано?
В любом случае можете попробовать в файл functions.php вашей темы добавить:
add_action('bp_directory_members_item', function(){ echo '111111'; }); // или add_action('bp_directory_members_actions', function(){ // global $members_template; // var_dump($members_template->member); echo '222222'; }); // данные о пользователе попробуйте получить так global $members_template; var_dump($members_template->member);
На всякий случай, сразу каюсь — я почти ничего не понимаю в программировании.
1. Как у меня реализовано — подозреваю, что через бадипресс ( вот строка кода html с главной страницы: http://prntscr.com/bolgi4)
2. при добавлении вашего кода в functions.php темы — он выдает у каждого пользователя «111111» и «222222» и более ничего.
3. Тоже самое происходит при добавлении вашего кода в bp-members-functions.php в директории buddypress

ну все верно, раз выводится 1111 или 2222 — то значит мы подключились в нужное место, осталось вывести нужные данные. Вы какие поля хотите вывести(от бадипресс или вордпресовские)?
Я бы хотела от бадипресс вывести, но у меня стоит галка в синхронизации (http://prntscr.com/boprr8)
На самом деле у меня и это получилось:
// данные о пользователе попробуйте получить так
global
$members_template
;
var_dump(
$members_template
->member);
Но вывелось вот что: (http://prntscr.com/bopsyo), наверно имя переменной не такое как мне мне надо..?

На самом деле это объект с элементами к которым можно обращаться, например:
add_action('bp_directory_members_actions', function() { global $members_template; echo 'Email: ' . $members_template->member->user_email; });
Спасибо) имейл выводит, но вопрос все еще остался:
а как узнать название элемента (к которому я хочу обратиться) под которым сохраняются данные, когда пользователь заполняет свой профиль?
иными словами, как мне понять что писать в эту строчку . $members_template->member->user_email; , если я хочу вывести любое другое произвольное поле?

На самом деле, все было еще в первом ответе.
global $members_template; var_dump($members_template->member);
Вы присылали картинку где выводится много символов. Вот если присмотреться там есть [‘user_email’] — и мы обращаемся:
$members_template->member->user_email
Для того что бы данный код выглядел более наглядно, нажмите на сайте правой кнопкой мыши и выбирите «Исходный код страницы» — там эти объекты будут выглядеть более наглядно.
К сожалению, среди тех данных нет нужных мне. Вот как это выглядит в исходном коде:
http://prntscr.com/bpiw2d
вот, о каком профиле идет речь:
http://repetitor4you.ru/%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F/mishanya/
и мне нужно вывести, например, тип экзамена, или, скажем предмет..

так а где эти данные вы храните?
это мне и нужно узнать.) произвольно я никаких настроек не задавала, все происходит по велению системы.

В вордпресс по умолчанию нет полей: «тип экзамена», «предмет». Создать их есть куча способов, какой используете вы я не могу знать.
я создаю их в бадипресс инструментом — поля профиля, по идее здесь не должно быть неожиданностей

тогда так:
add_action('bp_directory_members_actions', function() { global $members_template; $XXX = bp_get_profile_field_data( 'field=XXX&user_id=' . $members_template->member->ID ); echo $XXX; });
В строке «field=XXX&user_id», вам нужно заменить XXX на название вашего поля, то которое вы указывали при создании.
Да, спасибо, работает, один момент — как записывать названия полей, состоящих из двух и более слов?

Как вы их назвали так и записывать.
Тогда ошибка 500 на сайте

как вариант назвать заново поля на латинице без пробелов(или заменяя «_»)
или попробовать пробелы заменить на знак + или %20
Не помогло, в итоге поменяла название одного из полей на однословное, состоящее из букв латинского алфавита, вывел вот что:
http://prntscr.com/bup1f2
Но тем не менее, если я прошу вывести ФИО — он выводит с помощью этого кода:
http://prntscr.com/bup2l6

Сделайте var_dump($XXX); когда у вас появляется надпись array.
Если брали код что я написал что после echo $XXX;
Что бы посмотреть что находится в массиве, который не выводится(надпись array).
И еще пришли код того как вы выводите(оба варианта, рабочий и нет). И сделайте скриншот в админке ваших полей.
Прошу прощения за долгий ответ, слабый тип нервной деятельности, рыдала.
Значит, вот:
1. var_dump($XXX); — результат такой: http://prntscr.com/c423rq
Т.е. он вывел что мне нужно, только не красиво.
2. скрин кода когда он вывел этот результат (напомню, что поле «Тип экзамена» я переименовала в Ekz): http://prntscr.com/c424rv
3. код с латинским названием поля, где в качестве пробела знак «_» — работает точно также как и в п.1
4. код с названием поля в русском варианте не работает.
5. а вот скрин полей в админке (не всех): http://prntscr.com/c427i4

Рыдать не нужно.
Попробуйте так:
add_action('bp_directory_members_actions', function() { global $members_template; $Ekz = bp_get_profile_field_data( 'field=Ekz&user_id=' . $members_template->member->ID ); if(!empty($Ekz)){ foreach ($Ekz as $Ekz_value) { echo '<p>'.$Ekz_value.'</p>'; } } });
$Ekz — у вас это массив значений, который нужно обойти циклом foreach(перебрать его элементы)
Да, спасибо, это работает)
жаль только что переменная и поле анкеты одинаково называются( не могу же я в полях для регистрации преподавателей оставить латинские буквы, может быть есть какое то решение что бы поле анкеты было русским, а переменная куда это все записывается — латинской?

Не понял задачи. Не знаю что за анкеты и что у вас за регистрация. Можно подробнее.
Анкета регистрации — стандартная из плагина бадипресс для вордпресс. В ней я задала названия полей на русском языке (http://prntscr.com/c8ja5e), но для того, чтобы вызвать какую то переменную с помощью вашего кода, я должна в админке ее написать латинскими буквами, и после этого, это поле на сайте так и отображается, что не удобно для посетителя(