wp-graphql/wpgraphql-acf

使用高级自定义字段(ACF)的字段组和字段来增强您的 WPGraphQL API

安装数: 2,030

依赖项: 0

建议者: 0

安全: 0

星标: 82

关注者: 6

分支: 12

开放性问题: 40

类型:wordpress-plugin

v2.4.1 2024-07-25 18:31 UTC

README

WPGraphQL for ACF plugin banner

WPGraphQL for Advanced Custom Fields 是一个免费、开源的 WordPress 插件,它将 ACF 字段和字段组添加到 WPGraphQL 架构中。

该插件现在可在 WordPress.org 上使用!

此插件的开发得以由 WP Engine Atlas 支持。

了解更多信息,请访问 https://acf.wpgraphql.com

目录

升级通知

如果您正在从 WPGraphQL for ACF v0.6.* 或更早版本升级,请查看 升级指南

插件概述

简而言之,WPGraphQL for ACF 通过添加 GraphQL 类型、GraphQL 接口和 GraphQL 字段来扩展 WPGraphQL 架构,以便访问由高级自定义字段(ACF)管理的数据。

WPGraphQL for ACF 支持 ACF 免费版和 ACF PRO 内置的字段类型,以及 ACF Extended 免费版和 Pro 版。

此插件扩展了 ACF 管理界面,提供设置以将 ACF 文章类型、分类、字段组和字段添加到 WPGraphQL 架构。对于使用 PHP 或 JSON 注册 ACF 字段组和字段的用户,您还可以控制它们如何映射到 GraphQL 架构。

以下是一些 API,用于确定每个 ACF 字段类型如何映射到 WPGraphQL '架构,并在 GraphQL 查询中查询时如何解析。

该插件提供钩子和过滤器,允许开发者自定义体验并覆盖默认逻辑。

要求

安装和激活

请参阅我们的 安装和激活指南

WPGraphQL for ACF 如何将字段组映射到架构

每个 ACF 字段组都通过 GraphQL 接口类型和 GraphQL 对象类型映射到 GraphQL 架构,以表示字段组。

接口类型将所有设置为“在 GraphQL 中显示”的字段组的字段添加到架构中,并由对象类型实现。

当字段组分配到位置(例如,“文章类型等于文章”)时,WPGraphQL 将尝试根据位置规则确定如何在架构中正确显示字段组。(存在管理员界面设置以覆盖字段组应在其中显示的 GraphQL 类型,这也可以在 PHP/JSON 注册的字段组中完成)

连接到 ACF 字段组的每个 GraphQL 类型都将应用一个名为“WithACf${GraphQLTypeName}”的接口。

为了说明这一点,让我们从一个基本示例开始

假设我们有一个名为“我的字段组”的ACF字段组,该字段组包含一个名为“文本”的“文本”字段,并且位置规则设置为在“文章”文章类型中显示。

在启用WPGraphQL for ACF后,我们可以在字段组的设置中将字段组设置为“在GraphQL中显示”,并将“GraphQL类型名称”设置为“MyFieldGroup”。

这将导致GraphQL模式发生以下变化

  • 将注册一个名为"MyFieldGroup_Fields"的GraphQL接口类型到Schema中
    • 此接口类型将有一个“文本”字段,类型为“String”,表示ACF字段组中的“文本”字段
  • 将注册一个名为"MyFieldGroup"的GraphQL对象类型到Schema中
    • 此对象类型将实现"MyFieldGroup_Fields"接口
    • 此对象类型将实现"AcfFieldGroup"接口(所有ACF字段组都实现此接口)
  • 将向Schema中添加一个接口WithAcfMyFieldGroup
    • 此接口将有一个字段myFieldGroup,它解析为类型MyFieldGroup
  • “文章”类型现在将实现WithAcfMyFieldGroup接口
    • 这是由字段组的位置规则决定的。由于此字段组被分配给“文章”文章类型,因此“文章”类型实现了该接口。

现在,我们可以编写一个如下所示的片段

fragment MyFieldGroup on WithAcfMyFieldGroup {
  myFieldGroup {
    text
  }
}

然后我们可以在各种查询中使用此片段,例如

