İçeriğe geç

Bir Yazılımcının Arafı: Sıfırdan WordPress Teması Geliştirmek (Ve Hayatta Kalmak)

WordPress Tema Geliştirme

Sıfırdan WordPress Teması Yazmak

Yazılım dünyasında her yiğidin harcı olmayan, dışarıdan bakıldığında “Altı üstü bir blog sitesi değil mi?” denilen ama içine girildiğinde adeta dipsiz bir kuyuya dönüşen o meşhur macera: Sıfırdan WordPress Teması Yazmak.

WordPress
PHP
Tema Geliştirme
Deneyim

Eğer halihazırda modern JavaScript framework’leri (React, Vue, Next.js) ile haşır neşir bir geliştiriciyseniz, yolunuz bir gün WordPress’in PHP tabanlı dünyasına düştüğünde kendinizi mini bir kültür şoku içinde bulabilirsiniz. Bu yazıda, “Ben kendi temamı kendim yazarım, ne var ki?” diyerek yola çıkan ve kendini “The Loop” döngülerinin içinde bulan bir yazılımcının yaşadığı trajikomik zorlukları ve bu süreçten çıkardığı dersleri masaya yatırıyoruz.

1. İlk Adım: “Ben Bu Dünyayı Çözerim” Özgüveni

Her şey o masum fikirle başlar. Hazır temaların hantallığından, tonlarca gereksiz CSS/JS yükünden ve Elementor gibi sayfa yapılandırıcıların (page builder) arkalarında bıraktığı “kod çöplüğünden” sıkılmışsınızdır. Google Lighthouse skorunda 100/100 görecek, adeta uçan, tertemiz bir tema yapmaya karar verirsiniz.

Dokümantasyonu açarsınız: index.php, style.css, functions.php. “Tamam” dersiniz, “Sadece üç dosya ile mi başlıyoruz? Çok kolaymış!”

Ancak o temiz kod aşkı, WordPress’in 20 yılı aşkın geriye dönük uyumluluk (backward compatibility) felsefesiyle çarpışana kadar sürer.

2. “The Loop” (Döngü) İle Tanışma ve Kaos

Bir front-end geliştirici olarak veriyi çekip ekrana basmak için map() veya forEach kullanmaya alışıksanız, WordPress’in kutsal döngüsü The Loop sizi biraz eskilere götürebilir:

PHP

if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // İçerik buraya gelecek
    endwhile;
endif;

Bu yapıyı ilk gördüğünüzde “Tamam, anlaşılır” dersiniz. Ama ne zaman ki ana sayfada hem öne çıkan yazıları, hem kategorileri, hem de özel post türlerini (Custom Post Types) aynı anda farklı tasarımlarla listelemek istersiniz… İşte o zaman WP_Query devreye girer. wp_reset_postdata() fonksiyonunu bir kez unutursunuz ve sitenin alt bilgisi (footer) birden bire en son yazdığınız blog yazısının başlığına dönüşür. Saatlerce “Ben nerede hata yaptım?” diye ekrana bakma mesaisi resmen başlamıştır.

3. Gutenberg vs. Klasik Editör Çelişkisi

Temayı geliştirmeye başlarken kendinize şu soruyu sorarsınız: Gutenberg (Blok Editör) uyumlu mu yapmalıyım, yoksa Classic Editor üzerinden mi gitmeliyim?

Eğer modern dünyayı seçip Gutenberg blokları için özel stiller geliştirmek isterseniz, kendinizi bir anda React bilginizi sorgularken bulursunuz. Çünkü WordPress artık backend’de PHP, içerik yönetiminde ise yoğun bir şekilde React (Gutenberg Blokları) kullanan hibrit bir canavara dönüşmüş durumda. Sadece bir metin alanının arka plan rengini panelden değiştirebilmek için yazdığınız theme.json dosyasının satırları uzadıkça, “Acaba düz HTML mi yazsaydım?” pişmanlığı içinizi kaplamaya başlar.

4. Eklenti (Plugin) Cehennemiyle Uyum Sağlamak

Kendi temanızı ne kadar saf, yalın ve optimize yazarsanız yazın; o tema canlıya alındığında müşteri veya kullanıcı mutlaka o meşhur eklentileri yükleyecektir: WooCommerce, Yoast SEO, Contact Form 7…

Bir sabah kalktığınızda, WooCommerce eklentisinin sizin özenle hazırladığınız sepet sayfasını darmadağın ettiğini görürsünüz. Çünkü popüler eklentilerin kendilerine has CSS kuralları ve fonksiyon kancaları (hooks) vardır. Bir tema geliştiricisi olarak göreviniz sadece kendi kodunuzu yazmak değildir; dünyadaki binlerce eklentinin sitenizi bozmasını engelleyecek wp_head() ve wp_footer() kancalarını doğru yere yerleştirmek ve CSS hiyerarşisinde !important savaşları vermektir.

5. Güvenlik ve “Sanitization” Sıkıntısı

WordPress dünyasında güvenlik, kodu yazıp sunucuya atmaktan çok daha fazlasıdır. Temanızın kullanıcıdan girdi aldığı veya veritabanından veri bastığı her noktada esc_html(), esc_attr(), sanitize_text_field() gibi fonksiyonları kullanmak zorundasınızdır.

İlk başta sıkıcı gelen bu süreç, sitenizin XSS (Cross-Site Scripting) açıklarından dolayı hacklenmesini önleyen yegane kalkandır. Yazılımcı tam tasarıma odaklanmışken, bir yandan da “Bu dinamik URL’yi ekrana basarken esc_url mi kullanmalıydım, yoksa absint mi?” diye düşünmekten saçlarına aklar düşer.

Mutlu Son (Mu?)

Tüm bu zorlukların, saatler süren var_dump() çıktısı incelemelerin ve CSS çakışmalarının ardından o tema biter. Sitenizi test aracına sokarsınız ve o muazzam yeşil renkli 99/100 Lighthouse skorunu görürsünüz. İşte o an, çekilen tüm acılar unutulur.

Özetle; WordPress teması yazmak, bir yazılımcıya modern mimariler ile köklü/geleneksel sistemlerin nasıl bir arada yaşayabildiğini öğreten harika (ve biraz da yıpratıcı) bir okuldur. Temiz kod yazmayı, kancalara (hooks) saygı duymayı ve her şeyden önemlisi sabırlı olmayı öğretir.

Siz siz olun, bir dahaki sefere “Basit bir WordPress teması” diyen birini görürseniz, ona şefkatle yaklaşın. Çünkü arkasında kaç uykusuz gece olduğunu sadece geliştiren bilir!

Devam

Benzer Yazılar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site istenmeyenleri azaltmak için Akismet kullanır. Yorum verilerinizin nasıl işlendiğini öğrenin.