За последние 24 часа нас посетили 15974 программиста и 1574 робота. Сейчас ищут 664 программиста ...

Получение данных пользователя из wp_usermeta

Тема в разделе "PHP и базы данных", создана пользователем Domenys, 26 апр 2018.

  1. Domenys

    Domenys Новичок

    С нами с:
    26 апр 2018
    Сообщения:
    3
    Симпатии:
    0
    Всем привет. Очень нужна помощь, долго искал в интернете, но так и не нашёл.
    Я понял, как получать данные пользователя из таблицы wp_users. В ней все данные о пользователе находятся в одной строчке. Но в usermeta данные об одном пользователе идут уже не в строчку, а в столбик. Не знаю во всех БД так или нет (я использую связку wordpress и woocommerce), поэтому прилагаю скриншот.
    Такая функция, как get_user_by может получить данные о пользователе по ID, nicename, почте или логину; get_userdata вообще только по ID.
    Но можно ли как-то аналогично приведённым выше способам или другими методами получить информацию о пользователе через его first_name и last_name. Т. е. хотелось бы добавить на сайт форму, в которую вводится имя и фамилия, а функция ищет данные о пользователе в wp_usermeta и выводит их, минуя id?
     

    Вложения:

  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Domenys, ознакомьтесь: Явные операции соединения.
    Из одной таблицы берёте id пользователя, из другой - "привязанные" к нему данные.
    Для начала можете, конечно, последовательно выполнить две выборки - в одной получить тот самый id пользователя, а в другой - остальные (мета)данные.
    А для работы с базой данных в WP существует wpdb{}
     
  3. Domenys

    Domenys Новичок

    С нами с:
    26 апр 2018
    Сообщения:
    3
    Симпатии:
    0
    Спасибо большое за ответ.
    Я пока только начинаю разбираться в php и mysql, поэтому пока сложновато разобраться во всём этом. Особенно сложно понять статью "Явные операции соединения". Для меня эта статья пока слишком сложна.
    Про wpdb{} я слышал, но пока его не изучал. Сейчас попытаюсь изучить, надеюсь используя только этот класс и его запросы можно получить то, что я хочу.
    А вот насчёт поиска у меня вопрос. Как я понял порядок такой: Через display_name таблицы wp_users получить id этого пользователя->Связать этот ID с аналогичным ID в таблице wp_usermeta->И уже тогда выводить необходимую информацию связанную с этим ID в wp_usermeta. Но тут возникают три вопроса:
    1) ID в wp_users является первичным ключом, а ID в wp_usermeta нет. Это очень важно или всё равно можно будет связать их?
    2) В wp_users вся информация о пользователе содержится в одной строке, а вот в wp_usermeta нет, там более 10 строк на одного пользователя и каждая строчка содержит значение о данном пользователе. Может ли это доставить проблемы при поиске?
    3) Вот что мне нужно: есть форма, в которой есть два поля input, с именем и фамилией. Если вводится имя и фамилия, то ищется подходящий человек. А вот если в одну из ячеек вводится значение имени/фамилии, а другая остаётся пустой, то происходит поиск и вывод всех подходящих пользователей(Всех Иванов или всех Петровых). Но если начало идёт от таблицы wp_users, то там нет ячеек с first_name и last_name, а просто display_name. Если я правильно понял, то если я введу через пробел имя и фамилию, то функция сможет найти пользователя в display-name, но вот если, допустим, только фамилию, то ответ будет пустым?
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Domenys
    1 - Можно будет. id из таблицы пользователей и user_id из метаданных пользователей.
    2 - Нет. Обычная связь таблиц один-ко-многим (подробнее о связях между таблицами/сущностями)
    3 - Раз уж заданием предусмотрен поиск по имени и фамилии, то логично искать сразу в таблице метаданных, в которой есть и имя и фамилия (то есть, должны быть заполнены). display_name в таблице пользователей, очевидно, просто ник (псевдоним).
    Впрочем, вот вариант: How can I search for a worpress user by...
     
  5. Domenys

    Domenys Новичок

    С нами с:
    26 апр 2018
    Сообщения:
    3
    Симпатии:
    0
    Большое спасибо за ответ и советы)) Получилось всё сделать и много новых знаний получил. Спасибо))