Расширение

Schema Functions

Открывайте возможности языка программирования PHP через поля и директивы GraphQL.

Logo
Target Image

Click to watch tutorial video - 07:54

Схема GraphQL обогащается полями и директивами, открывающими возможности языка программирования PHP.

Функциональные поля

Функциональные поля являются глобальными, поэтому они добавляются во все типы схемы GraphQL: в QueryRoot, а также в Post, User и др.

Функциональные поля полезны для работы с данными после их получения — они позволяют преобразовывать значение поля любым необходимым способом и предоставляют мощные возможности импорта и экспорта данных.

Например, хотя у нас есть поле Post.hasComments, может потребоваться противоположное значение. Вместо создания нового поля Post.notHasComments (для чего потребовалось бы редактировать PHP-код) можно использовать функцию Field to Input, чтобы передать значение из hasComments в поле not и вычислить новое значение прямо внутри запроса GraphQL:

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

Функциональные директивы

Схема GraphQL обогащается директивами, открывающими функциональность, типичную для языков программирования (таких как PHP).

Директивные поля полезны для работы с данными после их получения — они позволяют преобразовывать значение поля любым необходимым способом и предоставляют мощные возможности импорта и экспорта данных.

Например, этот запрос:

query {
  posts {
    title @strUpperCase
  }
}

...вернёт следующий ответ:

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

Вспомогательные поля

В схему GraphQL добавляются поля, предоставляющие часто используемую вспомогательную функциональность.

Вспомогательные поля являются глобальными, поэтому они добавляются во все типы схемы GraphQL: в QueryRoot, а также в Post, User и др.

В этом запросе мы получаем идентификаторы пользователей сайта и выполняем новый GraphQL-запрос, передавая их ID в качестве параметра:

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, но также возможно определённой в другом месте).

Этот запрос извлекает константу окружения GITHUB_ACCESS_TOKEN, которую можно настроить для доступа к приватному репозиторию на GitHub:

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

Отправка электронной почты

Схема GraphQL обогащается глобальной мутацией _sendEmail.

Мутация _sendEmail отправляет электронные письма, вызывая функцию WordPress wp_mail. В результате будет использована конфигурация отправки электронной почты, заданная в WordPress (например, выбранный SMTP-провайдер).

Письмо может быть отправлено с типом содержимого «text» или «HTML» — в зависимости от значения входного параметра messageAs (который является InputObject типа «oneof», поэтому можно указать только одно из его свойств).

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

Купить пакет All-Inclusive

Личный
$79
/год
“All-Inclusive” пакет
Лицензия на 1 домен
Купить ->
  • 1 домен
  • Поддержка
  • Обновления продукта
Организация
$99
/год
“All-Inclusive” пакет
Лицензия на 3 доменов
Купить ->
  • 3 доменов
  • Поддержка
  • Обновления продукта
Профессиональный
$199
/год
“All-Inclusive” пакет
Лицензия на 10 доменов
Купить ->
  • 10 доменов
  • Поддержка
  • Обновления продукта

Лицензия на 1 год (ежегодное продление). Цены в USD.

Нужно больше доменов? Свяжитесь с нами

Гарантия возврата денег в течение 30 дней

Покупайте любое расширение с уверенностью, что можете запросить возврат средств

Testimonial image

“Этот плагин — следующий уровень! Он выводит ваш сайт на совершенно новую орбиту и превращает его в настоящую машину. Чем больше вы исследуете его возможности, тем сильнее будете удивлены. Если сомневаетесь — просто берите: потом будете жалеть, что не взяли раньше! Документация говорит сама за себя и сделана на совесть. Лео (разработчик) — один из самых острых и сообразительных специалистов, с которыми мне приходилось иметь дело. Отвечает молниеносно и явно знает своё дело. Честно говоря, я в восторге от того, на что способен этот плагин. Возможности практически безграничны, и если вам важно SEO — этот инструмент поможет вашему сайту занять высокие позиции.”

olmate - Веб-разработчик

Подпишитесь на нашу рассылку

Будьте в курсе всех обновлений Gato GraphQL.