{
  nodeByUri(uri:"/my-test-page") {
    __typename
    id
    uri
    ...MyFieldGroup
  }
}

ACF 文章类型和分类支持

高级自定义字段v6.1添加了对从WordPress仪表板注册文章类型和分类的支持。

WPGraphQL for ACF允许您配置要显示在GraphQL中的自定义文章类型和分类,并允许您自定义GraphQL单数名称和复数名称。

常见问题解答

这与ACF扩展兼容吗?

是的!WPGraphQL for ACF允许您查询由ACF扩展创建的(大多数)字段。

我可以用WPGraphQL for ACF通过ACF字段过滤和排序查询吗?

目前,WPGraphQL for ACF不支持通过ACF字段过滤或排序查询。“元查询”通常执行成本很高,所以我们目前不支持过滤ACF字段,但正在探索在不影响性能的情况下支持它的选项。

我觉得我找到了一个bug,我在哪里报告它?

如果您认为您找到了一个bug,请在此GitHub上创建一个问题。您在问题中提供的信息越详细,以及您复现问题的步骤越清晰,我们能够帮助您的可能性就越高。

我可以使用ACF免费版或专业版与WPGraphQL for ACF一起使用吗?

是的!WPGraphQL for ACF与ACF免费版和专业版配合得很好。ACF的专业版有一些额外的功能,例如灵活的内容字段、重复字段和选项页面,这些功能都由WPGraphQL for ACF支持。

我必须使用Faust.js才能使用WPGraphQL for ACF吗?

不!虽然wpgraphql.comacf.wpgraphql.com都是使用Faust.js和Next.js构建的,但您可以使用任何GraphQL客户端使用WPGraphQL for ACF,包括Apollo、Relay、Urql等。

我有一个添加新字段类型的ACF扩展,它是否会与之兼容?

WPGraphQL for ACF支持ACF(免费版和专业版)随附的字段类型以及ACF扩展(免费版和专业版)中的字段类型。可以通过使用“register_graphql_acf_field_type”API添加对其他字段类型的支持。

我需要WPGraphQL和ACF都处于活动状态才能使用此插件吗?

此插件是一个“桥接”插件,将ACF的功能引入WPGraphQL。为了使此插件正常工作,WPGraphQL和ACF都需要在您的WordPress安装中安装并处于活动状态。

WPGraphQL for ACF的价格是多少?

WPGraphQL for ACF 是一款免费的开源插件。其开发由 WP Engine Atlas 赞助。

WPGraphQL for ACF 支持GraphQL突变吗?

GraphQL突变尚未支持。我们正在努力在将来添加对突变的支持。在添加对突变的支持之前,我们正在等待GraphQL的"@oneOf"指令被合并到GraphQL规范中。

它是否与在PHP或JSON中注册的字段组兼容?

是的!您可以使用管理界面、PHP或JSON注册ACF字段组和字段。WPGraphQL for ACF 将检测字段组和字段并将它们添加到GraphQL模式中。如果使用PHP或JSON,您需要将"show_in_graphql"设置设置为"true",以便将字段组和字段公开给GraphQL模式。可能还有其他需要关注的字段组或字段级别的设置,可能会影响模式或字段解析。

支持

  • 一般帮助请求:对于一般问题和帮助请求,在GitHub讨论中创建一个新主题。
  • Discord社区:WPGraphQL Discord 是实时沟通的好地方。提问、讨论功能、了解其他使用WPGraphQL的人。
  • 错误报告:在WPGraphQL中报告错误。
  • 功能请求:为WPGraphQL提出想法、功能或改进建议。
  • 报告安全漏洞:报告安全漏洞。

隐私政策

WPGraphQL for Advanced Custom Fields 使用 Appsero SDK 在用户确认后收集一些遥测数据。这有助于我们更快地解决问题并改进产品。

Appsero SDK 默认不收集任何数据。 SDK 仅在用户通过管理通知允许时开始收集基本遥测数据。我们收集数据以确保所有用户的良好用户体验。

集成Appsero SDK 不会立即开始收集数据,在任何情况下都不需要用户确认。

了解更多关于 Appsero如何收集和使用这些数据 的信息。