WordPress - GRAV CMS Geçişi

Aşağıda çeşitli aşamalar üzerinden WordPress - Grav geçişine dair notlarımı görebilirsiniz. İlerleyan zaman içerisinde bu yönergeler arasına çoklu dil ve çoklu site özelliklerini de dahil edeceğim.

AA

Şimdilk, temel bir şekilde içeriğimizi nasıl taşıyabileceğimize ve temamızı nasıl oluşturabileceğimize bakalım.

İçerik Yönetimi

Bir WordPress web sitesi kurulumu sonrasında, içerik yönetim sisteminin işleyişi PHP kodu ile tanımlanan fonksiyonlar ve veritabanı etkileşimi aracılığıyla sağlanır. Eklenti ve tema fonksiyonları bu etkileşim aşamasına ilişerek (hook) yürütülür. Yönetim panelini görüntülediğiniz an da dahil olmak üzere her aşamada bir dizi işlem akışı ve kontrol gerçekleştirilir. Bir içerik oluşturmak istediğinizde bu işlem için tanımlanan fonksiyon kontrolleri işlev kazanır, metin editörüne yazdıklarınız yazı sürümleri olarak kayıt altına alınır, bu aşamada sıklıkla internet bağlantınız ve oturum geçerliliğiniz kontrol edilir. İçeriği kayıt ettiğinizde, içerik sayfa içerisinde tanımladığınız alanlar (içerik, başlık, sayfa yolu, kategori, etiket, özel alanlar, vs.) veritabanında ilgili alanlara eklenirler. Bir ziyaretçi tarafından görüntülenen içerik çoğu zaman bu vertitabanında yer alan kayıttan farklı bir şekilde sunulur. Eklentiler, tema fonksiyonları veritabanından çekilen alanlar sunulmadan önce bu verilere müdahale ederler. Örneğin, Visual Composer kullanıyorsanız bu eklenti içerisinde oluşturduğunuz alanlar ve eklediğiniz elemanlar tanımlanan karşılıkları ile oluşturulurlar1. WordPress gücünü bu iyi tasarlanmış zincir şeklinde ilerleyen akıştan alır.

Grav bu süreci PHP ve özellikle Twig aracılığı ile yürütür. Eklenti içerisindeki tema unsurları (partial) aynı zamanda tema içerisinde de ele alınabilir. Markdown olarak oluşturulan içerikler, içeriklerin yanı sıra blueprint olarak ifade edilen ve ayrı dosyalar halinde işleme alınan YAML tanımları da yine içerik sunulmadan önce yorumlanır ve yorumlanan içerik ziyaretçiye sunulur. Veritabanı gereksinimiz yoktur. İçerikleriniz bir dosya olarak oluşturulduğu için kolaylıkla taşınabilir, kopyalanabilir ve farklı biçimlere dönüştürülebilir. Çoğu zaman içeriğin nasıl yorumlanacağı içerik dosyasının içeriğinde tanımlanmış olur. Bu sayede içeriğe yapılacak tüm müdahaleleri bir arada görebilir ve yönetebilirsiniz. Aynı zamanda, bu yorumlama çoğu zaman içerik özelinde gerçekleşir.

Sıklıkla seyahat eden, çoğu zaman cep telefonu aracılığı ile içerik fikirlerini draft olarak oluşturan biriyim. Bu süreçte Dropbox Paper ve Zotero uygulamalarından sıklıkla faydalandığım için normalde de fikirleri markdown formatında oluşturmaktaydım. Elbette WordPress üzerinden de markdown yazım biçimini kullanarak içerikler oluşturmak mümkün. Ancak, süreç yine tarayıcı vasıtasıyla gerçekleştirilmek durumunda.

Tema Yönetimi

Twig oldukça severek kullandığım bir şablon motoru. WordPress tarafında da kullanılabilecek pek çok şablon sistemi mevcut. Ancak, tüm bu süreç WordPress akışı içerisine yeni bir katman eklemek demek. Dolayısıyla, bu durum tema geliştirme ve bakım sürecinin de uzaması anlamına geliyor. Özellikle kişisel ve küçük çaplı kurumsal web çözümleri göz önünde bulundurulduğunda gereksiz olduğunu düşündüğüm bir müdahale süreci ortaya çıkıyor. Bu da elbette kaynak yönetimine yansımakta.

Özetle, Grav'ın tema geliştirme sürecinin oldukça pratik ve eğlenceli olduğunu düşünüyorum. Bunda en büyük etken Twig elbette. Bu sayede, oluşturulan bir şablon kolaylıkla farklı bir temaya dönüştürülebilmekte. Bu da fikir ve üretim sürecini olumlu yönde etkilemekte. Tüm bunlar göz önünde bulundurulduğunda, Grav bir arayüz tasarımcısı ve web tasarım ajansı için oldukça yararlı bir çözüm haline geliyor.

