Extensie

Schema Functions

Stel functionaliteiten van de PHP-programmeertaal beschikbaar via GraphQL-velden en -richtlijnen.

Logo
Target Image

Click to watch tutorial video - 07:54

Het GraphQL-schema is uitgebreid met velden en richtlijnen die functionaliteiten van de PHP-programmeertaal beschikbaar stellen.

Functievelden

Functievelden zijn globale velden en worden daarom aan elk type in het GraphQL-schema toegevoegd: in QueryRoot, maar ook in Post, User, enz.

Functievelden zijn handig voor het bewerken van gegevens nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.

Stel dat we een veld Post.hasComments hebben, maar de tegengestelde waarde nodig hebben. In plaats van een nieuw veld Post.notHasComments te maken (waarvoor je PHP-code zou moeten aanpassen), kun je de Field to Input-functie gebruiken om de waarde van hasComments door te geven aan een not-veld, zodat de nieuwe waarde altijd binnen de GraphQL-query wordt berekend:

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

Functierichtlijnen

Het GraphQL-schema is uitgebreid met richtlijnen die functionaliteiten beschikbaar stellen die veel voorkomen in programmeertalen (zoals PHP).

Richtlijnvelden zijn handig voor het bewerken van gegevens nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.

Bijvoorbeeld deze query:

query {
  posts {
    title @strUpperCase
  }
}

...geeft het volgende antwoord:

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

Helpervelden

Het GraphQL-schema is uitgebreid met velden die veelgebruikte helperfunctionaliteit bieden.

Helpervelden zijn globale velden en worden daarom aan elk type in het GraphQL-schema toegevoegd: in QueryRoot, maar ook in Post, User, enz.

In deze query halen we de ID's op van de gebruikers op de website en voeren we een nieuwe GraphQL-query uit waarbij we hun ID als parameter meegeven:

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
    }
  }
}

Omgevingsvelden

Het GraphQL-schema is uitgebreid met het globale veld _env, waarmee je een waarde kunt ophalen uit een omgevingsvariabele of uit een PHP-constante (meestal gedefinieerd in wp-config.php, maar ook elders te definiëren).

Deze query haalt de omgevingsconstante GITHUB_ACCESS_TOKEN op, die je kunt instellen om toegang te krijgen tot een privérepository op GitHub:

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

E-mailverzending

Het GraphQL-schema is uitgebreid met de globale mutatie _sendEmail.

De mutatie _sendEmail verstuurt e-mails door de WordPress-functie wp_mail uit te voeren. Daardoor maakt het gebruik van de configuratie die in WordPress is gedefinieerd voor het versturen van e-mails (zoals de te gebruiken SMTP-provider).

De e-mail kan worden verstuurd met het inhoudstype "text" of "HTML", afhankelijk van de waarde van de invoer messageAs (een "oneof" InputObject, zodat slechts één van de eigenschappen opgegeven kan worden).

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

All-Inclusive-pakket kopen

Persoonlijk
$79
/jaar
“All-Inclusive” pakket
Licentie voor 1 domein
Kopen ->
  • 1 domein
  • Ondersteuning
  • Productupdates
Organisatie
$99
/jaar
“All-Inclusive” pakket
Licentie voor 3 domeinen
Kopen ->
  • 3 domeinen
  • Ondersteuning
  • Productupdates
Professioneel
$199
/jaar
“All-Inclusive” pakket
Licentie voor 10 domeinen
Kopen ->
  • 10 domeinen
  • Ondersteuning
  • Productupdates

De licentie geldt voor 1 jaar (jaarlijks vernieuwbaar). Prijzen zijn in USD.

Meer domeinen nodig? Neem contact met ons op

30 dagen niet-goed-geld-teruggarantie

Koop elke extensie met de zekerheid dat je om terugbetaling kunt vragen

Testimonial image

“Deze plugin tilt je site naar een heel ander niveau en maakt er een krachtpatser van. Hoe meer je ontdekt wat hij kan, hoe indrukwekkender het wordt. Als je twijfelt — pak hem gewoon, je zult jezelf later nog vervloeken als je dat niet doet! De documentatie spreekt voor zich en is zo solide als het maar kan. Leo (de developer) is een van de scherpste en meest betrokken developers die ik ooit ben tegengekomen. Hij reageert supersnel en weet duidelijk waar hij het over heeft. Ik ben eerlijk gezegd helemaal blij met wat deze plugin allemaal kan. De mogelijkheden zijn vrijwel eindeloos, en als SEO voor jou telt, helpt dit ding je site flink omhoog in de zoekresultaten.”

olmate - Webdeveloper

Abonneer je op onze nieuwsbrief

Blijf op de hoogte van alle updates over Gato GraphQL.