向API添加不可见的用户自定义字段

:bookmark: 本指南介绍如何通过 API 公开用户自定义字段数据,而无需在用户卡片上显示。

:person_raising_hand: 所需用户级别:管理员

本指南将引导您完成通过 API 访问用户自定义字段数据的过程,而无需在用户卡片上显示。当您需要以编程方式访问自定义用户数据,同时又希望将其隐藏起来时,这将非常有用。

创建用户自定义字段

  1. 首先,创建您的用户自定义字段。有关详细说明,请参阅创建和配置用户自定义字段指南
  2. 设置好自定义字段后,请保存它。

查找用户自定义字段 ID

  1. 在浏览器中导航到 /admin/config/user-fields.json
  2. 找到您新创建的自定义字段并记下其 ID 号。

配置 API 访问

  1. 转到您站点的管理员设置。
  2. 找到 public user custom fieldsstaff user custom fields 设置:
    • 如果希望所有 API 用户都能访问数据,请使用 public user custom fields
    • 如果希望将访问权限限制为仅限管理员 API 密钥,请使用 staff user custom fields
  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)。

自定义字段必须勾选 searchable 选项才能使查询生效:

另外请注意,查询不会在自定义字段中搜索,也会在用户名和可能的全名中搜索。我认为没有内置功能可以只按自定义字段进行过滤。

3 个赞