{"id":36123,"date":"2020-03-06T01:55:36","date_gmt":"2020-03-06T00:55:36","guid":{"rendered":"https:\/\/kinsta.com\/?p=58518&#038;preview=true&#038;preview_id=58518"},"modified":"2023-10-11T13:49:22","modified_gmt":"2023-10-11T12:49:22","slug":"gatsby-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/","title":{"rendered":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)"},"content":{"rendered":"<p>Hvordan fungerer et typisk dynamisk websted, som dem, der er baseret p\u00e5 WordPress? N\u00e5r en bes\u00f8gende indtaster URL&#8217;en i en browser eller bes\u00f8ger dit websted via et link, sendes en anmodning til din webserver.<\/p>\n<p>Serveren samler de kr\u00e6vede data gennem de n\u00f8dvendige databaseforesp\u00f8rgsler og genererer en <a href=\"https:\/\/kinsta.com\/dk\/blog\/sadan-uploades-en-html-fil-til-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">HTML-fil<\/a>, som din browser kan vise. Statiske sider gemmer derimod disse svar i flade filer p\u00e5 serveren, der med det samme leveres til en bes\u00f8gende.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/blog\/static-site-generator\/\">Statiske site generators<\/a> har eksisteret i lang tid, men de er vokset i popularitet for nylig. I denne trin-for-trin-guide tager vi et kig p\u00e5 integrationen af \u200b\u200bWordPress med Gatsby, en statisk site generator.<\/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>Hvad er Gatsby?<\/h2>\n<p>WordPress opretter dynamiske websteder, som har brug for en stak af <a href=\"https:\/\/kinsta.com\/dk\/blog\/er-php-dod\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP<\/a>, <a href=\"https:\/\/kinsta.com\/dk\/blog\/hvad-er-mysql\/\" target=\"_blank\" rel=\"noopener noreferrer\">MySQL<\/a> og <a href=\"https:\/\/kinsta.com\/dk\/blog\/nginx-vs-apache\/\" target=\"_blank\" rel=\"noopener noreferrer\">Apache eller Nginx<\/a> p\u00e5 serveren for at k\u00f8re. Det er muligt at oprette en statisk version af WordPress ved at generere en liste med HTML-sider til alt indhold p\u00e5 dit websted.<\/p>\n<p>Denne statiske version af WordPress kaldes headless WordPress eller <a href=\"https:\/\/kinsta.com\/dk\/blog\/serverlos-php\/\">serverl\u00f8s<\/a> WordPress. Denne konverteringsproces udf\u00f8res kun \u00e9n gang, s\u00e5 den samme side kan serveres til den bes\u00f8gende flere gange. Hvordan konverterer du dit WordPress-sted til en statisk version? Det er her Gatsby kommer ind i billedet.<\/p>\n<p><a href=\"http:\/\/gatsbyjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Gatsby<\/a>, eller GatsbyJS, er en statisk site generator bygget med <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">ReactJS<\/a> og drevet af <a href=\"https:\/\/graphql.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL<\/a>. Gatsby giver enhver mulighed for at oprette funktionsrige, engagerende websteder og applikationer. Gatsby henter data til dit websted fra en r\u00e6kke kilder, herunder eksisterende websteder, API-opkald og flade filer via GraphQL, og bygger det statiske websted baseret p\u00e5 konfigurationsindstillinger specificeret af dig.<\/p>\n<p>Gatsby blev udviklet for kun et \u00e5r siden, men et stort antal brugere pr\u00f8ver Gatsby. Gatsby har fundet accept i en r\u00e6kke forskellige indstillinger. Startsiden til <a href=\"https:\/\/airbnb.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Airbnb&#8217;s Blog for datavidenskab og teknik<\/a> er drevet af Gatsby, sk\u00f8nt de faktiske blogindl\u00e6g er hostet p\u00e5 Medium.<\/p>\n<figure id=\"attachment_36126\" aria-describedby=\"caption-attachment-36126\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-36126\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/airbnbs-blog.png\" alt=\"Airbnb's Blog om ingeni\u00f8r- og datavidenskab\" width=\"1500\" height=\"689\" srcset=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/airbnbs-blog.png 1500w, https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/airbnbs-blog-300x138.png 300w, https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/airbnbs-blog-1024x470.png 1024w, https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/airbnbs-blog-768x353.png 768w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><figcaption id=\"caption-attachment-36126\" class=\"wp-caption-text\">Airbnb&#8217;s Blog om ingeni\u00f8r- og datavidenskab<\/figcaption><\/figure>\n<p>Braun er et m\u00e6rke af consumer goods company P&#038;G. Dets <a href=\"https:\/\/ca.braun.com\/en-ca\" target=\"_blank\" rel=\"noopener noreferrer\">canadiske websted<\/a> er hostet hos Gatsby, mens s\u00f8gefunktionen p\u00e5 webstedet drives af React.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/brauns-canadiske-websted.png\" alt=\"Brauns canadiske websted\" width=\"1500\" height=\"858\"><figcaption class=\"wp-caption-text\">Braun&#8217;s Canadian Website<\/figcaption><\/figure>\n<p>Derudover har Gatsby ogs\u00e5 vagt <a href=\"https:\/\/kinsta.com\/blog\/hire-wordpress-developer\/\" target=\"_blank\" rel=\"noopener noreferrer\">freelancer-udviklere<\/a> &#8216;interesse for deres <a href=\"https:\/\/kinsta.com\/dk\/blog\/wordpress-portfolio-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">portfolios<\/a>. Portfolios <a href=\"https:\/\/jacobdcastro.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">som den af Jacob Castro<\/a> har prim\u00e6rt statisk indhold med links til v\u00e6rker og kontakt via e-mail, hvilket g\u00f8r et statisk websted til en perfekt pasform til hans behov.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/jacob-castro-portfolio.png\" alt=\"Jacob D. Castros portfolio\" width=\"1500\" height=\"858\"><figcaption class=\"wp-caption-text\">Jacob D. Castros portfolio<\/figcaption><\/figure>\n<h3>Hvorfor v\u00e6lge Gatsby?<\/h3>\n<p>Hurtige websteder: Den prim\u00e6re fordel ved at opbygge et statisk websted med Gatsby er <a href=\"https:\/\/kinsta.com\/dk\/laer\/fremskynder-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">hastighed<\/a>, som webmastere har fors\u00f8gt at optimere siden Googles meddelelse om <a href=\"https:\/\/webmasters.googleblog.com\/2010\/04\/using-site-speed-in-web-search-ranking.html\" target=\"_blank\" rel=\"noopener noreferrer\">at bruge webstedshastighed i web search ranking<\/a>. Indl\u00e6sningstider p\u00e5virker ogs\u00e5 sidevisninger og konverteringer. Det er blevet ansl\u00e5et, at en forsinkelse p\u00e5 et sekund i belastningstiden for stedet <a href=\"https:\/\/kinsta.com\/learn\/page-speed\/#slow-how-slow\" target=\"_blank\" rel=\"noopener noreferrer\">kan f\u00f8re til 7% reduktion i konverteringer<\/a>.<\/p>\n<p><strong>Sikkerhed<\/strong>: Du f\u00e5r ogs\u00e5 ekstra <a href=\"https:\/\/kinsta.com\/dk\/blog\/wordpress-sikkerhed\/\" target=\"_blank\" rel=\"noopener noreferrer\">sikkerhed<\/a> med et statisk sted. Da det er en masse statiske filer, der serveres, er der intikkeet meget at hacke ind i. Derudover kan du altid generere de statiske filer igen, hvis de g\u00e5r tabt.<\/p>\n<p><strong>Server omkostninger<\/strong>: At hoste et dynamisk site kr\u00e6ver, at din server er kompatibel med din teknologistapel. Hvis du arbejder med et statisk sted, kan du hoste det p\u00e5 n\u00e6sten enhver server, hvilket ogs\u00e5 reducerer omkostningerne forbundet med hosting.<\/p>\n<p>Generering af det statiske sted med Gatsby ved enhver \u00e6ndring beh\u00f8ver JavaScript, hvilket ogs\u00e5 kan udf\u00f8res p\u00e5 en lokal maskine, f\u00f8r de statiske filer overf\u00f8res til webstedet.<\/p>\n<h3>Hvorfor undg\u00e5 Gatsby?<\/h3>\n<p><strong>Intet indbygget dynamisk indhold<\/strong>: Hvis du vil bruge Gatsby, skal du overveje, hvordan du styrer og serverer dynamisk indhold, dvs. du bliver n\u00f8dt til at oprette en <a href=\"https:\/\/www.gatsbyjs.org\/docs\/data-fetching\/\" target=\"_blank\" rel=\"noopener noreferrer\">hybrid af statisk \/ dynamisk<\/a> for at opn\u00e5 det (mere om dette l\u00e6ngere nede).<\/p>\n<p>For eksempel skal <a href=\"https:\/\/kinsta.com\/dk\/blog\/wordpress-kommentar-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">kommentarer<\/a> hostes eksternt via en service som <a href=\"https:\/\/kinsta.com\/blog\/disqus-ads\/\" target=\"_blank\" rel=\"noopener noreferrer\">Disqus<\/a>.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/dk\/blog\/wordpress-kontaktformular-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">Contact forms<\/a> skal ogs\u00e5 omdirigeres gennem en ekstern partner som <a href=\"https:\/\/kinsta.com\/blog\/google-forms-alternative\/\">Google Forms<\/a>. Kort sagt vil du miste direkte kontrol over s\u00e5dant dynamisk indhold, da deres svar ikke er gemt p\u00e5 dine servere.<\/p>\n<p><strong>Hyppige bygninger er upraktiske<\/strong>: Statiske steder har ogs\u00e5 sp\u00f8rgsm\u00e5let om hyppige konverteringer. Enhver \u00e6ndring, du foretager p\u00e5 dit websted, afspejles kun, n\u00e5r du har regenereret siderne og uploadet dem igen p\u00e5 serveren.<\/p>\n<p><strong>Teknisk ekspertise<\/strong>: Gatsby er bygget p\u00e5 ReactJS og GraphQL. En vis viden om JavaScript og en grundl\u00e6ggende id\u00e9 om GraphQL er derfor n\u00f8dvendig for at arbejde med og port en webside til Gatsby.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/blog\/wordpress-vs-static-html\/\" target=\"_blank\" rel=\"noopener noreferrer\">Statiske websteder<\/a> er gode for dem, der leder efter en billig l\u00f8sning med h\u00f8j sikkerhed. Nogle anvendelsessager er portfolio websteder for freelancere og produktdemo-websteder.<\/p>\n<p>Hvis du synes fordelene opvejer manglerne, store! Vi vil nu pr\u00f8ve at konfigurere Gatsby til at integrere med vores <a href=\"https:\/\/kinsta.com\/dk\/blog\/wordpress-website-eksempler\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress-site<\/a>.<\/p>\n<p>Den seneste version af Gatsby-webstedet, som vi bygger i denne tutorial, er <a href=\"https:\/\/github.com\/sdaityari\/gatsby-wordpress\" target=\"_blank\" rel=\"noopener noreferrer\">tilg\u00e6ngelig p\u00e5 GitHub<\/a> til dit brug.<\/p>\n<h2>Trin 1: Ops\u00e6tning af Gatsby<\/h2>\n<p>I dette afsnit skal vi se p\u00e5, hvordan du installerer Gatsby og opretter et grundl\u00e6ggende statisk site med Gatsby.<\/p>\n<h3>Foruds\u00e6tninger<\/h3>\n<p>Det f\u00f8rste trin med at komme i gang med Gatsby er at kontrollere dens foruds\u00e6tninger. Gatsby serveres gennem npm, NodeJS-package installer. Derfor har du brug for NodeJS og npm i dit milj\u00f8, f\u00f8r du installerer Gatsby. Derudover kr\u00e6ver Gatsby, at du <a href=\"https:\/\/kinsta.com\/dk\/blog\/installerer-git\/\">installerer Git<\/a>, kildekodestyringssystemet.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>I \u00f8jeblikket kan Kinsta ikke hoste NodeJS-servere, og disse skal konfigureres andetsteds. Ikke desto mindre kan du bruge Kinsta til din WordPress-installations- og pull-data ved hj\u00e6lp af enten <a href=\"https:\/\/kinsta.com\/blog\/wordpress-rest-api\/\" target=\"_blank\" rel=\"noopener noreferrer\">REST API<\/a> eller <a href=\"https:\/\/kinsta.com\/blog\/wordpress-revolution-with-graphql\/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL<\/a>.<\/p>\n<\/aside>\n\n<p>Hvis du k\u00f8rer Windows, kan du installere NodeJS og Git gennem installationsprogrammet p\u00e5 downloadsiden. P\u00e5 en Mac kan du enten downloade deres installat\u00f8rer eller bruge hjemmebryggeri.<\/p>\n<pre><code>brew install nodejs\nbrew install git<\/code><\/pre>\n<p>Hvis du k\u00f8rer Linux OS, kan du installere NodeJS gennem et pakkeinstallationsprogram som apt.<\/p>\n<pre><code>sudo\u00a0apt update\nsudo\u00a0apt install\u00a0nodejs git<\/code><\/pre>\n<h3>Installer Gatsby<\/h3>\n<p>N\u00e5r du har installeret NodeJS og Git, er du klar til at installere Gatsby! Den nemmeste m\u00e5de er at k\u00f8re f\u00f8lgende kommando p\u00e5 terminalen (brug kommandolinjen npm p\u00e5 Windows):<\/p>\n<pre><code>npm\u00a0install\u00a0-g gatsby-cli<\/code><\/pre>\n<p>Installationsprogrammet installerer f\u00f8rst afh\u00e6ngigheder og derefter Gatsby. Du er nu klar til at oprette dit f\u00f8rste Gatsby-websted.<\/p>\n<h3>Byg og implementer dit Gatsby-website<\/h3>\n<p>K\u00f8r f\u00f8lgende kommando for at oprette et Gatsby-sted.<\/p>\n<pre><code>gatsby new gatsby-wordpress<\/code><\/pre>\n<p>Gatsby opretter et sted i directory\/gatsby-wordpress ved at klone <a href=\"https:\/\/github.com\/gatsbyjs\/gatsby-starter-default.git\" target=\"_blank\" rel=\"noopener noreferrer\">Gatsby starter template<\/a>. Du kan give en anden starter template, der skal klones. N\u00e5r kloningen er afsluttet og afh\u00e6ngighederne er installeret, kan du k\u00f8re en udviklingsversion af webstedet med f\u00f8lgende kommando.<\/p>\n<pre><code>cd\u00a0gatsby-wordpress\ngatsby develop<\/code><\/pre>\n<p>Du kan derefter bes\u00f8ge development version af \u200b\u200bwebstedet p\u00e5 <a href=\"http:\/\/localhost:8000\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:8000<\/a>.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/gatsby-starter-site.png\" alt=\"gatsby starter site\" width=\"1500\" height=\"715\"><figcaption class=\"wp-caption-text\">Gatsby Starter Site<\/figcaption><\/figure>\n<p>Det sidste trin er at opbygge dit statiske sted. F\u00f8lgende kommando opretter de statiske filer i det offentlige bibliotek. For at uploade det til en server kan du blot uploade indholdet af dette bibliotek til serverens rodkatalog. Det kan v\u00e6re n\u00f8dvendigt at tilf\u00f8je <a href=\"https:\/\/www.gatsbyjs.org\/docs\/path-prefix\">en path-pr\u00e6fiks<\/a> som www.example.com\/blog\/ som en root-URL til dine builds.<\/p>\n<pre><code>gatsby build<\/code><\/pre>\n<p>For at starte en HTML-server lokalt for at vise denne statiske form p\u00e5 dit websted, skal du bruge server-kommandoen. V\u00e6r opm\u00e6rk<code>som p\u00e5<\/code>, at det kun fungerer, n\u00e5r du har k\u00f8rt build-kommandoen.<\/p>\n<pre><code>gatsby serve<\/code><\/pre>\n<p>Nu hvor du med succes har oprettet et grundl\u00e6ggende statisk sted fra Gatsby, s\u00e5 lad os pr\u00f8ve at integrere det med WordPress.<\/p>\n<h2>Trin 2: S\u00e5dan forbindes Gatsby til WordPress<\/h2>\n<p>I dette afsnit<strong> integrerer du dit WordPress-sted med Gatsby<\/strong>. Du vil pege Gatsby p\u00e5 adressen p\u00e5 din WordPress-blog for at aktivere den til at tr\u00e6kke de nyeste data, n\u00e5r du k\u00f8rer development serveren eller genererer de statiske sider.<\/p>\n<p>Processen med at forbinde Gatsby til WordPress er at hente dine WordPress-data, der udl\u00f8ses af en build. N\u00e5r Gatsby har hentet WordPress-dataene, opretter det det statiske sted baseret p\u00e5 den aktuelle skabelon.<\/p>\n<p>Processen bruger WordPress-webstedet har en kilde til indl\u00e6ggene p\u00e5 Gatsby. For at lette denne udveksling skal du installere Gatsbys plugin til WordPress gennem f\u00f8lgende kommando:<\/p>\n<pre><code>npm\u00a0install\u00a0gatsby-source-wordpress<\/code><\/pre>\n<h3>Konfigurer Gatsby<\/h3>\n<p>F\u00f8j derefter dette plugin til Gatsbys konfigurationsfil gatsby-config.js.<\/p>\n<p>Tilf\u00f8j derefter f\u00f8lgende kode til filen for at forbinde Gatsby til din WordPress-kilde. I dette eksempel bruger vi et <a href=\"https:\/\/kinsta.com\/dk\/blog\/installeres-wordpress-lokalt\/\" target=\"_blank\" rel=\"noopener noreferrer\">lokalt hostet WordPress-sted<\/a> p\u00e5 MAMP. Som en lille note, kan du muligvis redigere titlen og beskrivelsen af \u200b\u200bwebstedet i siteMetadata.<\/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>Hent posts med GraphQL<\/h3>\n<p>N\u00e5r du har angivet kilden til WordPress-webstedet i din konfigurationsfil, skal du specificere, hvilke data der skal udvindes fra WordPress-webstedet. Gatsby bruger GraphQL, et sprog med open source-foresp\u00f8rgsler til API&#8217;er, til at f\u00e5 WordPress-indl\u00e6g i bulk.<\/p>\n<p>F\u00f8r du afslutter de foresp\u00f8rgsler, der skal v\u00e6lges, kan du interaktivt v\u00e6lge det indhold, du har brug for at hente fra WordPress. K\u00f8r development serveren og g\u00e5 til URL: \u00a0http:\/\/localhost:8000\/___graphqll for at \u00e5bne GraphQL-editoren.<\/p>\n<figure style=\"width: 1500px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/foresporgseldata-med-gaphql.png\" alt=\"Foresp\u00f8rgseldata med GraphQL\" width=\"1500\" height=\"487\"><figcaption class=\"wp-caption-text\">Foresp\u00f8rgseldata med GraphQL<\/figcaption><\/figure>\n<p>N\u00e5r du har afsluttet det indhold, der skal tr\u00e6kkes, kan du tilf\u00f8je GraphQL-foresp\u00f8rgsler til filen index.js.<\/p>\n<p>Lad os kun tr\u00e6kke titlen og uddraget fra hvert indl\u00e6g i \u00f8jeblikket. Vi kan tilf\u00f8je yderligere felter senere.<\/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 (\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  }\n<\/code><\/pre>\n<p>N\u00e5r du tjekker development webstedet, vil du bem\u00e6rke, at alle indl\u00e6g fra WordPress er trukket med deres headings og uddrag vist:<\/p>\n<figure id=\"attachment_58512\" aria-describedby=\"caption-attachment-58512\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58512\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/gatsby-startside-med-wordpress-indlaeg.png\" alt=\"Gatsby-startside med WordPress-indl\u00e6g\" width=\"1500\" height=\"543\"><figcaption id=\"caption-attachment-58512\" class=\"wp-caption-text\">Gatsby-startside med WordPress-indl\u00e6g<\/figcaption><\/figure>\n<p>Selvom dette ikke ser p\u00e6nt ud, har du med succes trukket de relevante data fra WordPress. Det n\u00e6ste trin er at oprette en ny side til hvert indl\u00e6g.<\/p>\n<h2>Trin 3: Opret en grundl\u00e6ggende page template<\/h2>\n<p>I dette afsnit udl\u00f8ser du Gatsby til at oprette et indl\u00e6g for hver enkelt side fra dit WordPress-sted og inkludere links til disse indl\u00e6g gennem <a href=\"https:\/\/kinsta.com\/blog\/what-is-a-wordpress-slug\/\" target=\"_blank\" rel=\"noopener noreferrer\">slug<\/a>.<\/p>\n<h3>Opret en side til hvert indl\u00e6g<\/h3>\n<p>Det f\u00f8rste trin efter at have trukket alle indl\u00e6g fra WordPress-kilden er at instruere Gatsby om at oprette en side til hvert indl\u00e6g. Dette er en handling, der er afsluttet ved hj\u00e6lp af handlingen <code>createPage<\/code>.<\/p>\n<p>F\u00f8j f\u00f8lgende kode til gatsby-node.js. Bem\u00e6rk, at vi desuden f\u00e5r indhold, forfatter, dato og slugs til hvert indl\u00e6g:<\/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>N\u00e5r du har trukket dataene fra GraphQL, opretter koden en side for hvert indl\u00e6g. I indl\u00e6gget kan du specificere URL-strukturen p\u00e5 siden baseret p\u00e5 sneglen ved hj\u00e6lp af stien.<\/p>\n<p>Alternativt kan du f\u00e5 postens ID og specificere det i URL&#8217;en. Komponent-variablen peger p\u00e5 den template, som indl\u00e6gget skal gengives gennem. Endelig passerer vi sneglen som kontekst af skabelonen. Dette er p\u00e5kr\u00e6vet for, at skabelonen kan foresp\u00f8rge efter det rigtige indl\u00e6g fra listen over hentede indl\u00e6g.<\/p>\n<p>Ideelt set er du n\u00f8dt til at videregive en variabel, der entydigt identificerer et indl\u00e6g som kontekst.<\/p>\n<p>Genstart development serveren, efter at du har foretaget \u00e6ndringer i filen gatsby-node.js, s\u00e5 \u00e6ndringerne f\u00e5r virkning.<\/p>\n<h3>Opret en skabelon for at f\u00e5 vist et indl\u00e6g<\/h3>\n<p>Opret et biblioteks-template i src-biblioteket. Opret en ny fil blog-post.js i skabelonen og indtast f\u00f8lgende kode:<\/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>GraphQL-foresp\u00f8rgslen f\u00e5r dato og forfatternavne, der vises mod slutningen af indl\u00e6gget. Du kan f\u00e5 yderligere felter ved hj\u00e6lp af <a href=\"http:\/\/localhost:8000\/___graphql\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL-editoren<\/a> og vise dem p\u00e5 postsiden.<\/p>\n<h3>Link to Pages in Index<\/h3>\n<p>DLink til sider i indekside til hvert indl\u00e6g. Du skal dog tilf\u00f8je et link til disse indl\u00e6g fra indekssiden. G\u00e5 over til index.js og \u00e6ndre koden for at tilf\u00f8je et link til hvert indl\u00e6g:<\/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>Her er status for indekssiden:<\/p>\n<figure id=\"attachment_58510\" aria-describedby=\"caption-attachment-58510\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58510\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/indeks-side-efter-tilfojelse-af-links-til-indlaeg.png\" alt=\"Indeks side efter tilf\u00f8jelse af links til indl\u00e6g\" width=\"1500\" height=\"620\"><figcaption id=\"caption-attachment-58510\" class=\"wp-caption-text\">Indeks side efter tilf\u00f8jelse af links til indl\u00e6g<\/figcaption><\/figure>\n<p>N\u00e5r du klikker p\u00e5 et link til et indl\u00e6g, her er blogindl\u00e6g siden, gengivet af blog-post.js:<\/p>\n<figure id=\"attachment_58508\" aria-describedby=\"caption-attachment-58508\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58508\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/blogindlaeg-med-detaljer.png\" alt=\"Blogindl\u00e6g med titel, indhold, oprettet dato og forfatter\" width=\"1500\" height=\"460\"><figcaption id=\"caption-attachment-58508\" class=\"wp-caption-text\">Blogindl\u00e6g med titel, indhold, oprettet dato og forfatter<\/figcaption><\/figure>\n<h2>Trin 4: Avancerede migrerings-opgaver<\/h2>\n<p>Selvom du muligvis har importeret hvert WordPress-indl\u00e6g, s\u00e5 lad os udf\u00f8re et par avancerede opgaver for at sikre dig, at du ikke st\u00e5r over for problemer i fremtiden. I dette afsnit kan du effektivt arbejde med billeder og f\u00f8je den sidste \u00e6ndrede dato-tidsstempel til dine data.<\/p>\n<h3>Image path conversions<\/h3>\n<p>Et af vores originale indl\u00e6g, &#8220;Post med billede!&#8221; havde et billede i det. Hvis du flytter til den tilsvarende side p\u00e5 Gatsby, vil du bem\u00e6rke, at billedet vises, men kilden til billedet er det samme som WordPress. I dette eksempel peger det p\u00e5 det lokalt hostede WordPress-billede.<\/p>\n<figure id=\"attachment_58511\" aria-describedby=\"caption-attachment-58511\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58511\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/gatsby-indlaeg-med-billede-og-kilde.png\" alt=\"Gatsby-indl\u00e6g med et billede og dets kilde\" width=\"1500\" height=\"767\"><figcaption id=\"caption-attachment-58511\" class=\"wp-caption-text\">Gatsby-indl\u00e6g med et billede og dets kilde<\/figcaption><\/figure>\n<p>Hvis du hoster billeder eksternt, udg\u00f8r dette ikke noget problem, da du forts\u00e6tter med at pege p\u00e5 din billedserver. Hvis du gemmer billederne i din WordPress-installation, skal du imidlertid ogs\u00e5 f\u00e5 billederne med indl\u00e6ggene!<\/p>\n<p>Dette adresseres af plugin til <a href=\"https:\/\/github.com\/TylerBarnes\/gatsby-wordpress-inline-images\" target=\"_blank\" rel=\"noopener noreferrer\">inline images<\/a>. F\u00f8rst skal du installere <code>gatsby-image<\/code> og derefter <code>gatsby-wordpress-inline-images<\/code> plugin.<\/p>\n<pre><code>npm install gatsby-image\nnpm install gatsby-wordpress-inline-images<\/code><\/pre>\n<p>F\u00f8j derefter f\u00f8lgende linjer til din <code>gatsby-config.js<\/code>-fil.<\/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>Genstart af development serveren efter at have foretaget disse \u00e6ndringer vil downloade billederne fra WordPress-webstedet og gemme dem lokalt. Du kan bekr\u00e6fte dette fra stien til det samme billede.<\/p>\n<h3>Display sidst \u00e6ndret dato<\/h3>\n<p>Hvis du administrerer en blog, hvor du regelm\u00e6ssigt opdaterer dine indl\u00e6g, kan du eventuelt informere l\u00e6serne, n\u00e5r et indl\u00e6g sidst blev opdateret. Selvom du trak den &#8220;oprettede dato&#8221; i GraphQL-foresp\u00f8rgslen tidligere, fort\u00e6ller dette afsnit, hvordan du ogs\u00e5 tr\u00e6kker den &#8220;sidste \u00e6ndrede&#8221; tidsstempel.<\/p>\n<p>For at tilf\u00f8je den sidste \u00e6ndrede tidsstempel fra WordPress til dit Gatsby-indl\u00e6g, skal du f\u00f8je det \u00e6ndrede felt til listen over poster i din GraphQL-foresp\u00f8rgsel. Det er en tidsstempel som <code>date<\/code>, s\u00e5 du skal ogs\u00e5 tilf\u00f8je parameter <code>formatString<\/code>. Her er den \u00e6ndrede <code>blog-post.js<\/code>-fil:<\/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  }\n<\/code><\/pre>\n<p>N\u00e5r du har tilf\u00f8jet dette, vil du kunne se den sidst \u00e6ndrede tidsstempel p\u00e5 blogindl\u00e6gs siden p\u00e5 Gatsby:<\/p>\n<figure id=\"attachment_58517\" aria-describedby=\"caption-attachment-58517\" style=\"width: 1500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58517\" src=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2019\/10\/send-med-den-sidste-aendrede-tidsstempel.png\" alt=\"Send med den sidste \u00e6ndrede tidsstempel\" width=\"1500\" height=\"520\"><figcaption id=\"caption-attachment-58517\" class=\"wp-caption-text\">Send med den sidste \u00e6ndrede tidsstempel<\/figcaption><\/figure>\n<h2>S\u00e5dan implementerer du dit Gatsby-websted p\u00e5 Kinsta<\/h2>\n<p>Ud over\u00a0<a href=\"https:\/\/kinsta.com\/dk\/wordpress-hosting\/\">WordPress Hosting<\/a>\u00a0tilbyder Kinsta\u00a0<a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applikation Hosting<\/a>,\u00a0<a href=\"https:\/\/sevalla.com\/database-hosting\/\">Database Hosting<\/a>\u00a0og\u00a0<a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\">Statisk Webstedshosting<\/a>. Du kan hoste op til 100 statiske websteder gratis!<\/p>\n<p>For at implementere dit websted med Statisk Webstedshosting, skal du f\u00f8rst skubbe din kode til en foretrukken Git-udbyder (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>,\u00a0<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a>, eller <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>)\u00a0og derefter f\u00f8lge disse trin for at implementere den:<\/p>\n<ol>\n<li>Log ind eller opret en konto for at se dit\u00a0<a href=\"https:\/\/my.kinsta.com\/?lang=da\">MyKinsta<\/a>-dashboard.<\/li>\n<li>Godkend Kinsta med din Git-udbyder.<\/li>\n<li>Klik p\u00e5\u00a0<strong>Statiske websteder<\/strong>\u00a0i venstre sidebar, og klik derefter p\u00e5\u00a0<strong>Tilf\u00f8j websted<\/strong>.<\/li>\n<li>V\u00e6lg lageret og den filial, du \u00f8nsker at implementere fra.<\/li>\n<li>Tildel et unikt navn til dit websted.<\/li>\n<li>Tilf\u00f8j byggeindstillingerne i f\u00f8lgende format:\n<ul>\n<li><strong>Build command<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Node Version<\/strong>: <code>18.16.0<\/code><\/li>\n<li><strong>Udgiv bibliotek<\/strong>: <code>public<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Klik til sidst p\u00e5\u00a0<strong>Opret websted.<\/strong><\/li>\n<\/ol>\n\n<h2>Resum\u00e9<\/h2>\n<p>At tr\u00e6ffe beslutningen om at konvertere dit WordPress-websted til et statisk websted og drage fordel af Gatsby kan v\u00e6re en udfordrende opgave. For at g\u00f8re det skal du udf\u00f8re f\u00f8lgende trin:<\/p>\n<ul>\n<li>Installer Gatsby for at bygge en startside<\/li>\n<li>Forbind Gatsby til WordPress-kilde via GraphQL<\/li>\n<li>Opret templates til blogindl\u00e6g<\/li>\n<li>Importer alle dine billeder fra WordPress<\/li>\n<li>Vis den sidste \u00e6ndrede tidsstempel fra WordPress<\/li>\n<\/ul>\n<p><em>Nu din tur: Har du spillet omkring Gatsby? Hvad er din oplevelse med det? Fort\u00e6l os i kommentarerne!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hvordan fungerer et typisk dynamisk websted, som dem, der er baseret p\u00e5 WordPress? N\u00e5r en bes\u00f8gende indtaster URL&#8217;en i en browser eller bes\u00f8ger dit websted via &#8230;<\/p>\n","protected":false},"author":118,"featured_media":36136,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[208,209],"topic":[699,737,754],"class_list":["post-36123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-headless","tag-serverless","topic-headless-cms","topic-statiske-site-generatorer","topic-wordpress-udvikling"],"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>Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)<\/title>\n<meta name=\"description\" content=\"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.\" \/>\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\/dk\/blog\/gatsby-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)\" \/>\n<meta property=\"og:description\" content=\"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-06T00:55:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-11T12:49:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.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=\"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:label1\" content=\"Skrevet af\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shaumik Daityari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\"},\"author\":{\"name\":\"Shaumik Daityari\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036\"},\"headline\":\"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)\",\"datePublished\":\"2020-03-06T00:55:36+00:00\",\"dateModified\":\"2023-10-11T12:49:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\"},\"wordCount\":2598,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg\",\"keywords\":[\"headless\",\"serverless\"],\"articleSection\":[\"Bedste WordPress Tutorials\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\",\"name\":\"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg\",\"datePublished\":\"2020-03-06T00:55:36+00:00\",\"dateModified\":\"2023-10-11T12:49:22+00:00\",\"description\":\"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/dk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Headless CMS\",\"item\":\"https:\/\/kinsta.com\/dk\/emner\/headless-cms\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/dk\/#website\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Hurtig, sikker, premium hostingl\u00f8sninger\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/dk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\",\"https:\/\/x.com\/kinsta_dk\",\"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\/dk\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036\",\"name\":\"Shaumik Daityari\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/shaumikdaityari\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)","description":"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.","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\/dk\/blog\/gatsby-wordpress\/","og_locale":"da_DK","og_type":"article","og_title":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)","og_description":"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.","og_url":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","article_published_time":"2020-03-06T00:55:36+00:00","article_modified_time":"2023-10-11T12:49:22+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","type":"image\/jpeg"}],"author":"Shaumik Daityari","twitter_card":"summary_large_image","twitter_description":"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.","twitter_image":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","twitter_creator":"@kinsta_dk","twitter_site":"@kinsta_dk","twitter_misc":{"Skrevet af":"Shaumik Daityari","Estimeret l\u00e6setid":"16 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/"},"author":{"name":"Shaumik Daityari","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036"},"headline":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)","datePublished":"2020-03-06T00:55:36+00:00","dateModified":"2023-10-11T12:49:22+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/"},"wordCount":2598,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","keywords":["headless","serverless"],"articleSection":["Bedste WordPress Tutorials"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/","url":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/","name":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","datePublished":"2020-03-06T00:55:36+00:00","dateModified":"2023-10-11T12:49:22+00:00","description":"Vil du vide mere om headless CMS, Gatsby og WordPress? L\u00e6r hvordan du opretter superhurtige websteder drevet af Gatsby og WordPress med denne tutorial.","breadcrumb":{"@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2020\/03\/opbygge-websteder.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/dk\/blog\/gatsby-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/dk\/"},{"@type":"ListItem","position":2,"name":"Headless CMS","item":"https:\/\/kinsta.com\/dk\/emner\/headless-cms\/"},{"@type":"ListItem","position":3,"name":"Introduktion til at opbygge websteder med Gatsby og WordPress (hurtigt og statisk)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/dk\/#website","url":"https:\/\/kinsta.com\/dk\/","name":"Kinsta\u00ae","description":"Hurtig, sikker, premium hostingl\u00f8sninger","publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/dk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/dk\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/dk\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","https:\/\/x.com\/kinsta_dk","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\/dk\/#\/schema\/person\/9d2eef02950231307b3e89cc7c932036","name":"Shaumik Daityari","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/shaumikdaityari\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/36123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/comments?post=36123"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/36123\/revisions"}],"predecessor-version":[{"id":52865,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/36123\/revisions\/52865"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/jp"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/translations\/dk"},{"href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/36123\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media\/36136"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media?parent=36123"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/tags?post=36123"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/topic?post=36123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}