扩展

Schema Functions

通过 GraphQL 字段和指令公开 PHP 编程语言的功能。

Logo
Target Image

Click to watch tutorial video - 07:54

GraphQL 模式提供了字段和指令,用于公开 PHP 编程语言的功能。

函数字段

函数字段是全局字段,因此会被添加到 GraphQL 模式中的每一个类型:不仅包括 QueryRoot,还包括 PostUser 等。

函数字段在数据检索后对数据进行操作时非常有用,允许我们以任意方式转换字段值,并赋予我们强大的数据导入/导出能力。

例如,虽然我们有 Post.hasComments 字段,但有时我们需要其相反的值。与其创建新的 Post.notHasComments 字段(这需要编辑 PHP 代码),不如使用 Field to Input 功能将 hasComments 的值输入到 not 字段,从而始终在 GraphQL query 内计算新值:

query {
  posts {
    id
    hasComments
    notHasComments: _not(value: $__hasComments)
  }
}

函数指令

GraphQL 模式提供了指令,用于公开编程语言(如 PHP)中常见的功能。

指令字段在数据检索后对数据进行操作时非常有用,允许我们以任意方式转换字段值,并赋予我们强大的数据导入/导出能力。

例如,以下 query:

query {
  posts {
    title @strUpperCase
  }
}

...将产生如下响应:

{
  "data": {
    "posts": [
      {
        "title": "HELLO WORLD!"
      },
      {
        "title": "LOVELY WEATHER"
      }
    ]
  }
}

辅助字段

GraphQL 模式中添加了提供常用辅助功能的字段。

辅助字段是全局字段,因此会被添加到 GraphQL 模式中的每一个类型:不仅包括 QueryRoot,还包括 PostUser 等。

在以下 query 中,我们获取网站中用户的 ID,并以其 ID 作为参数执行新的 GraphQL query:

query {
  users {
    userID: id
    url: _urlAddParams(
      url: "https://somewebsite/endpoint/user-data",
      params: {
        userID: $__userID
      }
    )
    headers: _httpRequestHeaders
    headerNameValueEntryList: _objectConvertToNameValueEntryList(
      object: $__headers
    )
    _sendHTTPRequest(input: {
      url: $__url
      options: {
        headers: $__headerNameValueEntryList
      }
    }) {
      statusCode
      contentType
      body
    }
  }
}

环境字段

GraphQL 模式提供了全局字段 _env,允许从环境变量或 PHP 常量(最常见的是在 wp-config.php 中定义,但也可以在其他地方定义)中获取值。

以下 query 获取环境常量 GITHUB_ACCESS_TOKEN,该常量可用于访问 GitHub 上的私有仓库:

query {
  githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}

邮件发送

GraphQL 模式提供了全局 mutation _sendEmail

Mutation _sendEmail 通过执行 WordPress 的 wp_mail 函数发送邮件。因此,它将使用 WordPress 中配置的邮件发送设置(如使用的 SMTP 提供商)。

邮件可以以 "text" 或 "HTML" 内容类型发送,具体取决于 messageAs 输入的值(messageAs 是一个 "oneof" InputObject,因此只能提供其属性之一)。

mutation {
  _sendEmail(
    input: {
      to: "target@email.com"
      subject: "Email with text content"
      messageAs: {
        text: "Hello world!"
      }
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
  }
}

购买 All-Inclusive 套装

Personal
$79
/
“All-Inclusive” 套装
授权适用于 1 个域名
购买 ->
  • 1 个域名
  • 支持
  • 产品更新
Organization
$99
/
“All-Inclusive” 套装
授权适用于 3 个域名
购买 ->
  • 3 个域名
  • 支持
  • 产品更新
Professional
$199
/
“All-Inclusive” 套装
授权适用于 10 个域名
购买 ->
  • 10 个域名
  • 支持
  • 产品更新

授权有效期为 1 年(每年可续订)。价格以美元(USD)计。

需要更多域名?联系我们

30 天退款保证

购买任何扩展,均可申请退款保障

Features illustration
Money back guarantee

阅读我们的退款政策

Testimonial image

“这款插件真的是另一个层次!它能把你的网站提升到全新水平,变成一个强大的引擎。你越深入探索它的功能,就越会感到惊叹。如果你还在犹豫——赶紧入手吧,不然你以后会后悔的! 文档本身就说明了一切,扎实得不能再扎实。 Leo(开发者)是我遇到过的最敏锐、最全面的开发者之一。他的响应非常快,明显对自己的专业领域了如指掌。这款插件能做的事情之多,真的让我非常兴奋。可能性几乎无穷无尽,如果你重视 SEO,这款插件会让你的网站排名大幅提升。”

olmate - Web 开发者

订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。