Добавление невидимых пользовательских полей в API

:bookmark: Это руководство объясняет, как предоставлять данные пользовательских полей через API, не отображая их на карточке пользователя.>

:person_raising_hand: Требуемый уровень доступа: Администратор

Это руководство проведет вас через процесс предоставления доступа к данным пользовательских полей через API без их отображения на карточке пользователя. Это может быть полезно, когда вам нужно программно получать доступ к пользовательским данным, сохраняя их скрытыми от общего просмотра.

Создание пользовательского поля

  1. Сначала создайте пользовательское поле. Подробные инструкции см. в руководстве по созданию и настройке пользовательских полей.
  2. После настройки сохраните поле.

Поиск ID пользовательского поля

  1. Перейдите по адресу /admin/config/user-fields.json в вашем браузере.
  2. Найдите только что созданное пользовательское поле и запишите его ID.

Настройка доступа через API

  1. Перейдите в настройки администратора вашего сайта.
  2. Найдите параметр public user custom fields (публичные пользовательские поля) или staff user custom fields (пользовательские поля для сотрудников):
    • Используйте public user custom fields, если хотите, чтобы данные были доступны всем пользователям API.
    • Используйте staff user custom fields, если хотите ограничить доступ только для ключей API сотрудников.
  3. Введите имя пользовательского поля в формате user_field_X, где X — это ID, который вы записали ранее.
    Например, если ID вашего пользовательского поля равен 7, введите user_field_7.

Доступ к данным пользовательского поля

После настройки данные пользовательского поля будут включены в эндпоинт /u/[USERNAME].json в разделе “User Fields” (Пользовательские поля).

Поиск пользователей по значениям пользовательских полей

Вы можете искать пользователей по значениям их пользовательских полей с помощью API:

  1. Убедитесь, что в настройках пользовательского поля отмечена опция “searchable” (доступно для поиска).
  2. Используйте эндпоинт /directory_items.json с необходимыми параметрами запроса.

Вот пример вызова API:

https://yourdomain.com/directory_items.json?period=weekly&order=likes_received&name=SearchTerm&user_field_ids=1|2
  • user_field_ids: Укажите, какие пользовательские поля нужно искать (например, user_field_ids=5 для поиска только в поле с ID 5).
  • name: Поисковый термин для поиска в пользовательских полях, именах пользователей и, возможно, полных именах.

Примечание: Этот поиск не ограничивается только пользовательскими полями и может возвращать результаты на основе совпадений имени пользователя или полного имени.

Для получения дополнительной информации о доступных параметрах обратитесь к документации API.

Дополнительные ресурсы

7 лайков

Отлично, спасибо! Есть ли способ найти пользователя по значению в пользовательском поле через API?

1 лайк

Да, используя параметры запроса:

Например,
https://unicyclist.com/directory_items.json?period=weekly&order=likes_received&name=Flansberrium+G29&user_field_ids=1|2

Ограничьте поиск по пользовательским полям, изменив последний параметр user_field_ids=1|2.
Например, user_field_ids=5 для поиска только в пользовательском поле с ID 5.

Также доступно несколько других параметров, которые вы можете найти в документации API (документация не упоминает пользовательские поля, но вы можете легко провести реверс-инжиниринг API).

Пользовательское поле (поля) должно иметь отмеченную опцию «Доступно для поиска», чтобы запрос работал:

Также обратите внимание, что запрос будет искать не только в пользовательских полях, но и в именах пользователей, а возможно, и в полных именах. На мой взгляд, встроенной функции для фильтрации только по пользовательским полям не существует.

3 лайка