JetEngine
JetEngineJetEngine CCTS

JetEngine CCTS

Integratie met de JetEngine-plugin van Crocoblock.

Het GraphQL-schema bevat velden om Custom Content Type (CCT)-gegevens op te vragen.

Rootvelden

VeldBeschrijving
jetengineCCTEntriesGeeft een lijst van CCT-vermeldingen terug (type JetEngineCCTEntry).
jetengineCCTEntryCountGeeft het aantal CCT-vermeldingen terug.
jetengineCCTEntryGeeft een enkele CCT-vermelding terug (type JetEngineCCTEntry).

De CCT-slug moet worden opgegeven via het argument slug (de CCT moet als opvraagbaar worden ingesteld in de plugin-instellingen, zie hieronder).

Type JetEngineCCTEntry

Bij het type JetEngineCCTEntry kun je veldwaarden opvragen via:

VeldBeschrijving
idHet database-ID van de vermelding.
uniqueIDEen unieke identificator voor de vermelding, samengesteld uit de CCT-slug en het ID van de vermelding.
cctSlugDe slug van de CCT waartoe deze vermelding behoort.
statusDe status van de vermelding (bijv. publish, draft).
createdDateWanneer de vermelding is aangemaakt.
createdDateStrDe aanmaakdatum van de vermelding, opgemaakt als een string.
modifiedDateWanneer de vermelding voor het laatst is gewijzigd.
modifiedDateStrDe datum van de laatste wijziging van de vermelding, opgemaakt als een string.
authorIDHet ID van de auteur van de vermelding.
authorHet verbindingsobject van de auteurgebruiker.
singleCustomPostIDHet ID van de gekoppelde enkele aangepaste post, indien aanwezig.
singleCustomPostHet verbindingsobject van de gekoppelde enkele aangepaste post.
fieldValuesEen JSON-object met alle CCT-velden voor die vermelding.
fieldValue(slug)Om een enkel veld op te vragen via slug.

CCT-veldwaarden

Waarden van fieldValue(slug) en van elke sleutel in fieldValues worden omgezet volgens het veldtype dat in de CCT is gedefinieerd.

Impliciete ID-velden (altijd omgezet naar int wanneer aanwezig en niet leeg): id, singleCustomPostID, authorID.

Hoe elk CCT-veldtype wordt omgezet in de GraphQL-respons:

Text (standaard): Ongewijzigd (string of zoals opgeslagen).
Number: float bij decimaal punt; anders int.
Switcher: Boolean; true voor 1, true, yes, on (niet hoofdlettergevoelig).
Media: "ID" → int; "Both" → object { id, url }; anders ongewijzigd.
Gallery: Door komma's gescheiden of array van ID's → int[].
Checkbox: Array; als het veld van het "array-type" is → lijst met waarden; anders object met sleutels.
Posts: Enkel → int; meerdere → int[].
Repeater: Array van rijen; subvelden worden recursief omgezet op basis van type.

Het onderstaande voorbeeld gebruikt een CCT met slug "sample_cct" en velden van verschillende typen (text, number, gallery, enz.).

Velden van een CCT
Velden van een CCT

Bij het uitvoeren van de volgende query:

query JetEngineCCTEntries {
  jetengineCCTEntry(cctSlug: "sample_cct", by: { id: 1 }) {
    label_text: fieldValue(slug: "label_text")
    textarea: fieldValue(slug: "textarea")
    date: fieldValue(slug: "date")
    time: fieldValue(slug: "time")
    datetime: fieldValue(slug: "datetime")
    wysisyg: fieldValue(slug: "wysisyg")
    switcher: fieldValue(slug: "switcher")
    checkbox: fieldValue(slug: "checkbox")
    checkbox_array: fieldValue(slug: "checkbox_array")
    iconpicker: fieldValue(slug: "iconpicker")
    media_id: fieldValue(slug: "media_id")
    media_url: fieldValue(slug: "media_url")
    media_array: fieldValue(slug: "media_array")
    gallery: fieldValue(slug: "gallery")
    radio: fieldValue(slug: "radio")
    repeater: fieldValue(slug: "repeater")
    options_select: fieldValue(slug: "options_select")
    options_multiple_select: fieldValue(slug: "options_multiple_select")
    number: fieldValue(slug: "number")
    colorpicker: fieldValue(slug: "colorpicker")
    post: fieldValue(slug: "post")
    posts: fieldValue(slug: "posts")
  }
}

...wordt elk veld in de respons omgezet naar het bijbehorende CCT-type:

