{"id":29120,"date":"2020-01-13T02:59:31","date_gmt":"2020-01-13T10:59:31","guid":{"rendered":"https:\/\/kinsta.com\/?p=58518&#038;preview=true&#038;preview_id=58518"},"modified":"2023-10-20T11:02:00","modified_gmt":"2023-10-20T09:02:00","slug":"gatsby-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/","title":{"rendered":"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)"},"content":{"rendered":"<p>Hoe ziet een typische dynamische website eruit, zoals bijvoorbeeld een die op WordPress draait? Dat ziet er ongeveer zo uit: wanneer een bezoeker een URL invoert in een browser of je website via een link bezoekt, dan wordt er een verzoek verzonden naar je webserver.<\/p>\n<p>De server verzamelt vervolgens alle benodigde gegevens door middel van database-query&#8217;s en genereert een <a href=\"https:\/\/kinsta.com\/nl\/blog\/zo-upload-je-een-html-bestand-naar-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">HTML-bestand<\/a> waarmee jouw browser de site kan tonen. Een alternatief zijn statische sites die de responses al opgeslagen hebben. Deze bestanden kunnen dus rechtstreeks aan de bezoeker worden geleverd.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/blog\/static-site-generator\/\">Generators voor statische sites<\/a> bestaan al langer, maar ze zijn de laatste tijd in populariteit toegenomen. In deze stapsgewijze handleiding kijken we naar de <strong>integratie van WordPress met Gatsby<\/strong>, een tool die statische sites genereert.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Wat is Gatsby?<\/h2>\n<p>WordPress maakt dynamische websites en om dit voor elkaar te krijgen wordt er gebruik gemaakt van de stack van <a href=\"https:\/\/kinsta.com\/nl\/blog\/is-php-dood\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP<\/a>, <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-mysql\/\" target=\"_blank\" rel=\"noopener noreferrer\">MySQL<\/a> en <a href=\"https:\/\/kinsta.com\/nl\/blog\/nginx-vs-apache\/\" target=\"_blank\" rel=\"noopener noreferrer\">Apache of Nginx<\/a>. Toch is het ook met WordPress mogelijk om een statische versie te cre\u00ebren door voor alle content van je site een lijst met HTML-pagina&#8217;s te genereren.<\/p>\n<p>Deze statische versie van WordPress wordt headless WordPress of <a href=\"https:\/\/kinsta.com\/nl\/blog\/serverless-php\/\">serverloze<\/a> WordPress genoemd. Dit conversieproces wordt slechts \u00e9\u00e9n keer uitgevoerd, zodat dezelfde pagina aan meerdere bezoekers kan worden getoond. Maar hoe converteer je je WordPress-site naar een statische versie? Dit is waar Gatsby ten tonele verschijnt.<\/p>\n<p><a href=\"http:\/\/gatsbyjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Gatsby<\/a>, of ook wel GatsbyJS, is een generator voor statische sites die is gebouwd met <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">ReactJS<\/a> en wordt aangedreven door <a href=\"https:\/\/graphql.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL<\/a>. Met Gatsby kan iedereen feature-rijke, boeiende websites en applicaties maken. Gatsby haalt via GraphQL uit verschillende bronnen van je site gegevens op, waaronder bestaande websites, API-oproepen en platte bestanden. Vervolgens maakt de tool de statische sites op basis van door jou opgegeven configuratie-instellingen.<\/p>\n<p>Gatsby bestaat nog maar een jaar, maar heeft toch inmiddels al een grote schare gebruikers. Verschillende instellingen en freelancers maken namelijk al gebruik van Gatsby. De homepagina van de <a href=\"https:\/\/airbnb.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Data Science and Engineering Blog van Airbnb<\/a> draait op Gatsby &#8211; ook al zijn de blogartikelen zelf gehost op Medium.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/engineering-data-science-blog.png\" alt=\"Engineering &#038; Data Science Blog van Airbnb\" width=\"1500\" height=\"689\"><figcaption class=\"wp-caption-text\">Engineering &#038; Data Science Blog van Airbnb<\/figcaption><\/figure>\n<p>Braun is een merk van het consumentengoederenbedrijf P&#038;G. Hun <a href=\"https:\/\/ca.braun.com\/en-ca\" target=\"_blank\" rel=\"noopener noreferrer\">Canadese site<\/a> wordt gehost met Gatsby, terwijl de zoekfunctie van de site wordt aangedreven door React.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/de-canadese-website-van-braun.png\" alt=\"De Canadese website van Braun\" width=\"1500\" height=\"858\"><figcaption class=\"wp-caption-text\">De Canadese website van Braun<\/figcaption><\/figure>\n<p>Ook gebruiken een aantal <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-ontwikkelaar-huren\/\" target=\"_blank\" rel=\"noopener noreferrer\">freelance ontwikkelaars<\/a> Gatsby voor hun <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-portfolioplugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">portfolio&#8217;s<\/a>. Portfolio&#8217;s, zoals <a href=\"https:\/\/jacobdcastro.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">die van Jacob Castro<\/a>, bevatten voornamelijk statische content met links naar andere projecten en een contactformulier. Hierdoor zijn ze uiterst geschikt om als statische site gepresenteerd te worden.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/portfolio-van-jacob-d-castro.png\" alt=\"Portfolio van Jacob D. Castro\" width=\"1500\" height=\"858\"><figcaption class=\"wp-caption-text\">Portfolio van Jacob D. Castro<\/figcaption><\/figure>\n<h3>Waarom zou je Gatsby gebruiken?<\/h3>\n<p><strong>Snelle websites<\/strong>: het belangrijkste voordeel van het bouwen van een statische website met Gatsby is <a href=\"https:\/\/kinsta.com\/nl\/leren\/wordpress-sneller-maken\/\" target=\"_blank\" rel=\"noopener noreferrer\">snelheid<\/a>, een metriek die veel webmasters proberen te optimaliseren sinds Google verkondigde dat <a href=\"https:\/\/webmasters.googleblog.com\/2010\/04\/using-site-speed-in-web-search-ranking.html\" target=\"_blank\" rel=\"noopener noreferrer\">het een factor is binnen hun zoekmachinerankings<\/a>. Laadtijden hebben daarnaast invloed op het aantal paginaweergaven en de conversiepercentages. Naar schatting kan een vertraging van \u00e9\u00e9n second in de laadtijd van een site leiden tot een <a href=\"https:\/\/kinsta.com\/nl\/leren\/snelheidsoptimalisatie\/#slow-how-slow\" target=\"_blank\" rel=\"noopener noreferrer\">vermindering van het aantal conversies met 7%<\/a>.<\/p>\n<p><strong>Beveiliging<\/strong>: Ook zorgt een statische site voor betere <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-beveiliging\/\" target=\"_blank\" rel=\"noopener noreferrer\">beveiliging<\/a>. Omdat het slechts statische bestanden zijn die worden geleverd, kan er ook niet veel aan gehackt worden. Bovendien kan je de statische bestanden altijd opnieuw genereren als ze verloren gaan.<\/p>\n<p><strong>Serverkosten<\/strong>: Voor het hosten van een dynamische site moet je server compatibel zijn met je technologiestack. Daarentegen kan je een statische site op vrijwel elke server hosten, wat de bijbehorende hostingkosten sterk vermindert.<\/p>\n<p>Het (opnieuw) genereren van een statische site met Gatsby vereist wel het gebruik van JavaScript, maar dit kan je ook op een lokale machine doen waarna je de statische bestanden kopieert naar de site.<\/p>\n<h3>Waarom zou je Gatsby vermijden?<\/h3>\n<p><strong>Ondersteunt geen dynamische content<\/strong>: Als je Gatsby wil gebruiken, moet je opnieuw nadenken over hoe je dynamische content wil beheren en tonen. Met andere woorden, je moet een <a href=\"https:\/\/www.gatsbyjs.org\/docs\/data-fetching\/\" target=\"_blank\" rel=\"noopener noreferrer\">hybride oplossing bedenken tussen statisch\/dynamisch<\/a> (meer hierover verder in het artikel).<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-reactie-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">Opmerkingen<\/a> kunnen bijvoorbeeld extern gehost worden middels een dienst als <a href=\"https:\/\/kinsta.com\/blog\/disqus-ads\/\" target=\"_blank\" rel=\"noopener noreferrer\">Disqus<\/a>.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/contactformulier-plugins-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">Contactformulieren<\/a> moeten ook worden omgeleid via een externe partner zoals <a href=\"https:\/\/kinsta.com\/nl\/blog\/google-forms-alternatieven\/\">Google Forms<\/a>. Simpel gezegd verlies je dus rechtstreekse controle over dergelijke dynamische content, omdat de antwoorden niet op je servers worden opgeslagen.<\/p>\n<p><strong>Frequente builds zijn onhandig<\/strong>: Statische sites kennen het probleem van frequente reconverts. Elke wijziging die je op je site doorvoert, is slechts zichtbaar nadat je de pagina&#8217;s opnieuw hebt gegenereerd en opnieuw naar de server hebt ge\u00fcpload.<\/p>\n<p><strong>Vereiste technische expertise<\/strong>: Gatsby stoelt op ReactJS en GraphQL. Daarom is enige kennis van JavaScript en een globaal idee van GraphQL nodig om een website via Gatsby onderhouden.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/blog\/wordpress-vs-static-html\/\" target=\"_blank\" rel=\"noopener noreferrer\">Statische websites<\/a> zijn een goede keuze als je op zoek bent naar een goedkope oplossing met een hoge mate van veiligheid. Denk hierbij aan portfoliowebsites voor freelancers en sites met productdemo&#8217;s.<\/p>\n<p>Ben je van mening dat de voordelen opwegen tegen de nadelen? Goed! Dan gaan we nu proberen om Gatsby in te stellen voor integratie met onze <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-site-voorbeelden\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress-site<\/a>.<\/p>\n<p>We gebruiken in deze tutorial de meest recente versie van Gatsby en is <a href=\"https:\/\/github.com\/sdaityari\/gatsby-wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">te vinden op GitHub<\/a><\/p>\n<h2>Stap 1: Gatsby opzetten<\/h2>\n<p>In dit gedeelte kijken we naar hoe we Gatsby kunnen installeren en hoe we een eenvoudige statische site maken met Gatsby.<\/p>\n<h3>Vereisten<\/h3>\n<p>De eerste stap om Gatsby aan de praat te krijgen is het controleren van de vereisten. Gatsby wordt bediend via npm, de package-installer van NodeJS. Om die reden is het zaak dat je binnen je omgeving beschikt over NodeJS en npm voordat je Gatsby kan installeren. Daarnaast moet je <a href=\"https:\/\/kinsta.com\/nl\/blog\/git-installeren\/\">Git hebben ge\u00efnstalleerd<\/a>, het broncodebeheersysteem.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p><\/p>\n<p>Momenteel host Kinsta geen NodeJS-servers en moet je deze dus elders opstellen. Desondanks kan je Kinsta gebruiken voor je WordPress-installatie en de gegevens ophalen met de <a href=\"https:\/\/kinsta.com\/nl\/blog\/rest-api-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">REST API<\/a> of <a href=\"https:\/\/kinsta.com\/blog\/wordpress-revolution-with-graphql\/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL<\/a>.<\/p>\n<\/aside>\n\n<p>Als je Windows gebruikt, kan je NodeJS en Git installeren via het installatieprogramma op de downloadpagina. Op een Mac kan je hun installatieprogramma&#8217;s downloaden of homebrew gebruiken.<\/p>\n<pre><code>brew install nodejs\nbrew install git<\/code><\/pre>\n<p>Als je Linux OS gebruikt, kan je NodeJS installeren met een package-installer als apt.<\/p>\n<pre><code>sudo\u00a0apt update\nsudo\u00a0apt install\u00a0nodejs git<\/code><\/pre>\n<h3>\u00a0Gatsby installeren<\/h3>\n<p>Zodra je NodeJS en Git hebt ge\u00efnstalleerd, ben je klaar om Gatsby te installeren! De makkelijkste manier is om de volgende opdracht in de terminal uit te voeren (gebruik de <code>npm<\/code>-opdrachtregel in Windows):<\/p>\n<pre><code>npm\u00a0install\u00a0-g gatsby-cli<\/code><\/pre>\n<p>De installer installeert als eerste de dependency&#8217;s en daarna Gatsby. Nu ben je klaar om je eerste Gatsby site te maken!<\/p>\n<h3>Je Gatsby site bouwen en uitzetten<\/h3>\n<p>Voer de volgende opdracht uit om een Gatsby site te maken.<\/p>\n<pre><code>gatsby new gatsby-wordpress<\/code><\/pre>\n<p>Gatsby maakt nu een site aan in de directory \/gatsby-wordpress door het <a href=\"https:\/\/github.com\/gatsbyjs\/gatsby-starter-default.git\" target=\"_blank\" rel=\"noopener noreferrer\">Gatsby startertemplate<\/a> te klonen. Je kan je eigen startertemplate opgeven om te klonen. Zodra het klonen is voltooid en de dependency&#8217;s zijn ge\u00efnstalleerd, kan je met de volgende opdracht een testversie van je site uitvoeren.<\/p>\n<pre><code>cd\u00a0gatsby-wordpress\ngatsby develop<\/code><\/pre>\n<p>Je kan deze testversie vervolgens bezoeken op http:\/\/localhost:8000.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/gatsby-startersite.png\" alt=\"Gatsby startersite\" width=\"1500\" height=\"715\"><figcaption class=\"wp-caption-text\">Gatsby startersite<\/figcaption><\/figure>\n<p>De laatste stap is het bouwen van je statische site. De volgende opdracht cre\u00ebert de statische bestanden in de openbare map. Om deze naar de server te uploaden, upload je simpelweg de inhoud van deze map naar de hoofdmap van je server. Eventueel kan je <a href=\"https:\/\/www.gatsbyjs.org\/docs\/path-prefix\" target=\"_blank\" rel=\"noopener noreferrer\">een pad-prefix toevoegen<\/a>, zoals www.voorbeeld.nl\/blog\/ toevoegen als root-URL van je builds.<\/p>\n<pre><code>gatsby build<\/code><\/pre>\n<p>Om zelf een lokale HTML-server op te starten waarmee je de statische content van je site kan laten zien, moet je de <code>serve<\/code> opdracht gebruiken. Houd er rekening mee dat deze alleen werkt n\u00e1 het uitvoeren van de build opdracht.<\/p>\n<pre><code>gatsby serve<\/code><\/pre>\n<p>Nu je je eigen eenvoudige statische site hebt gemaakt met Gatsby, kunnen we deze integreren met WordPress.<\/p>\n<h2>Stap 2: Hoe Gatsby met WordPress te verbinden<\/h2>\n<p>In dit gedeelte gaan we je <strong>WordPress-site integreren met Gatsby<\/strong>. Je wil zorgen dat Gatsby het adres van je WordPress-blog weet, zodat het de meest recente data kan onttrekken van je server wanneer je met je testserver bezig bent of statische pagina&#8217;s genereert.<\/p>\n<p>Het verbinden van Gatsby met WordPress heeft als doel om je WordPress data op te halen. Dit wordt geactiveerd door een build. Zodra Gatsby de WordPress gegevens heeft opgehaald, wordt de statische site opgesteld op basis van de huidige template.<\/p>\n<p>In dit proces wordt de WordPress site gebruikt als een bron voor de berichten op Gatsby. Om deze uitwisseling mogelijk te maken, moet je de WordPress-plugin van Gatsby installeren middels de volgende opdracht:<\/p>\n<pre><code>npm\u00a0install\u00a0gatsby-source-wordpress<\/code><\/pre>\n<h3>Gatsby configureren<\/h3>\n<p>Voeg vervolgens deze plugin toe aan het configuratiebestand van Gatsby, genaamd gatsby-config.js.<\/p>\n<p>Voeg vervolgens de volgende code toe aan het bestand om Gatsby te verbinden met je WordPress-bron. In dit voorbeeld gebruiken we een <a href=\"https:\/\/kinsta.com\/nl\/blog\/lokale-wordpress-installatie\/\" target=\"_blank\" rel=\"noopener noreferrer\">lokaal gehoste WordPress-site<\/a> op MAMP. Overigens wil je misschien de titel en beschrijving van de site in siteMetadata bewerken.<\/p>\n<pre><code class=\"language-js\">module.exports = {\n  siteMetadata: {\n    ...\n  },\n  plugins: [\n    ...\n    {\n        resolve: `gatsby-source-wordpress`,\n        options: {\n            \/\/ Specify the URL of the WordPress source\n            baseUrl: `localhost:8888\/wordpress`,\n            protocol: `http`,\n            \/\/ Indicates if a site is hosted on WordPress.com\n            hostingWPCOM: false,\n            \/\/ Specify which URL structures to fetch\n            includedRoutes: [\n              '**\/posts',\n              '**\/tags',\n              '**\/categories'\n            ]\n        }\n    }\n\n<\/code><\/pre>\n<h3>Berichten ophalen met GraphQL<\/h3>\n<p>Nu we de bron van de WordPress-site hebben opgegeven in het configuratiebestand, is het tijd om te specificeren welke data van de WordPress-site kunnen worden ge\u00ebxtraheerd. Gatsby gebruikt GraphQL, een open source querytaal voor API&#8217;s, om grote aantallen WordPress-berichten te ontvangen.<\/p>\n<p>Om te kijken welke gegevens je wil opvragen, kan je interactief de content selecteren die je uit WordPress wil ophalen. Start de testserver en ga naar de URL http:\/\/localhost:8000\/___graphql om de GraphQL-editor te openen.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/gegevens-opvragen-met-graphql.png\" alt=\"Gegevens opvragen met GraphQL\" width=\"1500\" height=\"487\"><figcaption class=\"wp-caption-text\">Gegevens opvragen met GraphQL<\/figcaption><\/figure>\n<p>Wanneer je weet welke content je wil gebruiken, kan je de GraphQL-query&#8217;s toevoegen aan het bestand index.js.<\/p>\n<p>Laten we voorlopig alleen de titel en het excerpt van elk bericht gebruiken. We kunnen later meer velden toevoegen.<\/p>\n<pre><code class=\"language-js\">import React from \"react\"\nimport { graphql } from \"gatsby\"\nimport Layout from \"..\/components\/layout\"\nimport SEO from \"..\/components\/seo\"\n\nexport default ({ data }) =&gt; {\n  return (<\/code><\/pre>\n<h4>Posts<\/h4>\n<pre><code class=\"language-js\">import React from \"react\"\nimport { graphql } from \"gatsby\"\nimport Layout from \"..\/components\/layout\"\nimport SEO from \"..\/components\/seo\"\n\nexport default ({ data }) =&gt; {\n  return (\n    &lt;Layout&gt;\n      &lt;SEO title=\"home\" \/&gt;\n      &lt;h4&gt;Posts&lt;\/h4&gt;\n      {data.allWordpressPost.edges.map(({ node }) =&gt; (\n        &lt;div&gt;\n          &lt;p&gt;{node.title}&lt;\/p&gt;\n          &lt;div dangerouslySetInnerHTML={{ __html: node.excerpt }} \/&gt;\n        &lt;\/div&gt;\n      ))}\n    &lt;\/Layout&gt;\n  )\n}\nexport const pageQuery = graphql`\n  query {\n    allWordpressPost(sort: { fields: [date] }) {\n      edges {\n        node {\n          title\n          excerpt\n        }\n      }\n    }\n  }<\/code><\/pre>\n<p>Als je nu de testsite bezoekt, dan zie je (als je alles goed hebt gedaan) dat alle berichten van WordPress zijn opgehaald en kan je hun titels en excerpten zien:<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/homepagina-gatsby-met-wordpress-berichten.png\" alt=\"Homepagina Gatsby met WordPress-berichten\" width=\"1500\" height=\"543\"><figcaption class=\"wp-caption-text\">Homepagina Gatsby met WordPress-berichten<\/figcaption><\/figure>\n<p>Mooi is anders, maar het is ons wel gelukt om de juiste gegevens van WordPress te halen. De volgende stap is om voor elk bericht een eigen pagina te maken.<\/p>\n<h2>Stap 3: Een basis paginatemplate maken<\/h2>\n<p>In dit gedeelte gaan we kijken hoe je in Gatsby voor elk bericht een aparte pagina maakt en via de <a href=\"https:\/\/kinsta.com\/blog\/what-is-a-wordpress-slug\/\" target=\"_blank\" rel=\"noopener noreferrer\">slug<\/a> links naar deze artikelen toevoegt.<\/p>\n<h3>Voor elk bericht een eigen pagina maken<\/h3>\n<p>De eerste stap na het ophalen van alle berichten uit onze WordPress-bron is om Gatsby de opdracht te geven om voor elk bericht een eigen pagina te maken. Dit is een handeling die we kunnen uitvoeren met de actie <code>createPage<\/code>.<\/p>\n<p>Voeg de volgende code toe aan gatsby-node.js. Merk op dat we bovendien de content, auteur, datum en slug van elk bericht ontvangen:<\/p>\n<pre><code class=\"language-js\">const path = require(`path`)\n\nexports.createPages = ({ graphql, actions }) =&gt; {\n  const { createPage } = actions\n  return graphql(`\n    {\n      allWordpressPost(sort: {fields: [date]}) {\n        edges {\n          node {\n            title\n            excerpt\n            slug\n            date(formatString: \"MM-DD-YYYY\")\n            author {\n              name\n            }\n          }\n        }\n      }\n    }\n\n  `).then(result =&gt; {\n    result.data.allWordpressPost.edges.forEach(({ node }) =&gt; {\n      createPage({\n        \/\/ Decide URL structure\n        path: node.slug,\n        \/\/ path to template\n        component: path.resolve(`.\/src\/templates\/blog-post.js`),\n        context: {\n          \/\/ This is the $slug variable\n          \/\/ passed to blog-post.js\n          slug: node.slug,\n        },\n      })\n    })\n  })<\/code><\/pre>\n<p>Nadat de data vanuit GraphQL is opgehaald, maakt deze code een pagina aan voor elk bericht. Binnen het bericht kan je de URL-structuur van de pagina opgeven op basis van de slug die het pad gebruikt.<\/p>\n<p>Als alternatief kan je de ID van het bericht ophalen en dat in de URL opgeven. De componentvariabele verwijst naar de template van hoe je het bericht wil weergeven. Ten slotte geven we de slug door als de context van de template. Dit is vereist om de template te laten zoeken naar het juiste bericht uit de lijst met opgehaalde berichten.<\/p>\n<p>In het ideale geval geef je een variabele door die een bericht uniek identificeert als context.<\/p>\n<p>Herstart de testserver na het maken van de wijzigingen in het bestand gatsby-node.js zodat de wijzigingen van kracht worden.<\/p>\n<h3>Een template aanmaken om een bericht weer te geven<\/h3>\n<p>Maak een directory template aan in de directory src. Maak een nieuw bestand aan in deze nieuwe directory, noem deze blog-post.js en voer de volgende code in:<\/p>\n<pre><code class=\"language-js\">import React from \"react\"\nimport Layout from \"..\/components\/layout\"\nimport { graphql } from \"gatsby\"\n\nexport default ({ data }) =&gt; {\n  const post = data.allWordpressPost.edges[0].node\n  console.log(post)\n  return (\n    &lt;Layout&gt;\n      &lt;div&gt;\n        &lt;h1&gt;{post.title}&lt;\/h1&gt;\n        &lt;div dangerouslySetInnerHTML={{ __html: post.content }} \/&gt;\n        &lt;p&gt; By: {post.author.name} &lt;\/p&gt;\n        &lt;p&gt; On: {post.date} &lt;\/p&gt;\n      &lt;\/div&gt;\n    &lt;\/Layout&gt;\n  )\n}\n\nexport const query = graphql`\n  query($slug: String!) {\n    allWordpressPost(filter: { slug: { eq: $slug } }) {\n      edges {\n        node {\n          title\n          content\n          slug\n          date(formatString: \"MM-DD-YYYY\")\n          author {\n            name\n          }\n        }\n      }\n    }\n  }<\/code><\/pre>\n<p>De GraphQL-query bemachtigt de datum en de naam van de auteur, welke worden weergegeven aan het einde van het bericht. Met de <a href=\"http:\/\/localhost:8000\/___graphql\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL-editor<\/a> kan je extra velden toevoegen en deze op de berichtpagina laten zien.<\/p>\n<h3>Naar de pagina&#8217;s linken in index<\/h3>\n<p>Je hebt nu voor elk bericht een aparte pagina gemaakt. We moeten echter nog de links naar deze berichten toevoegen aan de indexpagina Ga naar index.js en wijzig de code om een link naar elk bericht toe te voegen:<\/p>\n<pre><code class=\"language-sass\">import React from \"react\"\nimport { Link, graphql } from \"gatsby\"\nimport Layout from \"..\/components\/layout\"\nimport SEO from \"..\/components\/seo\"\n\nexport default ({ data }) =&gt; {\n  return (\n    &lt;Layout&gt;\n      &lt;SEO title=\"home\" \/&gt;\n      &lt;h1&gt;My WordPress Blog&lt;\/h1&gt;\n      &lt;h4&gt;Posts&lt;\/h4&gt;\n      {data.allWordpressPost.edges.map(({ node }) =&gt; (\n        &lt;div&gt;\n          &lt;Link to={node.slug}&gt;\n            &lt;p&gt;{node.title}&lt;\/p&gt;\n          &lt;\/Link&gt;\n          &lt;div dangerouslySetInnerHTML={{ __html: node.excerpt }} \/&gt;\n        &lt;\/div&gt;\n      ))}\n    &lt;\/Layout&gt;\n  )\n}\n\nexport const pageQuery = graphql`\n  query {\n    allWordpressPost(sort: { fields: [date] }) {\n      edges {\n        node {\n          title\n          excerpt\n          slug\n        }\n      }\n    }\n  }<\/code><\/pre>\n<p>Dit is de status van de indexpagina:<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/Indexpagina.png\" alt=\"Indexpagina na het toevoegen van links naar berichten\" width=\"1500\" height=\"620\"><figcaption class=\"wp-caption-text\">Indexpagina na het toevoegen van links naar berichten<\/figcaption><\/figure>\n<p>Wanneer je klikt op een link naar een bericht, dan is dit de berichtpagina, die wordt weergegeven door blog-post.js:<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/bericht-met-titel.png\" alt=\"Bericht met titel, inhoud, datum publicatie en auteur\" width=\"1500\" height=\"460\"><figcaption class=\"wp-caption-text\">Bericht met titel, inhoud, datum publicatie en auteur<\/figcaption><\/figure>\n<h2>Stap 4: Geavanceerde migratietaken<\/h2>\n<p>We hebben nu alle WordPress-berichten ge\u00efmporteerd, maar we zijn er nog niet. Laten we een paar geavanceerde taken uitvoeren om ervoor te zorgen dat je in de toekomst niet tegen problemen aanloopt. In deze sectie gaan we kijken hoe we effici\u00ebnt met afbeeldingen kunnen omgaan en een &#8220;laatst gewijzigd op&#8221;-tijdstempel aan de data kunnen toevoegen.<\/p>\n<h3>Conversies van het afbeeldingspad<\/h3>\n<p>Een van onze oorspronkelijke berichten, genaamd &#8220;Post with Image!&#8221; bevatte een afbeelding. Als je naar de bijbehorende pagina op Gatsby gaat, zie je dat de afbeelding wordt weergegeven, maar ook dat de bron van de afbeelding hetzelfde is als die van WordPress. In dit voorbeeld verwijst het dus naar de lokaal gehoste WordPress-afbeelding.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/gatsby-bericht-met-afbeelding-en-bron.png\" alt=\"Gatsby-bericht met een afbeelding en de bron\" width=\"1500\" height=\"767\"><figcaption class=\"wp-caption-text\">Gatsby-bericht met een afbeelding en de bron<\/figcaption><\/figure>\n<p>Als je afbeeldingen extern host, dan zorgt dit niet per se voor problemen, omdat het naar de server van je afbeeldingen verwijst. Als je de afbeeldingen echter opslaat binnen je WordPress-installatie, dan wil je ook de bijbehorende afbeeldingen!<\/p>\n<p>Je kan dit oplossen met de plugin <a href=\"https:\/\/github.com\/TylerBarnes\/gatsby-wordpress-inline-images\" target=\"_blank\" rel=\"noopener noreferrer\">inline images<\/a>. Installeer eerst de plugin<\/p>\n<p><code>gatsby-image<\/code> en vervolgens <code>gatsby-wordpress-inline-images<\/code>.<\/p>\n<p><code>npm install gatsby-image<br \/>\nnpm install gatsby-wordpress-inline-images<\/code><\/p>\n<pre><code class=\"language-js\">module.exports = {\n  siteMetadata: {\n    ...\n  },\n  plugins: [\n    ...\n    {\n      resolve: `gatsby-source-wordpress`,\n      options: {\n        ...\n        \/\/ If useACF is true, then the source plugin will try to import the WordPress ACF Plugin contents.\n        \/\/ This feature is untested for sites hosted on WordPress.com\n        useACF: true,\n        plugins: [\n          {\n            resolve: `gatsby-wordpress-inline-images`,\n            options:\n            {\n              baseUrl: `localhost:8888\/wordpress`,\n              protocol: `http`\n            }\n          }\n        ]\n      }\n    }\n  ],\n}<\/code><\/pre>\n<p>Voeg vervolgens de volgende regels toe aan het bestand <code>gatsby-config.js<\/code>.<\/p>\n<pre><code class=\"language-js\">module.exports = {\n  siteMetadata: {\n    ...\n  },\n  plugins: [\n    ...\n    {\n      resolve: `gatsby-source-wordpress`,\n      options: {\n        ...\n        \/\/ If useACF is true, then the source plugin will try to import the WordPress ACF Plugin contents.\n        \/\/ This feature is untested for sites hosted on WordPress.com\n        useACF: true,\n        plugins: [\n          {\n            resolve: `gatsby-wordpress-inline-images`,\n            options:\n            {\n              baseUrl: `localhost:8888\/wordpress`,\n              protocol: `http`\n            }\n          }\n        ]\n      }\n    }\n  ],\n}<\/code><\/pre>\n<p>Als je de testserver opnieuw opstart nadat je deze wijzigingen hebt aangebracht, dan worden de afbeeldingen van de WordPress-site gedownload en lokaal opgeslagen. Je kan dit verifi\u00ebren via het pad van de eerdergenoemde afbeelding.<\/p>\n<h3>Datum &#8220;laatst gewijzigd&#8221; weergeven<\/h3>\n<p>Als je een blog beheert waarin regelmatig bewerkingen plaatsvinden, dan kan je overwegen om je lezers te laten weten wanneer een bericht voor het laatst is bijgewerkt. In de eerdergenoemde GraphQL-query haalden we weliswaar ook de &#8220;created date&#8221; op, maar in deze sectie leg ik je uit hoe je daarnaast ook de tijdstempel van &#8220;last modified&#8221; ophaalt.<\/p>\n<p>Om de tijdstempel van laatst gewijzigd van WordPress naar je Gatsby-bericht te exporteren, moet je een veld toevoegen aan je lijst met items in de GraphQL-query. Omdat het een tijdstempel is zoals <code>date<\/code>, moet je ook de parameter <code>formatString<\/code> toevoegen. Dit is het aangepaste bestand <code>blog-post.js<\/code>:<\/p>\n<pre><code class=\"language-js\">...\n&lt;Layout&gt;\n  &lt;div&gt;\n    ...\n    &lt;p&gt; On: {post.date} &lt;\/p&gt;\n    &lt;p&gt; Last modified: {post.modified} &lt;\/p&gt;\n  &lt;\/div&gt;\n&lt;\/Layout&gt;\n...\n\nexport const query = graphql`\n  query($slug: String!) {\n  {\n    allWordpressPost {\n      edges {\n        node {\n          ...\n          modified(formatString: \"MM-DD-YYYY\")\n        }\n      }\n    }\n  }<\/code><\/pre>\n<p>Nadat je bovenstaande hebt toegevoegd, kan je de tijdstempel &#8220;laatst gewijzigd&#8221; zien op de berichtenpagina op Gatsby:<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/bericht-met-de-tijdstempel-laatst-gewijzigd.png\" alt=\"Bericht met de tijdstempel laatst gewijzigd\" width=\"1500\" height=\"520\"><figcaption class=\"wp-caption-text\">Bericht met de tijdstempel laatst gewijzigd<\/figcaption><\/figure>\n<h2>Zo deploy je je Gatsby website bij Kinsta<\/h2>\n<p>Naast <a href=\"https:\/\/kinsta.com\/nl\/wordpress-hosting\/\">WordPress Hosting<\/a> biedt Kinsta <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting<\/a>, <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Database Hosting<\/a> en <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">Statische Site Hosting<\/a>. Je kunt tot 100 statische sites gratis hosten!<\/p>\n<p>Om je site te deployen met Statische Site Hosting, push je eerst je code naar een Git provider van je voorkeur (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> of <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) en volg dan deze stappen om het te deployen:<\/p>\n<ol>\n<li>Login of maak een account aan om je <a href=\"https:\/\/my.kinsta.com\/?lang=nl\">MyKinsta<\/a> dashboard te bekijken.<\/li>\n<li>Autoriseer Kinsta met je Git provider.<\/li>\n<li>Klik op <strong>Statische sites<\/strong> in de linker zijbalk, klik dan op <strong>Site toevoegen<\/strong>.<\/li>\n<li>Selecteer de repository en de branch waarvan je wilt deployen.<\/li>\n<li>Geef je site een unieke naam.<\/li>\n<li>Voeg de build instellingen toe in het volgende format:\n<ul>\n<li><strong>Build commando:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Node versie:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Publish directory:<\/strong> <code>public<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Klik ten slotte op <strong>Site maken<\/strong>.<\/li>\n<\/ol>\n\n<h2>Samenvatting<\/h2>\n<p>De beslissing nemen om je WordPress site om te zetten naar een statische site en te profiteren van Gatsby kan een uitdaging zijn. Om te slagen, moet je de volgende stappen uitvoeren:<\/p>\n<ul>\n<li>Gatsby installeren om een starterssite te bouwen<\/li>\n<li>Gatsby verbinden met de WordPress-bron middels GraphQL<\/li>\n<li>Templates maken voor blogberichten<\/li>\n<li>Al je afbeeldingen vanuit WordPress importeren<\/li>\n<li>De tijdstempel &#8220;laatst gewijzigd&#8221; weergeven vanuit WordPress<\/li>\n<\/ul>\n<p><em>Nu is het jouw beurt: Heb jij al kunnen spelen met Gatsby? Wat vond je ervan? Laat het ons weten in de reacties!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoe ziet een typische dynamische website eruit, zoals bijvoorbeeld een die op WordPress draait? Dat ziet er ongeveer zo uit: wanneer een bezoeker een URL invoert &#8230;<\/p>\n","protected":false},"author":118,"featured_media":29132,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[243,244],"topic":[842,914,892],"class_list":["post-29120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-headless","tag-serverless","topic-headless-cms","topic-statische-sitegenerators","topic-wordpress-ontwikkeling"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Inleiding tot het bouwen van websites met Gatsby en WordPress<\/title>\n<meta name=\"description\" content=\"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)\" \/>\n<meta property=\"og:description\" content=\"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-13T10:59:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-20T09:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Shaumik Daityari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shaumik Daityari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\"},\"author\":{\"name\":\"Shaumik Daityari\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036\"},\"headline\":\"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)\",\"datePublished\":\"2020-01-13T10:59:31+00:00\",\"dateModified\":\"2023-10-20T09:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\"},\"wordCount\":2682,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\",\"keywords\":[\"headless\",\"serverless\"],\"articleSection\":[\"WordPress handleidingen\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\",\"name\":\"Inleiding tot het bouwen van websites met Gatsby en WordPress\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\",\"datePublished\":\"2020-01-13T10:59:31+00:00\",\"dateModified\":\"2023-10-20T09:02:00+00:00\",\"description\":\"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg\",\"width\":1460,\"height\":730,\"caption\":\"Gatsby WordPress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress ontwikkeling\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036\",\"name\":\"Shaumik Daityari\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/feb5b18a7ac559ec6c8e8afcf96418ac?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/feb5b18a7ac559ec6c8e8afcf96418ac?s=96&d=mm&r=g\",\"caption\":\"Shaumik Daityari\"},\"description\":\"Shaumik is a data analyst by day, and a comic book enthusiast by night (or maybe, he's Batman?) Shaumik has been writing tutorials and creating screencasts for over five years. When not working, he's busy automating mundane daily tasks through meticulously written scripts!\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/shaumikdaityari\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Inleiding tot het bouwen van websites met Gatsby en WordPress","description":"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/","og_locale":"nl_NL","og_type":"article","og_title":"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)","og_description":"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.","og_url":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2020-01-13T10:59:31+00:00","article_modified_time":"2023-10-20T09:02:00+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","type":"image\/jpeg"}],"author":"Shaumik Daityari","twitter_card":"summary_large_image","twitter_description":"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Shaumik Daityari","Geschatte leestijd":"16 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/"},"author":{"name":"Shaumik Daityari","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036"},"headline":"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)","datePublished":"2020-01-13T10:59:31+00:00","dateModified":"2023-10-20T09:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/"},"wordCount":2682,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","keywords":["headless","serverless"],"articleSection":["WordPress handleidingen"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/","url":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/","name":"Inleiding tot het bouwen van websites met Gatsby en WordPress","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","datePublished":"2020-01-13T10:59:31+00:00","dateModified":"2023-10-20T09:02:00+00:00","description":"Leer in deze uitgebreide inleidende tutorial hoe je supersnelle websites maakt die draaien op Gatsby en WordPress als headless CMS.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2020\/01\/gatsby-wordpress.jpg","width":1460,"height":730,"caption":"Gatsby WordPress"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/gatsby-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"WordPress ontwikkeling","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/"},{"@type":"ListItem","position":3,"name":"Inleiding tot het bouwen van websites met Gatsby en WordPress (snel en statisch)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036","name":"Shaumik Daityari","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/feb5b18a7ac559ec6c8e8afcf96418ac?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/feb5b18a7ac559ec6c8e8afcf96418ac?s=96&d=mm&r=g","caption":"Shaumik Daityari"},"description":"Shaumik is a data analyst by day, and a comic book enthusiast by night (or maybe, he's Batman?) Shaumik has been writing tutorials and creating screencasts for over five years. When not working, he's busy automating mundane daily tasks through meticulously written scripts!","url":"https:\/\/kinsta.com\/nl\/blog\/author\/shaumikdaityari\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/29120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=29120"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/29120\/revisions"}],"predecessor-version":[{"id":56180,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/29120\/revisions\/56180"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/jp"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/translations\/dk"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/29120\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/29132"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=29120"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=29120"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=29120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}