Tekrar vurgulamakta fayda var. Grav WordPress için bir rakip veya alternatif değil. Odaklandıkları sorunlar ve çözüm biçimleri oldukça farklı. Grav özellikleri dolayısıyla benim için içerik yönetim süreci göz önünde bulundurulduğunda daha mantıklı bir çözüm galine gelmekte.

Gelelim işin can alıcı noktasına. Yukarıda bahsi geçen düşünceleri okudunuz ve WordPress içeriklerinizi Grav'a aktarmak istediniz. Bir sonraki adım ne olacak?

İçeriklerin Aktarılması

Sürecin en can sıkıcı noktası burası. Temanı hazır olsun ya da olmasın, içeriklerinizi veritabanından çekip markdown yazım biçimine uygun hale getirmelisiniz. Bu amaçla daha önce WordPress İçeriklerin Markdown Olarak Dönüştürülmesi ve WP REST API İle Post Listeleme ve Kategori İsimleri başlıklı yazıları yayınlamıştım.

Öncelikle, örnek bir WordPress içeriğinin hangi alanlara sahip olduğuna bakalım.

WordPress REST API Post İçeriği

Görüldüğü üzere id ile başlayıp date, date_gmt, slug, status, tile, content, author, category şeklinde devam eden pek çok alan mevcut. Bu alanlar elbette istekte bulunurken _fields ile basitleştirilebilmekte. Ancak, dikkat ederseniz meta tanımları, özelleştirilmiş alanlar2 başta olmak üzere yazının sunulması sürecinde içeriğin/sayfanın bir parçası olarak kullanılabilecek alanlar burada yer almamakta. Diğer yandan, kategori ve etiketler id olarak iletilmekte. WP REST API İle Post Listeleme ve Kategori İsimleri başlıklı yazıda bu konuya dair farklı çözümleri görebilirsiniz.

Şimdi, bir de Grav tarafından benim kullandığım post içeriğine bir bakalım.

---
title: 'WordPress - GRAV CMS Geçişi'
date: '02-09-2020 09:05'

taxonomy:
    category:
        - grav
        - wordpress
        - markdown
slug: wordpress-grav-cms-gecisi
routes:
    default: /wordpress-grav-cms-gecisi
    canonical: /posts/2020/09/wordpress-grav-cms-gecisi
---

## İçerik

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Elit ullamcorper dignissim cras tincidunt lobortis. Sit amet consectetur adipiscing elit ut. Ac feugiat sed lectus vestibulum mattis ullamcorper. Tortor aliquam nulla facilisi cras. Odio ut sem nulla pharetra diam sit. Praesent tristique magna sit amet purus gravida quis blandit turpis[^1].

Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus. Id leo in vitae turpis. Risus in hendrerit gravida rutrum. Fames ac turpis egestas integer eget aliquet. Fermentum iaculis eu non diam phasellus vestibulum lorem sed. Faucibus nisl tincidunt eget nullam.

[^1]: Referans

İki örneği de görüdüğümüze ve kullanmak istediğimiz alanları belirlediğimize göre bir sonraki aşamaya geçebiliriz; JSON içeriğimizin markdown dosyaları haline getirilmesi.

Bu işlem için Wp Posts To Markdown Files W Nodejs uygulamasını kullanabilirsiniz. Yönergeler README içerisinde tanımlı. Yazı, kategori, etiket ve ekleyeceğiniz diğer alanlara göre birkaç dakika içerisinde dosyalarınız kullanıma hazır bir şekilde klasörler halinde oluşturulacaklardır.

WordPress REST API Post İçeriği

Eğer yazılarınız içerisinde kod, iframe, table, script, özel karakterler vb. alanlar mevcut ise bunları ayrıca düzenlemeniz gerekebilir. Bu aşamada komut satırı aracılığıyla müdahaleler gerçekleştirebilirsiniz. Bu amaçla Regex kurallarına göz atmamk isteyebilirsiniz. Aşağıda içerik sürecinde faydalanabileceğiniz birkaç konuyu iletiyorum.

Yardımcı Araçlar

Şimdi, gelelim Grav kullanım sürecine. İçerik üretimi, kontroller ve site yönetimi aşamalarına dair şu ipuçlarını değerlendirebilirsiniz.

Git-Sync Plugin

Posts, Plugins, Themes, Config ve Data alanlarını git ortamları üzerinde tutabilir ve buradan sitenizi yönetebilirsiniz.

Visual Studio Code - Markdown Eklentileri

İçeriklerinizi Visual Studio Code üzerinden yönetebilirsiniz. Markdown içerikleriniz için Prettier, Markdown All in One, Markdown Table Prettifier, Markdown Notes ve Markdown Footnote eklentilerini öneririm.

Cep telefonu veya tabletiniz üzerinden içerik üretmek isterseniz Dropbox Paper, iA Writer ve git işlemleri için Termux ve git paketi veya GitHub for mobile uygulamasını kullanabilirsiniz. Artık web siteniz erişime hazır. Takıldığınız bir konu olursa yorum olarak paylaşabilirsiniz.