{
  "data": {
    "jetengineCCTEntry": {
      "label_text": "Some label",
      "textarea": "Some description here\r\n\r\nSome description there",
      "date": "2026-01-24",
      "time": "09:13",
      "datetime": "2026-03-07T08:00",
      "wysisyg": "<p>Some <strong>description</strong> here</p>\n<p><em>Some description</em> there</p>\n<p>Some <a href=\"https://gatoplugins.com\">link</a></p>\n",
      "switcher": true,
      "checkbox": {
        "one": true,
        "two": false,
        "three": true
      },
      "checkbox_array": [
        "one",
        "two"
      ],
      "iconpicker": "fa fa-road",
      "media_id": 1362,
      "media_url": "https://gatographql.com/wp-content/uploads/GatoGraphQL-logo.webp",
      "media_array": {
        "id": 1380,
        "url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg"
      },
      "gallery": [
        1361,
        1362,
        1363
      ],
      "radio": "1",
      "repeater": [
        {
          "label_(text)": "First item in repeater",
          "date": "2026-01-17",
          "time": "11:00",
          "datetime": "2026-01-16T11:16",
          "textarea": "Gato GraphQL provides a multitude of interactive clients,",
          "wysiwyg": "<p>Gato GraphQL provides a <strong>multitude of interactive clients</strong>, and a user interface based on the <a href=\"https://wordpress.org\">WordPress editor</a>, so that anybody can operate it, whether a developer or not.</p>\n",
          "switcher": true,
          "iconpicker": "fa fa-inbox",
          "media_id": 1361,
          "media_url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg",
          "media_array": {
            "id": 1380,
            "url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg"
          },
          "gallery": [
            1363,
            1361
          ],
          "radio": "two",
          "options_select": "three",
          "options_multiple_select": [
            "two",
            "four"
          ],
          "number": 22,
          "colorpicker": "#757575",
          "post": 1140,
          "posts": [
            1,
            2
          ]
        },
        {
          "label_(text)": "Second item in repeater",
          "date": "2026-01-15",
          "time": "00:18",
          "datetime": "2026-01-18T00:00",
          "textarea": "These clients make it very easy to interact with Gato GraphQL",
          "wysiwyg": "<p>These clients <strong>make it very easy to interact with Gato GraphQL</strong>, directly within the <em>wp-admin</em> (and without the need of any PHP code), reducing friction and removing barriers so that anyone (developers and non-developers alike) can use it.</p>\n",
          "switcher": false,
          "iconpicker": "fa fa-search-plus",
          "media_id": 1362,
          "media_url": "https://gatographql.com/wp-content/uploads/LICENSE.txt",
          "media_array": {
            "id": 1363,
            "url": "https://gatographql.com/wp-content/uploads/LICENSE.txt"
          },
          "gallery": [
            1380,
            1361,
            1362
          ],
          "radio": "three",
          "options_select": "three",
          "options_multiple_select": [
            "three"
          ],
          "number": 4469,
          "colorpicker": "#2d2270",
          "post": 2,
          "posts": [
            1688,
            1682
          ]
        }
      ],
      "options_select": "1",
      "options_multiple_select": [
        "one",
        "two",
        "five"
      ],
      "number": 66778899,
      "colorpicker": "#721abf",
      "post": 1,
      "posts": [
        1140,
        1113
      ]
    }
  }
}

Dezelfde type-omzetting geldt voor elk veld in de JSON die door fieldValues wordt teruggegeven:

query JetEngineCCTEntries {
  jetengineCCTEntry(cctSlug: "sample_cct", by: { id: 1 }) {
    fieldValues
  }
}

...wat het volgende teruggeeft:

{
  "data": {
    "jetengineCCTEntry": {
      "fieldValues": {
        "label_text": "Some label",
        "textarea": "Some description here\r\n\r\nSome description there",
        "date": "2026-01-24",
        "time": "09:13",
        "datetime": "2026-03-07T08:00",
        "wysisyg": "<p>Some <strong>description</strong> here</p>\n<p><em>Some description</em> there</p>\n<p>Some <a href=\"https://gatoplugins.com\">link</a></p>\n",
        "switcher": true,
        "checkbox": {
          "one": true,
          "two": false,
          "three": true
        },
        "checkbox_array": [
          "one",
          "two"
        ],
        "iconpicker": "fa fa-road",
        "media_id": 1362,
        "media_url": "https://gatographql.com/wp-content/uploads/GatoGraphQL-logo.webp",
        "media_array": {
          "id": 1380,
          "url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg"
        },
        "gallery": [
          1361,
          1362,
          1363
        ],
        "radio": "1",
        "repeater": [
          {
            "label_(text)": "First item in repeater",
            "date": "2026-01-17",
            "time": "11:00",
            "datetime": "2026-01-16T11:16",
            "textarea": "Gato GraphQL provides a multitude of interactive clients,",
            "wysiwyg": "<p>Gato GraphQL provides a <strong>multitude of interactive clients</strong>, and a user interface based on the <a href=\"https://wordpress.org\">WordPress editor</a>, so that anybody can operate it, whether a developer or not.</p>\n",
            "switcher": true,
            "iconpicker": "fa fa-inbox",
            "media_id": 1361,
            "media_url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg",
            "media_array": {
              "id": 1380,
              "url": "https://gatographql.com/wp-content/uploads/Funny-Dog.jpg"
            },
            "gallery": [
              1363,
              1361
            ],
            "radio": "two",
            "options_select": "three",
            "options_multiple_select": [
              "two",
              "four"
            ],
            "number": 22,
            "colorpicker": "#757575",
            "post": 1140,
            "posts": [
              1,
              2
            ]
          },
          {
            "label_(text)": "Second item in repeater",
            "date": "2026-01-15",
            "time": "00:18",
            "datetime": "2026-01-18T00:00",
            "textarea": "These clients make it very easy to interact with Gato GraphQL",
            "wysiwyg": "<p>These clients <strong>make it very easy to interact with Gato GraphQL</strong>, directly within the <em>wp-admin</em> (and without the need of any PHP code), reducing friction and removing barriers so that anyone (developers and non-developers alike) can use it.</p>\n",
            "switcher": false,
            "iconpicker": "fa fa-search-plus",
            "media_id": 1362,
            "media_url": "https://gatographql.com/wp-content/uploads/LICENSE.txt",
            "media_array": {
              "id": 1363,
              "url": "https://gatographql.com/wp-content/uploads/LICENSE.txt"
            },
            "gallery": [
              1380,
              1361,
              1362
            ],
            "radio": "three",
            "options_select": "three",
            "options_multiple_select": [
              "three"
            ],
            "number": 4469,
            "colorpicker": "#2d2270",
            "post": 2,
            "posts": [
              1688,
              1682
            ]
          }
        ],
        "options_select": "1",
        "options_multiple_select": [
          "one",
          "two",
          "five"
        ],
        "number": 66778899,
        "colorpicker": "#721abf",
        "post": 1,
        "posts": [
          1140,
          1113
        ]
      }
    }
  }
}

Toegang verlenen tot CCT's

Standaard zijn geen CCT's opvraagbaar.

Om toegang te verlenen tot een CCT, moet de CCT als opvraagbaar worden ingesteld in de plugin-instellingen.

Er zijn 2 plaatsen waar deze configuratie kan worden uitgevoerd, in volgorde van prioriteit:

  1. Aangepast: In de bijbehorende Schemaconfiguratie
  2. Algemeen: Op de pagina Instellingen

Selecteer in de Schemaconfiguratie die op het endpoint is toegepast de optie Aangepaste configuratie gebruiken en voer daarna de gewenste vermeldingen in:

De opvraagbare CCT's definiëren in de Schemaconfiguratie
De opvraagbare CCT's definiëren in de Schemaconfiguratie

Anders worden de vermeldingen gebruikt die zijn gedefinieerd in de optie Queryable JetEngine CCTS onder de sectie JetEngine CCTS in de Instellingen:

De opvraagbare CCT's definiëren in de Instellingen
De opvraagbare CCT's definiëren in de Instellingen

Voorbeeldqueries

CCT-vermeldingen weergeven:

query {
  jetengineCCTEntries(cctSlug: "sample_cct") {
    id
    uniqueID
    cctSlug
    status
    createdDate
    modifiedDate
    authorID
    author {
      id
      name
    }
    singleCustomPostID
    singleCustomPost {
      id
      title
    }
    fieldValues
    someField: fieldValue(slug: "some_field_slug")
  }
}

Enkele CCT-vermelding op basis van slug en ID:

query {
  jetengineCCTEntry(cctSlug: "sample_cct", by: { id: 1 }) {
    id
    uniqueID
    cctSlug
    status
    createdDate
    modifiedDate
    author {
      id
      name
    }
    singleCustomPost {
      id
      title
    }
    fieldValues
    someField: fieldValue(slug: "some_field_slug")
  }
}

CCT-vermeldingen weergeven en tellen met filter, paginering en sortering:

query {
  jetengineCCTEntryCount(
    cctSlug: "sample_cct"
    filter: { search: [{ field: "cct_author_id", value: 1, operator: EQUALS }] }
  )
  jetengineCCTEntries(
    cctSlug: "sample_cct"
    filter: { search: [{ field: "cct_author_id", value: 1, operator: EQUALS }] }
    pagination: { limit: 10, offset: 0 }
    sort: { by: "cct_created", order: DESC }
  ) {
    id
    authorID
  }
}