Как в 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 — то значит мы подключились в нужное место, осталось вывести нужные данные. Вы какие поля хотите вывести(от бадипресс или вордпресовские)?

    в 04.07.2016.

    Я бы хотела от бадипресс вывести, но у меня стоит галка в синхронизации (http://prntscr.com/boprr8)
    На самом деле у меня и это получилось:

    // данные о пользователе попробуйте получить так
    global $members_template;
    var_dump($members_template->member);
    (я просто ошиблась в синтаксисе)
    Но вывелось вот что: (http://prntscr.com/bopsyo), наверно имя переменной не такое как мне мне надо..?
    в 04.07.2016.

    На самом деле это объект с элементами к которым можно обращаться, например:

     add_action('bp_directory_members_actions', function() {
     global $members_template;
     echo 'Email: ' . $members_template->member->user_email;
     });
     

     

    в 05.07.2016.

    Спасибо) имейл выводит, но вопрос все еще остался:
    а как узнать название элемента (к которому я хочу обратиться) под которым сохраняются данные, когда пользователь заполняет свой профиль?
    иными словами, как мне понять что писать в эту строчку . $members_template->member->user_email; , если я хочу вывести любое другое произвольное поле?

    в 05.07.2016.

    На самом деле, все было еще в первом ответе.

    
    global $members_template;
    var_dump($members_template->member);
    
    

    Вы присылали картинку где выводится много символов. Вот если присмотреться там есть [‘user_email’] — и мы обращаемся:

    $members_template->member->user_email

    Для того что бы данный код выглядел более наглядно, нажмите на сайте правой кнопкой мыши и выбирите «Исходный код страницы» — там эти объекты будут выглядеть более наглядно.

    в 06.07.2016.
    Добавить Комментарий

    К сожалению, среди тех данных нет нужных мне. Вот как это выглядит в исходном коде:
    http://prntscr.com/bpiw2d
    вот, о каком профиле идет речь:
    http://repetitor4you.ru/%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F/mishanya/
    и мне нужно вывести, например, тип экзамена, или, скажем предмет..

    так а где эти данные вы храните?

    в 06.07.2016.

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

    в 06.07.2016.

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

    в 08.07.2016.

    я создаю их в бадипресс инструментом — поля профиля, по идее здесь не должно быть неожиданностей

    в 08.07.2016.

    тогда так:

    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 на название вашего поля, то которое вы указывали при создании.

    в 09.07.2016.

    Да, спасибо, работает, один момент — как записывать названия полей, состоящих из двух и более слов?

    в 12.07.2016.

    Как вы их назвали так и записывать.

    в 12.07.2016.

    Тогда ошибка 500 на сайте

    в 12.07.2016.

    как вариант назвать заново поля на латинице без пробелов(или заменяя «_»)

    или попробовать пробелы заменить на знак + или %20

    в 13.07.2016.

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

    в 19.07.2016.

    Сделайте var_dump($XXX); когда у вас появляется надпись array.

    Если брали код что я написал что после echo $XXX;

    Что бы посмотреть что находится в массиве, который не выводится(надпись array).

     

    И еще пришли код того как вы выводите(оба варианта, рабочий и нет). И сделайте скриншот в админке ваших полей.

    в 19.07.2016.

    Прошу прощения за долгий ответ, слабый тип нервной деятельности, рыдала.
    Значит, вот:
    1. var_dump($XXX); — результат такой: http://prntscr.com/c423rq

    Т.е. он вывел что мне нужно, только не красиво.

    2. скрин кода когда он вывел этот результат (напомню, что поле «Тип экзамена» я переименовала в Ekz): http://prntscr.com/c424rv
    3.  код с латинским названием поля, где в качестве пробела знак «_» — работает точно также как и в п.1
    4. код с названием поля в русском варианте не работает.

    5. а вот скрин полей в админке (не всех): http://prntscr.com/c427i4

    в 10.08.2016.

    Рыдать не нужно.

    Попробуйте так:

     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(перебрать его элементы)

    в 11.08.2016.

    Да, спасибо, это работает)
    жаль только что переменная и поле анкеты одинаково называются( не могу же я в полях для регистрации преподавателей оставить латинские буквы, может быть есть какое то решение что бы поле анкеты было русским, а переменная куда это все записывается — латинской?

    в 11.08.2016.

    Не понял задачи. Не знаю что за анкеты и что у вас за регистрация. Можно подробнее.

    в 14.08.2016.

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

    в 21.08.2016.
    Добавить Комментарий

    Ваш ответ

    Размещая свой ответ, вы соглашаетесь с правилами сайта.