{"id":43931,"date":"2026-08-08T08:00:51","date_gmt":"2026-08-08T05:00:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=43931"},"modified":"2026-08-08T08:01:17","modified_gmt":"2026-08-08T05:01:17","slug":"wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/","title":{"rendered":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<h2>WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Modern web geli\u015ftirme d\u00fcnyas\u0131nda performans, g\u00fcvenlik ve geli\u015ftirici deneyimi, projelerin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. Geleneksel i\u00e7erik y\u00f6netim sistemleri (CMS) ile statik site olu\u015fturucular\u0131n (SSG) birle\u015fimi, bu ihtiya\u00e7lar\u0131 kar\u015f\u0131lamak i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunar. Bu makalede, d\u00fcnyan\u0131n en pop\u00fcler CMS&#8217;i olan WordPress&#8217;in esnek i\u00e7erik y\u00f6netim yeteneklerini, y\u00fcksek performansl\u0131 ve modern bir React tabanl\u0131 statik site olu\u015fturucu olan Gatsby.js ile nas\u0131l entegre edece\u011fimizi ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Neden WordPress ve Gatsby.js Birlikte Kullan\u0131lmal\u0131?<\/h3>\n<p>WordPress, milyonlarca web sitesinin arkas\u0131ndaki g\u00fc\u00e7t\u00fcr. Kullan\u0131c\u0131 dostu aray\u00fcz\u00fc, zengin eklenti ekosistemi ve tema se\u00e7enekleriyle i\u00e7erik olu\u015fturucular ve y\u00f6neticiler i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Ancak, dinamik yap\u0131s\u0131 ve PHP tabanl\u0131 \u00e7al\u0131\u015fmas\u0131 nedeniyle performans ve g\u00fcvenlik konusunda baz\u0131 zorluklar ya\u015fayabilir. \u0130\u015fte burada Gatsby.js devreye girer.<\/p>\n<p>Gatsby.js, React, GraphQL ve Webpack gibi modern web teknolojilerini kullanarak h\u0131zl\u0131, optimize edilmi\u015f ve g\u00fcvenli statik web siteleri olu\u015fturmay\u0131 sa\u011flayan bir framework&#8217;t\u00fcr. WordPress&#8217;in i\u00e7erik y\u00f6netimini Gatsby.js&#8217;in performans ve g\u00fcvenlik avantajlar\u0131yla birle\u015ftirmek, &#8220;headless CMS&#8221; yakla\u015f\u0131m\u0131n\u0131n en iyi \u00f6rneklerinden birini sunar.<\/p>\n<p>Bu birle\u015fimin sundu\u011fu temel avantajlar \u015funlard\u0131r:<\/p>\n<p>*   <strong>\u00dcst\u00fcn Performans:<\/strong> Gatsby.js, web sitenizi derleme (build) zaman\u0131nda statik HTML, CSS ve JavaScript dosyalar\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu, sunucu taraf\u0131nda i\u015fleme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r ve sitenizin inan\u0131lmaz derecede h\u0131zl\u0131 y\u00fcklenmesini sa\u011flar. Google Lighthouse gibi performans testlerinde y\u00fcksek puanlar almak kolayla\u015f\u0131r.<br \/>\n*   <strong>Art\u0131r\u0131lm\u0131\u015f G\u00fcvenlik:<\/strong> WordPress backend&#8217;i (y\u00f6netim paneli ve veritaban\u0131) do\u011frudan internete a\u00e7\u0131k olmaz. Gatsby.js uygulamas\u0131 sadece statik dosyalardan olu\u015ftu\u011fu i\u00e7in, olas\u0131 sald\u0131r\u0131 y\u00fczeyi \u00f6nemli \u00f6l\u00e7\u00fcde azal\u0131r. DDoS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 daha diren\u00e7li hale gelir.<br \/>\n*   <strong>M\u00fckemmel Geli\u015ftirici Deneyimi:<\/strong> Gatsby.js, modern JavaScript ekosisteminin t\u00fcm avantajlar\u0131n\u0131 sunar. React bile\u015fenleri, GraphQL veri katman\u0131 ve zengin eklenti sistemi sayesinde geli\u015ftiriciler daha verimli ve keyifli bir \u015fekilde \u00e7al\u0131\u015fabilirler.<br \/>\n*   <strong>Daha \u0130yi SEO:<\/strong> H\u0131zl\u0131 y\u00fcklenen siteler, arama motorlar\u0131 taraf\u0131ndan daha \u00e7ok sevilir. Gatsby.js&#8217;in performans optimizasyonlar\u0131 ve \u00f6nceden olu\u015fturulmu\u015f HTML yap\u0131s\u0131, arama motoru optimizasyonu (SEO) i\u00e7in do\u011fal bir avantaj sa\u011flar.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik ve Da\u011f\u0131t\u0131m Kolayl\u0131\u011f\u0131:<\/strong> Statik dosyalar, CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) \u00fczerinden kolayca ve uygun maliyetle da\u011f\u0131t\u0131labilir. Bu, y\u00fcksek trafikli siteler i\u00e7in bile m\u00fckemmel \u00f6l\u00e7eklenebilirlik anlam\u0131na gelir.<br \/>\n*   <strong>\u0130\u00e7erik Y\u00f6netimi Kolayl\u0131\u011f\u0131:<\/strong> \u0130\u00e7erik y\u00f6neticileri, al\u0131\u015ft\u0131klar\u0131 WordPress aray\u00fcz\u00fcnde i\u00e7eriklerini olu\u015fturmaya ve d\u00fczenlemeye devam ederken, frontend modern bir Gatsby.js uygulamas\u0131 taraf\u0131ndan sunulur.<\/p>\n<h3>Gatsby.js ve WordPress Entegrasyonunun Temelleri<\/h3>\n<p>WordPress i\u00e7eri\u011fini Gatsby.js ile kullanman\u0131n temel mant\u0131\u011f\u0131, WordPress&#8217;i bir &#8220;headless CMS&#8221; olarak konumland\u0131rmakt\u0131r. Yani WordPress sadece i\u00e7erik depolama ve y\u00f6netim katman\u0131 olarak i\u015flev g\u00f6r\u00fcrken, bu i\u00e7eri\u011fi bir API arac\u0131l\u0131\u011f\u0131yla Gatsby.js uygulamas\u0131na sunar. Gatsby.js ise bu API&#8217;den ald\u0131\u011f\u0131 verileri kullanarak statik sayfalar\u0131 derler.<\/p>\n<h4>Veri Kayna\u011f\u0131 Olarak WordPress REST API veya GraphQL<\/h4>\n<p>WordPress, varsay\u0131lan olarak g\u00fc\u00e7l\u00fc bir REST API&#8217;ye sahiptir. Bu API, g\u00f6nderiler, sayfalar, kategoriler, etiketler ve kullan\u0131c\u0131lar gibi t\u00fcm i\u00e7erik t\u00fcrlerine programatik eri\u015fim sa\u011flar. Gatsby.js, bu REST API&#8217;yi kullanarak WordPress&#8217;ten veri \u00e7ekebilir.<\/p>\n<p>Ancak, Gatsby.js&#8217;in GraphQL ile derin entegrasyonu g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, WordPress i\u00e7in <code>WPGraphQL<\/code> eklentisini kullanmak \u00e7ok daha verimli ve esnek bir yakla\u015f\u0131m sunar. <code>WPGraphQL<\/code>, WordPress verilerini GraphQL sorgular\u0131yla \u00e7ekmeyi m\u00fcmk\u00fcn k\u0131lar ve Gatsby&#8217;nin dahili GraphQL veri katman\u0131yla m\u00fckemmel bir uyum i\u00e7indedir. Bu sayede, ihtiyac\u0131n\u0131z olan veriyi tam olarak sorgulayabilir ve gereksiz veri y\u00fck\u00fcn\u00fc azaltabilirsiniz.<\/p>\n<h4>Gatsby&#8217;nin Veri Katman\u0131 ve Kaynak Eklentileri<\/h4>\n<p>Gatsby.js, <code>gatsby-source<\/code> eklentileri arac\u0131l\u0131\u011f\u0131yla \u00e7e\u015fitli veri kaynaklar\u0131ndan veri \u00e7ekebilir. WordPress i\u00e7in \u00f6zel olarak geli\u015ftirilmi\u015f <code>gatsby-source-wordpress<\/code> (REST API tabanl\u0131) veya <code>gatsby-source-wordpress-experimental<\/code> (WPGraphQL tabanl\u0131, \u00f6nerilir) gibi eklentiler bulunur. Bu eklentiler, WordPress verilerini Gatsby&#8217;nin dahili GraphQL veri katman\u0131na aktar\u0131r. Geli\u015ftiriciler daha sonra bu verilere GraphiQL aray\u00fcz\u00fc veya kod i\u00e7inde GraphQL sorgular\u0131 yazarak eri\u015febilirler.<\/p>\n<h4>Statik Site Olu\u015fturma S\u00fcreci<\/h4>\n<p>Gatsby.js ile WordPress i\u00e7eri\u011fini kullanman\u0131n \u00f6z\u00fc, derleme (build) zaman\u0131nda ger\u00e7ekle\u015fir. <code>gatsby build<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda:<\/p>\n<p>1.  Gatsby kaynak eklentisi, WordPress sitenizden t\u00fcm gerekli verileri (g\u00f6nderiler, sayfalar vb.) \u00e7eker.<br \/>\n2.  Bu veriler, Gatsby&#8217;nin dahili GraphQL \u015femas\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr.<br \/>\n3.  <code>gatsby-node.js<\/code> dosyas\u0131nda tan\u0131mlanan kurallara g\u00f6re, \u00e7ekilen veriler kullan\u0131larak programatik olarak sayfalar olu\u015fturulur. Her g\u00f6nderi veya sayfa i\u00e7in ayr\u0131 bir statik HTML dosyas\u0131 \u00fcretilir.<br \/>\n4.  React bile\u015fenleri, bu verilerle doldurulur ve statik HTML, CSS ve JavaScript dosyalar\u0131 olu\u015fturulur.<br \/>\n5.  Sonu\u00e7 olarak, da\u011f\u0131t\u0131ma haz\u0131r, tamamen statik bir web sitesi elde edilir.<\/p>\n<h3>Ad\u0131m Ad\u0131m Entegrasyon Rehberi<\/h3>\n<p>\u015eimdi, WordPress i\u00e7eri\u011fini Gatsby.js uygulamas\u0131na entegre etmek i\u00e7in izlemeniz gereken ad\u0131mlar\u0131 detayl\u0131ca inceleyelim.<\/p>\n<h4>Ad\u0131m 1: WordPress Kurulumu ve \u0130\u00e7erik Haz\u0131rl\u0131\u011f\u0131<\/h4>\n<p>\u00d6ncelikle, bir WordPress kurulumuna ihtiyac\u0131n\u0131z var. Mevcut bir WordPress siteniz varsa onu kullanabilir veya yerel bir ortamda (Local by Flywheel, XAMPP, MAMP) ya da bir hosting sa\u011flay\u0131c\u0131s\u0131nda yeni bir kurulum yapabilirsiniz.<\/p>\n<p>1.  <strong>WordPress Kurulumu:<\/strong> WordPress&#8217;i kurun ve temel ayarlar\u0131n\u0131 yap\u0131n. Kal\u0131c\u0131 ba\u011flant\u0131lar\u0131 (Permalinks) <code>Post Name<\/code> (G\u00f6nderi Ad\u0131) olarak ayarlaman\u0131z \u015fiddetle tavsiye edilir. Bu, Gatsby&#8217;de daha temiz URL yap\u0131lar\u0131 olu\u015fturman\u0131z\u0131 sa\u011flar. Ayarlar > Kal\u0131c\u0131 Ba\u011flant\u0131lar yolunu izleyerek bu ayar\u0131 yapabilirsiniz.<br \/>\n2.  <strong>\u0130\u00e7erik Olu\u015fturma:<\/strong> Entegrasyonu test etmek i\u00e7in birka\u00e7 \u00f6rnek g\u00f6nderi ve sayfa olu\u015fturun. Ba\u015fl\u0131k, i\u00e7erik, \u00f6ne \u00e7\u0131kan g\u00f6rsel, kategori ve etiketler eklemeyi unutmay\u0131n.<br \/>\n3.  <strong>WPGraphQL Eklentisi Kurulumu (\u00d6nerilen):<\/strong> WordPress paneline giri\u015f yap\u0131n. Eklentiler > Yeni Ekle yolunu izleyerek <code>WPGraphQL<\/code> eklentisini aray\u0131n ve kurup etkinle\u015ftirin. Bu eklenti, WordPress sitenizin GraphQL API endpoint&#8217;ini (<code>\/graphql<\/code>) sa\u011flayacakt\u0131r.<br \/>\n    *   <strong>Ek WPGraphQL Eklentileri:<\/strong> E\u011fer Yoast SEO veya Advanced Custom Fields (ACF) gibi eklentileri kullan\u0131yorsan\u0131z, <code>WPGraphQL for ACF<\/code> ve <code>WPGraphQL for Yoast SEO<\/code> gibi uyumlu eklentileri de kurup etkinle\u015ftirmeniz, bu eklentilerin verilerini Gatsby&#8217;ye \u00e7ekmenizi sa\u011flar.<\/p>\n<h4>Ad\u0131m 2: Gatsby.js Projesi Olu\u015fturma<\/h4>\n<p>Gatsby CLI (Komut Sat\u0131r\u0131 Aray\u00fcz\u00fc) kurulu de\u011filse, \u00f6ncelikle kurman\u0131z gerekir:<br \/>\n<code>npm install -g gatsby-cli<\/code><\/p>\n<p>Ard\u0131ndan, yeni bir Gatsby projesi olu\u015fturun:<br \/>\n<code>gatsby new my-wordpress-site https:\/\/github.com\/gatsbyjs\/gatsby-starter-hello-world<\/code><\/p>\n<p>Bu komut, <code>my-wordpress-site<\/code> ad\u0131nda yeni bir dizin olu\u015fturacak ve i\u00e7ine temel bir Gatsby projesi kuracakt\u0131r. Proje dizinine gidin:<br \/>\n<code>cd my-wordpress-site<\/code><\/p>\n<h4>Ad\u0131m 3: Gatsby Kaynak Eklentisini Kurma ve Yap\u0131land\u0131rma<\/h4>\n<p>WordPress verilerini Gatsby&#8217;ye \u00e7ekmek i\u00e7in <code>gatsby-source-wordpress-experimental<\/code> eklentisini kullanaca\u011f\u0131z (WPGraphQL kulland\u0131\u011f\u0131m\u0131z i\u00e7in bu \u00f6nerilir). Proje dizininizde \u015fu komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<p><code>npm install gatsby-source-wordpress-experimental<\/code><\/p>\n<p>Ard\u0131ndan, <code>gatsby-config.js<\/code> dosyan\u0131z\u0131 a\u00e7\u0131n ve eklentiyi yap\u0131land\u0131r\u0131n:<\/p>\n<pre><code class=\"language-javascript\">module.exports = {\n  siteMetadata: {\n    title: <code>Gatsby WordPress Starter<\/code>,\n    description: <code>Bir Gatsby ve WordPress entegrasyonu \u00f6rne\u011fi.<\/code>,\n    author: <code>@gatsbyjs<\/code>,\n  },\n  plugins: [\n    <code>gatsby-plugin-react-helmet<\/code>,\n    {\n      resolve: <code>gatsby-source-filesystem<\/code>,\n      options: {\n        name: <code>images<\/code>,\n        path: <code>${__dirname}\/src\/images<\/code>,\n      },\n    },\n    <code>gatsby-transformer-sharp<\/code>,\n    <code>gatsby-plugin-sharp<\/code>,\n    {\n      resolve: <code>gatsby-source-wordpress-experimental<\/code>,\n      options: {\n        url:\n          process.env.WPGRAPHQL_URL ||\n          <code>http:\/\/localhost\/wordpress\/graphql<\/code>, \/\/ Kendi WordPress GraphQL endpoint'inizi buraya girin\n        verbose: true,\n        develop: {\n          nodeUpdateInterval: 3000,\n          hardCacheMediaFiles: true,\n        },\n        production: {\n          hardCacheMediaFiles: false,\n        },\n        debug: {\n          graphql: {\n            showQueryVarsOnRequest: true,\n          },\n        },\n        \/\/ ACF kullan\u0131yorsan\u0131z bu k\u0131sm\u0131 etkinle\u015ftirin\n        \/\/ useACF: true,\n        \/\/ acf: {\n        \/\/   postTypes: [<code>post<\/code>, <code>page<\/code>],\n        \/\/ },\n        \/\/ Yoast SEO kullan\u0131yorsan\u0131z bu k\u0131sm\u0131 etkinle\u015ftirin\n        \/\/ enableWpArticles: true,\n        \/\/ enableWpCategories: true,\n        \/\/ enableWpTags: true,\n        \/\/ enableWpPages: true,\n        \/\/ enableWpMedia: true,\n        \/\/ enableWpUsers: true,\n        \/\/ enableWpMenus: true,\n      },\n    },\n    \/\/ Di\u011fer eklentiler...\n  ],\n};<\/code><\/pre>\n<p><code>url<\/code> alan\u0131n\u0131 kendi WordPress sitenizin GraphQL endpoint&#8217;i ile de\u011fi\u015ftirmeyi unutmay\u0131n. Genellikle <code>http:\/\/yourdomain.com\/graphql<\/code> veya <code>http:\/\/localhost\/yourwordpressfolder\/graphql<\/code> \u015feklinde olacakt\u0131r.<\/p>\n<h4>Ad\u0131m 4: Verileri Sorgulama (GraphQL)<\/h4>\n<p>Gatsby projenizi geli\u015ftirme modunda ba\u015flat\u0131n:<br \/>\n<code>gatsby develop<\/code><\/p>\n<p>Bu komut, projenizi <code>http:\/\/localhost:8000<\/code> adresinde \u00e7al\u0131\u015ft\u0131racak ve ayn\u0131 zamanda <code>http:\/\/localhost:8000\/___graphql<\/code> adresinde bir GraphiQL aray\u00fcz\u00fc sa\u011flayacakt\u0131r. GraphiQL, Gatsby&#8217;nin veri katman\u0131n\u0131 ke\u015ffetmek ve GraphQL sorgular\u0131 yazmak i\u00e7in harika bir ara\u00e7t\u0131r.<\/p>\n<p>GraphiQL&#8217;i a\u00e7\u0131n ve WordPress&#8217;ten \u00e7ekilen verileri g\u00f6rmek i\u00e7in \u015fu sorgular\u0131 deneyin:<\/p>\n<p><strong>T\u00fcm WordPress G\u00f6nderilerini \u00c7ekmek:<\/strong><\/p>\n<pre><code class=\"language-graphql\">query MyQuery {\n  allWpPost {\n    nodes {\n      id\n      title\n      excerpt\n      uri\n      date(formatString: &quot;MMMM DD, YYYY&quot;)\n    }\n  }\n}<\/code><\/pre>\n<p>Bu sorgu, t\u00fcm WordPress g\u00f6nderilerinin <code>id<\/code>, <code>title<\/code>, <code>excerpt<\/code>, <code>uri<\/code> (kal\u0131c\u0131 ba\u011flant\u0131) ve <code>date<\/code> alanlar\u0131n\u0131 d\u00f6nd\u00fcrecektir. <code>allWpPost<\/code> gibi tipler, <code>gatsby-source-wordpress-experimental<\/code> eklentisi taraf\u0131ndan otomatik olarak olu\u015fturulur.<\/p>\n<p><strong>Tek Bir WordPress G\u00f6nderisini \u00c7ekmek (\u00d6zel bir <code>uri<\/code> ile):<\/strong><\/p>\n<pre><code class=\"language-graphql\">query MySinglePostQuery($uri: String!) {\n  wpPost(uri: { eq: $uri }) {\n    title\n    content\n    date(formatString: &quot;MMMM DD, YYYY&quot;)\n    author {\n      node {\n        name\n      }\n    }\n    categories {\n      nodes {\n        name\n      }\n    }\n    featuredImage {\n      node {\n        altText\n        localFile {\n          childImageSharp {\n            gatsbyImageData(\n              width: 800\n              placeholder: BLURRED\n              formats: [AUTO, WEBP, AVIF]\n            )\n          }\n        }\n      }\n    }\n  }\n}<\/code><\/pre>\n<p>Bu sorgu, tek bir g\u00f6nderinin detaylar\u0131n\u0131 \u00e7ekmek i\u00e7in kullan\u0131labilir. <code>featuredImage<\/code> alan\u0131nda <code>gatsbyImageData<\/code> kullan\u0131larak g\u00f6rsellerin otomatik olarak optimize edildi\u011fine dikkat edin.<\/p>\n<h4>Ad\u0131m 5: Sayfalar\u0131 Programatik Olarak Olu\u015fturma<\/h4>\n<p>Gatsby&#8217;de, WordPress g\u00f6nderileri veya sayfalar\u0131 gibi dinamik i\u00e7erikler i\u00e7in ayr\u0131 ayr\u0131 sayfalar olu\u015fturmak i\u00e7in <code>gatsby-node.js<\/code> dosyas\u0131n\u0131 kullan\u0131r\u0131z. Bu dosya, Gatsby&#8217;nin Node.js \u00e7al\u0131\u015fma zaman\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 ve derleme s\u00fcrecini \u00f6zelle\u015ftirmek i\u00e7in g\u00fc\u00e7l\u00fc API&#8217;ler sundu\u011fu yerdir.<\/p>\n<p>Projenizin k\u00f6k dizininde <code>gatsby-node.js<\/code> ad\u0131nda bir dosya olu\u015fturun (e\u011fer yoksa) ve i\u00e7ine a\u015fa\u011f\u0131daki kodu ekleyin:<\/p>\n<pre><code class=\"language-javascript\">const path = require(<code>path<\/code>);\n\nexports.createPages = async ({ graphql, actions }) =&gt; {\n  const { createPage } = actions;\n\n  \/\/ T\u00fcm WordPress g\u00f6nderilerini sorgula\n  const result = await graphql(<code>\n    query {\n      allWpPost {\n        nodes {\n          uri\n          id\n        }\n      }\n    }\n  <\/code>);\n\n  if (result.errors) {\n    throw result.errors;\n  }\n\n  const posts = result.data.allWpPost.nodes;\n\n  \/\/ G\u00f6nderi \u015fablonunu tan\u0131mla\n  const blogPostTemplate = path.resolve(<code>.\/src\/templates\/blog-post.js<\/code>);\n\n  \/\/ Her g\u00f6nderi i\u00e7in bir sayfa olu\u015ftur\n  posts.forEach((post) =&gt; {\n    createPage({\n      path: post.uri, \/\/ WordPress'ten gelen URI'yi kullan\n      component: blogPostTemplate,\n      context: {\n        id: post.id,\n        uri: post.uri, \/\/ \u015eablonda kullanmak i\u00e7in ID ve URI'yi context olarak ge\u00e7ir\n      },\n    });\n  });\n};<\/code><\/pre>\n<p>Bu kod par\u00e7as\u0131:<br \/>\n1.  <code>graphql<\/code> yard\u0131mc\u0131 fonksiyonunu kullanarak t\u00fcm WordPress g\u00f6nderilerinin <code>uri<\/code> ve <code>id<\/code>&#8216;lerini \u00e7eker.<br \/>\n2.  <code>blogPostTemplate<\/code> ad\u0131nda bir \u015fablon dosyas\u0131n\u0131n yolunu tan\u0131mlar. Bu \u015fablon, her bir g\u00f6nderinin i\u00e7eri\u011fini g\u00f6sterecek React bile\u015fenini i\u00e7erecektir.<br \/>\n3.  <code>posts.forEach<\/code> d\u00f6ng\u00fcs\u00fc ile her bir g\u00f6nderi i\u00e7in <code>createPage<\/code> API&#8217;sini \u00e7a\u011f\u0131r\u0131r.<br \/>\n4.  <code>path<\/code> olarak WordPress&#8217;ten gelen <code>uri<\/code>&#8216;yi kullan\u0131r\u0131z, bu da temiz URL&#8217;ler sa\u011flar (\u00f6rne\u011fin <code>\/hello-world\/<\/code>).<br \/>\n5.  <code>component<\/code> olarak tan\u0131mlad\u0131\u011f\u0131m\u0131z \u015fablon dosyas\u0131n\u0131 belirtiriz.<br \/>\n6.  <code>context<\/code> objesi ile g\u00f6nderinin <code>id<\/code> ve <code>uri<\/code>&#8216;sini \u015fablona ge\u00e7iririz. Bu sayede \u015fablon i\u00e7inde bu <code>id<\/code> veya <code>uri<\/code>&#8216;yi kullanarak g\u00f6nderinin tam detaylar\u0131n\u0131 sorgulayabiliriz.<\/p>\n<h4>Ad\u0131m 6: \u015eablonlar\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi, <code>gatsby-node.js<\/code> dosyas\u0131nda referans verdi\u011fimiz \u015fablon dosyas\u0131n\u0131 olu\u015fturmam\u0131z gerekiyor. <code>src<\/code> dizininin alt\u0131nda <code>templates<\/code> ad\u0131nda yeni bir klas\u00f6r olu\u015fturun ve i\u00e7ine <code>blog-post.js<\/code> ad\u0131nda bir dosya ekleyin: <code>src\/templates\/blog-post.js<\/code>.<\/p>\n<p>Bu dosya, her bir blog g\u00f6nderisi i\u00e7in kullan\u0131lacak React bile\u015fenini i\u00e7erecektir.<\/p>\n<p>Bu \u015fablonda:<br \/>\n*   <code>data<\/code> prop&#8217;u, <code>pageQuery<\/code> taraf\u0131ndan \u00e7ekilen verileri i\u00e7erir.<br \/>\n*   <code>pageContext<\/code> prop&#8217;u, <code>gatsby-node.js<\/code>&#8216;den ge\u00e7irdi\u011fimiz <code>id<\/code> ve <code>uri<\/code>&#8216;yi i\u00e7erir.<br \/>\n*   <code>dangerouslySetInnerHTML<\/code> kullanarak WordPress&#8217;ten gelen HTML i\u00e7eri\u011fini g\u00fcvenli bir \u015fekilde render ederiz.<br \/>\n*   \u00d6ne \u00e7\u0131kan g\u00f6rsel i\u00e7in <code>gatsbyImageData<\/code> kullan\u0131larak otomatik olarak optimize edilmi\u015f bir g\u00f6rsel \u00e7ekilir. <code><img><\/code> tag&#8217;inin <code>src<\/code> \u00f6zelli\u011fine eri\u015fmek i\u00e7in dikkatli bir yol izlenir.<\/p>\n<p><strong>Not:<\/strong> <code>Layout<\/code> ve <code>Seo<\/code> bile\u015fenlerini kendi projenize g\u00f6re olu\u015fturman\u0131z veya starter projenizdeki varsay\u0131lanlar\u0131 kullanman\u0131z gerekebilir.<\/p>\n<h4>Ad\u0131m 7: G\u00f6r\u00fcnt\u00fc Optimizasyonu<\/h4>\n<p>WordPress&#8217;ten \u00e7ekilen g\u00f6rsellerin performans\u0131 art\u0131rmas\u0131 i\u00e7in Gatsby&#8217;nin g\u00fc\u00e7l\u00fc g\u00f6r\u00fcnt\u00fc optimizasyon \u00f6zelliklerini kullanmak kritik \u00f6neme sahiptir. <code>gatsby-source-wordpress-experimental<\/code> eklentisi, <code>gatsby-plugin-sharp<\/code> ve <code>gatsby-transformer-sharp<\/code> ile entegre \u00e7al\u0131\u015farak WordPress g\u00f6rsellerini otomatik olarak optimize edebilir.<\/p>\n<p><code>gatsby-config.js<\/code> dosyan\u0131zda <code>gatsby-plugin-sharp<\/code> ve <code>gatsby-transformer-sharp<\/code> eklentilerinin kurulu oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-javascript\">\/\/ gatsby-config.js\nplugins: [\n  \/\/ ... di\u011fer eklentiler\n  <code>gatsby-transformer-sharp<\/code>,\n  <code>gatsby-plugin-sharp<\/code>,\n  \/\/ ... gatsby-source-wordpress-experimental yap\u0131land\u0131rmas\u0131\n],<\/code><\/pre>\n<p>Ard\u0131ndan, GraphQL sorgular\u0131n\u0131zda <code>gatsbyImageData<\/code> alan\u0131n\u0131 kullanarak g\u00f6rselleri optimize edin. \u00d6rne\u011fin, <code>blog-post.js<\/code> \u015fablonundaki <code>featuredImage<\/code> sorgusuna bak\u0131n. Bu, g\u00f6rsellerin farkl\u0131 boyutlarda, modern formatlarda (WebP, AVIF) ve lazy-loading \u00f6zellikleriyle sunulmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Ad\u0131m 8: Navigasyon ve Linkleme<\/h4>\n<p>WordPress men\u00fclerini Gatsby uygulaman\u0131za \u00e7ekmek ve site i\u00e7inde navigasyon sa\u011flamak i\u00e7in <code>gatsby-link<\/code> bile\u015fenini kullan\u0131n.<\/p>\n<p><strong>WordPress Men\u00fclerini \u00c7ekmek:<\/strong><br \/>\n<code>gatsby-source-wordpress-experimental<\/code> eklentisi ile WPGraphQL \u00fczerinden men\u00fcleri \u00e7ekebilirsiniz. \u00d6ncelikle, WordPress paneline girip G\u00f6r\u00fcn\u00fcm > Men\u00fcler alt\u0131ndan bir men\u00fc olu\u015fturun ve \u00f6geler ekleyin.<\/p>\n<p>Ard\u0131ndan, Gatsby&#8217;de bir men\u00fc bile\u015feni olu\u015fturun ve GraphQL sorgusu ile men\u00fc verilerini \u00e7ekin:<\/p>\n<pre><code class=\"language-graphql\">query MyMenuQuery {\n  wpMenu(slug: { eq: &quot;main-menu&quot; }) { # Men\u00fcn\u00fcz\u00fcn slug'\u0131n\u0131 buraya girin\n    name\n    menuItems {\n      nodes {\n        id\n        label\n        path\n      }\n    }\n  }\n}<\/code><\/pre>\n<p>Bu sorguyu bir layout bile\u015feni i\u00e7inde veya bir header bile\u015feninde kullanabilirsiniz. <code>path<\/code> alan\u0131n\u0131 kullanarak <code>gatsby-link<\/code> ile dahili sayfalara y\u00f6nlendirme yap\u0131n:<\/p>\n<p>import React from &#8220;react&#8221;;<br \/>\nimport { Link, graphql, useStaticQuery } from &#8220;gatsby&#8221;;<\/p>\n<p>const Header = () => {<br \/>\n  const data = useStaticQuery(graphql<code><br \/>\n    query HeaderMenuQuery {<br \/>\n      wpMenu(slug: { eq: \"main-menu\" }) {<br \/>\n        name<br \/>\n        menuItems {<br \/>\n          nodes {<br \/>\n            id<br \/>\n            label<br \/>\n            path<br \/>\n          }<br \/>\n        }<br \/>\n      }<br \/>\n    }<br \/>\n  <\/code>);<\/p>\n<p>  const menuItems = data.wpMenu.menuItems.nodes;<\/p>\n<p>  return (<\/p>\n<header>\n<nav>\n<ul>\n          {menuItems.map((item) => (<\/p>\n<li key={item.id}>\n              {item.label}<\/Link>\n            <\/li>\n<p>          ))}\n        <\/ul>\n<\/nav>\n<\/header>\n<p>  );<br \/>\n};<\/p>\n<p>export default Header;<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<p>WordPress ve Gatsby entegrasyonu, temel bir blog sitesinden \u00e7ok daha fazlas\u0131n\u0131 yapman\u0131za olanak tan\u0131r. \u0130\u015fte baz\u0131 geli\u015fmi\u015f konular ve en iyi uygulamalar:<\/p>\n<h4>ACF (Advanced Custom Fields) Entegrasyonu<\/h4>\n<p>WordPress&#8217;te \u00f6zel alanlar (custom fields) olu\u015fturmak i\u00e7in ACF eklentisini kullan\u0131yorsan\u0131z, <code>gatsby-source-wordpress-experimental<\/code> bu verileri de \u00e7ekebilir. <code>gatsby-config.js<\/code> dosyan\u0131zdaki <code>useACF<\/code> se\u00e7ene\u011fini <code>true<\/code> olarak ayarlay\u0131n ve ACF alanlar\u0131n\u0131 GraphQL sorgular\u0131n\u0131zda kullanmaya ba\u015flay\u0131n.<\/p>\n<p>\u00d6rne\u011fin, bir g\u00f6nderiye ekledi\u011finiz <code>custom_field_name<\/code> ad\u0131nda bir metin alan\u0131 varsa, GraphQL sorgunuzda \u015f\u00f6yle g\u00f6r\u00fcnecektir:<\/p>\n<pre><code class=\"language-graphql\">query MyPostWithACF {\n  wpPost(uri: { eq: &quot;\/my-post-with-custom-field\/&quot; }) {\n    title\n    acfFields { # Bu alan otomatik olarak olu\u015fur\n      customFieldName # ACF alan\u0131n\u0131z\u0131n ad\u0131n\u0131 camelCase olarak kullan\u0131n\n    }\n  }\n}<\/code><\/pre>\n<h4>SEO Optimizasyonu<\/h4>\n<p>Gatsby, h\u0131zl\u0131 siteler olu\u015fturarak SEO&#8217;ya do\u011fal bir katk\u0131da bulunsa da, sayfa ba\u015fl\u0131klar\u0131, meta a\u00e7\u0131klamalar\u0131 ve Open Graph etiketleri gibi detayl\u0131 SEO ayarlar\u0131 i\u00e7in <code>react-helmet<\/code> veya <code>gatsby-plugin-react-helmet<\/code> kullanmal\u0131s\u0131n\u0131z.<\/p>\n<p>WordPress&#8217;te Yoast SEO eklentisini kullan\u0131yorsan\u0131z, <code>WPGraphQL for Yoast SEO<\/code> eklentisini kurarak Yoast verilerini de GraphQL \u00fczerinden \u00e7ekebilirsiniz. B\u00f6ylece, her sayfa i\u00e7in Yoast taraf\u0131ndan belirlenen SEO ba\u015fl\u0131\u011f\u0131n\u0131 ve meta a\u00e7\u0131klamas\u0131n\u0131 Gatsby&#8217;de kullanabilirsiniz.<\/p>\n<pre><code class=\"language-graphql\">query PostWithYoastSEO {\n  wpPost(uri: { eq: &quot;\/your-post\/&quot; }) {\n    seo {\n      title\n      metaDesc\n      opengraphTitle\n      opengraphDescription\n      opengraphImage {\n        altText\n        sourceUrl\n      }\n    }\n  }\n}<\/code><\/pre>\n<h4>Canl\u0131 \u00d6nizleme (Live Previews)<\/h4>\n<p>Gatsby&#8217;nin statik yap\u0131s\u0131, i\u00e7erik g\u00fcncellemelerinin yeni bir derleme (build) gerektirdi\u011fi anlam\u0131na gelir. Bu, i\u00e7erik yazarlar\u0131 i\u00e7in anl\u0131k \u00f6nizleme deneyimini zorla\u015ft\u0131rabilir. Gatsby Cloud gibi platformlar, bu sorunu \u00e7\u00f6zmek i\u00e7in canl\u0131 \u00f6nizleme \u00e7\u00f6z\u00fcmleri sunar. WordPress&#8217;e bir eklenti kurarak, i\u00e7erik g\u00fcncellendi\u011finde Gatsby Cloud&#8217;da otomatik olarak bir \u00f6nizleme derlemesi tetiklenebilir.<\/p>\n<p>Alternatif olarak, WordPress&#8217;te bir webhook eklentisi kullanarak, bir g\u00f6nderi yay\u0131nland\u0131\u011f\u0131nda veya g\u00fcncellendi\u011finde Netlify veya Vercel gibi da\u011f\u0131t\u0131m platformlar\u0131nda otomatik bir derleme tetikleyebilirsiniz.<\/p>\n<h4>Da\u011f\u0131t\u0131m (Deployment)<\/h4>\n<p>Gatsby siteleri tamamen statik oldu\u011fu i\u00e7in herhangi bir statik site bar\u0131nd\u0131rma hizmetinde (Netlify, Vercel, Gatsby Cloud, AWS S3, GitHub Pages vb.) kolayca da\u011f\u0131t\u0131labilir. Bu platformlar, genellikle CDN entegrasyonu, otomatik derlemeler ve SSL sertifikalar\u0131 gibi \u00f6zellikler sunar.<\/p>\n<p>Da\u011f\u0131t\u0131m i\u00e7in <code>gatsby build<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak <code>public<\/code> klas\u00f6r\u00fcndeki \u00e7\u0131kt\u0131 dosyalar\u0131n\u0131 y\u00fcklemeniz yeterlidir.<\/p>\n<h4>Performans \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>Lazy Loading:<\/strong> Gatsby, varsay\u0131lan olarak g\u00f6rselleri ve bile\u015fenleri tembel y\u00fckleme (lazy loading) ile sunar. <code>gatsby-image<\/code> (veya <code>gatsby-plugin-image<\/code> ile gelen <code>GatsbyImage<\/code> bile\u015feni) bu konuda harika i\u015f \u00e7\u0131kar\u0131r.<br \/>\n*   <strong>Code Splitting:<\/strong> Gatsby, uygulaman\u0131z\u0131 otomatik olarak daha k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6ler, b\u00f6ylece kullan\u0131c\u0131lar sadece ihtiya\u00e7 duyduklar\u0131 kodu indirirler.<br \/>\n*   <strong>Pre-fetching:<\/strong> <code>gatsby-link<\/code> bile\u015feni, ba\u011flant\u0131lar\u0131n \u00fczerine gelindi\u011finde veya g\u00f6r\u00fcn\u00fcr oldu\u011funda ilgili sayfalar\u0131n kaynaklar\u0131n\u0131 otomatik olarak \u00f6nceden getirir, bu da sonraki sayfa y\u00fcklemelerini an\u0131nda yapar.<br \/>\n*   <strong>K\u00fc\u00e7\u00fck Veri Sorgular\u0131:<\/strong> GraphQL sorgular\u0131n\u0131zda sadece ihtiyac\u0131n\u0131z olan alanlar\u0131 \u00e7ekin. Gereksiz veri y\u00fck\u00fcn\u00fc azaltmak, derleme s\u00fcresini h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>Hard Cache Media Files:<\/strong> <code>gatsby-source-wordpress-experimental<\/code> eklentisinin <code>develop.hardCacheMediaFiles: true<\/code> se\u00e7ene\u011fini geli\u015ftirme ortam\u0131nda etkinle\u015ftirmek, medya dosyalar\u0131n\u0131n tekrar tekrar indirilmesini \u00f6nleyerek geli\u015ftirme deneyimini h\u0131zland\u0131r\u0131r.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Entegrasyon s\u0131ras\u0131nda baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fabilirsiniz:<\/p>\n<p>*   <strong>WordPress GraphQL Endpoint Hatas\u0131:<\/strong><br \/>\n    *   WordPress <code>WPGraphQL<\/code> eklentisinin kurulu ve etkin oldu\u011fundan emin olun.<br \/>\n    *   <code>gatsby-config.js<\/code> dosyas\u0131ndaki <code>url<\/code> alan\u0131n\u0131n do\u011fru GraphQL endpoint&#8217;ini i\u015faret etti\u011finden emin olun. Genellikle <code>http:\/\/yourdomain.com\/graphql<\/code> \u015feklindedir.<br \/>\n    *   WordPress sitenizin genel eri\u015fime a\u00e7\u0131k oldu\u011fundan emin olun (g\u00fcvenlik duvar\u0131 veya <code>.htaccess<\/code> k\u0131s\u0131tlamalar\u0131).<br \/>\n*   <strong>Veri \u00c7ekme Hatalar\u0131 (Kimlik Do\u011frulama):<\/strong><br \/>\n    *   E\u011fer WordPress siteniz \u015fifre korumal\u0131ysa veya \u00f6zel bir kimlik do\u011frulama gerektiriyorsa, <code>gatsby-source-wordpress-experimental<\/code> eklentisinin <code>auth<\/code> se\u00e7eneklerini kullanman\u0131z gerekebilir.<br \/>\n*   <strong>G\u00f6rsel \u0130\u015fleme Sorunlar\u0131:<\/strong><br \/>\n    *   <code>gatsby-plugin-sharp<\/code> ve <code>gatsby-transformer-sharp<\/code> eklentilerinin kurulu ve <code>gatsby-config.js<\/code> i\u00e7inde do\u011fru s\u0131rada oldu\u011fundan emin olun.<br \/>\n    *   GraphQL sorgular\u0131n\u0131zda <code>gatsbyImageData<\/code> alan\u0131n\u0131 do\u011fru kulland\u0131\u011f\u0131n\u0131z\u0131 kontrol edin.<br \/>\n    *   WordPress&#8217;ten gelen g\u00f6rsellerin URL&#8217;lerinin eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n*   <strong>Sayfa Olu\u015fturma Hatalar\u0131 (<code>gatsby-node.js<\/code>):<\/strong><br \/>\n    *   <code>gatsby-node.js<\/code> dosyas\u0131ndaki GraphQL sorgusunun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve beklenen verileri d\u00f6nd\u00fcrd\u00fc\u011f\u00fcnden emin olun (GraphiQL ile test edin).<br \/>\n    *   <code>path<\/code> ve <code>component<\/code> de\u011ferlerinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   \u015eablon dosyas\u0131n\u0131n (<code>src\/templates\/blog-post.js<\/code>) mevcut ve ge\u00e7erli bir React bile\u015feni oldu\u011fundan emin olun.<br \/>\n*   <strong>WPGraphQL Eklenti Uyumluluklar\u0131:<\/strong><br \/>\n    *   Baz\u0131 WordPress eklentileri, WPGraphQL ile varsay\u0131lan olarak uyumlu olmayabilir. <code>WPGraphQL for ACF<\/code> veya <code>WPGraphQL for Yoast SEO<\/code> gibi k\u00f6pr\u00fc eklentilerini kullanman\u0131z gerekebilir. Eklenti geli\u015ftiricilerinin belgelerini kontrol edin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>WordPress&#8217;in g\u00fc\u00e7l\u00fc i\u00e7erik y\u00f6netim yeteneklerini Gatsby.js&#8217;in modern performans ve g\u00fcvenlik avantajlar\u0131yla birle\u015ftirmek, web siteleri i\u00e7in gelece\u011fe d\u00f6n\u00fck, h\u0131zl\u0131 ve g\u00fcvenli bir \u00e7\u00f6z\u00fcm sunar. Bu &#8220;headless&#8221; yakla\u015f\u0131m, i\u00e7erik y\u00f6neticilerinin al\u0131\u015ft\u0131klar\u0131 WordPress deneyiminden vazge\u00e7meden, geli\u015ftiricilere React ekosisteminin t\u00fcm avantajlar\u0131ndan yararlanma imkan\u0131 tan\u0131r.<\/p>\n<p>Bu rehberde ad\u0131m ad\u0131m entegrasyon s\u00fcrecini, temelden ileri seviye konulara kadar ele ald\u0131k. Art\u0131k kendi WordPress destekli Gatsby.js sitelerinizi olu\u015fturmak i\u00e7in gerekli bilgi ve ara\u00e7lara sahipsiniz. Bu kombinasyon, \u00f6zellikle bloglar, kurumsal web siteleri, e-ticaret siteleri ve portf\u00f6yler gibi i\u00e7erik a\u011f\u0131rl\u0131kl\u0131 projeler i\u00e7in idealdir. Performans ve SEO&#8217;dan \u00f6d\u00fcn vermeden i\u00e7erik y\u00f6netimi esnekli\u011fi arayan herkes i\u00e7in g\u00fc\u00e7l\u00fc bir alternatiftir. Web&#8217;in gelece\u011fi statik ve dinamik sistemlerin bu t\u00fcr hibrit birle\u015fimlerinde yat\u0131yor ve WordPress ile Gatsby.js bu alanda \u00f6nc\u00fcl\u00fck ediyor.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/fetch-wordpress-posts-headless\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/fetch-wordpress-posts-headless<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"WordPress \u0130\u00e7eri\u011fini Gatsby.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[133],"tags":[],"class_list":{"0":"post-43931","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"WordPress \u0130\u00e7eri\u011fini Gatsby.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-08T05:00:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-08T05:01:17+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2026-08-08T05:00:51+00:00\",\"dateModified\":\"2026-08-08T05:01:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\"},\"wordCount\":2764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PHP\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\",\"name\":\"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-08T05:00:51+00:00\",\"dateModified\":\"2026-08-08T05:01:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber","og_description":"WordPress \u0130\u00e7eri\u011fini Gatsby.","og_url":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-08T05:00:51+00:00","article_modified_time":"2026-08-08T05:01:17+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber","datePublished":"2026-08-08T05:00:51+00:00","dateModified":"2026-08-08T05:01:17+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/"},"wordCount":2764,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PHP"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/","name":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-08T05:00:51+00:00","dateModified":"2026-08-08T05:01:17+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-icerigini-gatsby-js-uygulamasiyla-kullanma-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress \u0130\u00e7eri\u011fini Gatsby.js Uygulamas\u0131yla Kullanma: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=43931"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43931\/revisions"}],"predecessor-version":[{"id":43933,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43931\/revisions\/43933"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}