插件配置
插件配置定义元值的允许/拒绝列表

定义元值的允许/拒绝列表

我们可以通过从对应类型查询 metaValue(单个值)和 metaValues(值数组)字段,来获取自定义文章、用户、评论及分类法(标签和分类)的元值:

  • Post.metaValue
  • Post.metaValues
  • GenericCustomPost.metaValue
  • GenericCustomPost.metaValues
  • User.metaValue
  • User.metaValues
  • Comment.metaValue
  • Comment.metaValues
  • PostTag.metaValue
  • PostTag.metaValues
  • PostCategory.metaValue
  • PostCategory.metaValues
  • GenericTag.metaValue
  • GenericTag.metaValues
  • GenericCategory.metaValue
  • GenericCategory.metaValues

我们还可以通过输入字段 metaQuery,基于元数据对自定义文章、用户、评论及分类法(标签和分类)的结果进行筛选。

无论是查询还是筛选,元值可以是公开的,也可以是私有的。例如,用户元数据中包含 wp_capabilities 条目,该条目是私有的,而 description 是公开的。另外,last_name 可能根据应用程序的不同而是公开或私有的。

Gato GraphQL 插件不强制规定哪些元键是公开的、哪些是私有的;这必须经过明确配置。默认情况下,允许的元键列表为空。

元值响应

当查询在对应设置页面中未被允许访问的元键时,查询将返回错误。

例如,执行以下查询:

{
  post(by: { id: 1 }) {
    id
    metaValue(key: "nothingHere")
  }
}

返回:

{
  "errors": [
    {
      "message": "There is no meta with key 'nothingHere'",
      "extensions": {
        "type": "Post",
        "id": 1,
        "field": "metaValue(key:\"nothingHere\")"
      }
    }
  ],
  "data": {
    "post": {
      "id": 1,
      "metaValue": null
    }
  }
}

如果查询对象不存在该元键,或其值为空,则响应为 null。否则,响应为元值。

配置允许的元键

以下是「Custom Post Meta」模块的说明。Users、Comments 和 Taxonomies 模块的操作步骤类似。

我们必须配置可通过元字段查询的元键列表。

每个条目可以是:

  • 正则表达式(regex),如果被 /# 包围,或者
  • 完整的元键,否则

例如,以下任意条目均可匹配元键 "_edit_last"

  • _edit_last
  • /_edit_.*/
  • #_edit_([a-zA-Z]*)#

此配置可在以下两个位置进行,按优先级排序:

  1. 自定义:在对应的 Schema Configuration 中
  2. 常规:在设置页面中

在应用于端点的 Schema Configuration 中,选择选项 "Use custom configuration",然后输入所需条目:

在 Schema Configuration 中定义条目

否则,将使用设置中「Schema Custom Post Meta」选项卡中定义的条目:

在设置中定义条目
在设置中定义条目

共有两种行为,「Allow access」和「Deny access」:

  • Allow access: 只有已配置的条目可以被访问,其他条目均不可访问
  • Deny access: 已配置的条目无法被访问,所有其他条目均可访问
定义访问行为
定义访问行为