WordPress’te alt temalar

Eminim ki gezegen sakinlerinin büyük çoğunluğu zamanın birinde kendi günlük sistemini yazmıştır, (en azından denemiştir) daha sonra zamanla bu günlük sistemi yazma hevesi yerini; daha kararlı, daha güvenli sistemleri kullanmaya doğru yönelimlere bırakır. Sanırım bu durum bizim millete has bir durum. Programcılık işine web programlamayla başlanılmış ise, hele ki bir de web çatısı ile başlanılmış ise (örneğin django) bir günlük sistemi yazmaya girişmeniz kaçınılmazdır :) . Sıra aşağı yukarı bellidir, önce bir “Hello World!..” uygulaması, arkasından kendi günlük sistemini yazma girişimi. Bu girişim kimine göre yaparak öğrenme, kimine göre kendini test etme, kimine göre ise sadece ego tatmini için ortaya çıkmakta.

WordPress’te alt temalar ile bu konunun ne alakası var diyecek olursanız; kişiler aynı süreçleri farklı seviyelerde tekrar tekrar yaşayabiliyor. Konumuz WordPress olduğundan yazımıza PHP dilini baz alarak devam edelim. PHP öğrenmeye başladık; ilk “Hello World” uygulamamızı yaptık :) , dokümantasyonu yedik bitirdik, daha sonra kendi günlük sistemimizi yaptık. Daha sonra fark ettik ki WordPress diye bir günlük sistemi var ve adamlar bizden daha hızlı çalışıyorlar. Biz ne yapsak onlar kadar hızlı ilerleyemiyoruz. Bizim yazdığımız sisteme kimse eklenti yazmıyor, tema geliştirmiyor. Ama onlar her gün sayısız eklenti ve tema ekleyerek çığ gibi büyümeye devam ediyorlar, güvenlik konusundaki artıları ise cabası. Sonuç olarak kendi günlüğümüzü WordPress ile yayımlamaya karar veriyoruz.

İşte bu nokta programcılıkla uğraşanlar için bir dönüm noktası sayılabilir. Birden kafanızın içinde şu sesi duyuyorsunuz: “Her ihtiyacın olan şeyi kendin kodlaman şart değil, önce bir araştır; birileri bu işi yapan bir şeyler yapmış mı bir bak. Yok ise kendin kodlarsın.” Ben bu sesi şu işi yaparken duymuştum. Hayatınızın bu noktasından sonra daha az çalışarak daha çok iş yapmak daha önemli hale gelmeye başlıyor. Her şey iyi gidiyor derken, WordPress temanızı beğenmemeye başlıyorsunuz. Daha sonra binlerce tema varken kendi kendinize yine o soruyu soruyorsunuz :) “Beni temsil edecek temayı benden daha iyi kim yapabilir?”

Tam burada ilk paragrafta bahsedilen kişiliğimize geri dönüş söz konusu. Bu noktada dikkatli olmak gerekiyor. WordPress her konuda olduğu gibi temalar konusunda da bize oldukça esnek bir yapı sunmakta. Sitemizin görünüşünü değiştirmenin birkaç yolu var:

  • Binlerce ücretsiz, ya da ücretli temalardan birini seçip onu kullanmak
  • Kendi temanızı her şeyi ile baştan tasarlamak
  • Çok beğendiğiniz ama bazı noktalarda hoşunuza gitmeyen bir temayı değiştirmek. (İşte bu seçenek bu yazının konusu)

İlk seçeneğin üzerine yazılacak fazla bir şey yok. Beğendiğiniz temayı yükleyin ve kullanın :)

İkinci seçenek ile ilgili ayrıntılı bilgiye [1] adresinden erişmeniz mümkündür. Ayrıca [2] adresinde Özgür Web Günleri 2011 ‘de bu konu üzerine yapmış olduğum sunumun sunum dosyası bulunmakta.

Son seçeneğe gelince; bu seçeneği kullanmak, bana göre Linux kullanmakla, WordPress kullanmakla aynı hissiyatta olmak anlamına geliyor. Ortada tam ihtiyacını karşılayacak bir şeyler yok, ama istediğine yakın bir şeyler var. Bu noktada tekerleği yeniden icat etmek yerine mevcut tekerleği kendi ihtiyacımıza göre özelleştiriyoruz. [1] adresinde bir temanın anatomisi çok detaylı bir şekilde anlatılmış durumda. “Hangi dosyalara ihtiyacımız var?”, “Bir temada olmazsa olmazlar nelerdir?”, “Genellikle hangi dosyalar olur?” gibi çok fazla sorunun yanıtını bulabiliriz. [3] adresinde ise alt tema nedir nasıl yapılır ile ilgili çok hoş bir dokümantasyon bulunmakta.

Alt temanın nasıl yapılacağını burada anlatmaya çalışmak, dokümantasyona ayıp etmek olur, fakat [2] adresindeki sunumda değindiğim bazı konulara değinip konuyu çok uzatmayacağım.

Alt temamızda olmazsa olmazımız bir stil dosyası ve adı da mutlaka style.css olmalı. içeriği ise:

Burada bahsi geçen “Theme Name” adından da anlaşılacağı üzere alt temamızın adını ifade etmekte. Diğerlerinin de ne oldukları isimlerinden belli oluyor; hepsini yazmayacağım. Buradaki püf noktamız “Template” kısmı. Template değerine miras aldığımız temanın adını yazmamız gerekmekte. Bu örnekte bizim temamız twentyeleven temasından miras alınarak oluşturulmuş. Daha sonra miras aldığımız temanın stil dosyasını alt temamızın içine import ediyoruz.

Bu noktadan sonra yazdığımız her satır CSS değişikliği eski temadaki değerlerin üzerine yazılacaktır. Bu örnekte “#site-title a” CSS seçicinin değeri orijinal temada başka bir değer olsa bile bizim temamızda artık bizim yazdığımız değer olacaktır.

Tabii ki stil dosyamıza yeni satırlar eklerken orijinal temanın içinde bulunan CSS seçicileri kullanmamız gerekmekte, orijinal temada olmayan bir şeyi override edemeyiz. Artık yeni temamızın içinde orijinal tema dizininde bulunan dizin ve dosya yapısına uyarak istediğimiz tüm dosyaların yenilerini oluşturabiliriz. Bu dosyalar artık orijinal temadaki dosyaların yerlerini alacaklar. Bu durumun tek bir istisnası bulunmakta, o da “functions.php” Diğer dosyaların aksine functions.php dosyası override edilmez. Onun yerine önce orijinal temanın içindeki functions.php yüklenir ve ardından sizin oluşturduğunuz functions.php onun üzerine eklenir. Böylece orijinal temada sunulan fonksiyonları kullanabilirken onların yanına kendi fonksiyonlarınızı da ekleyebilme şansına sahip olursunuz. Orijinal temanızda bulunan “functions.php” dışında kalan her dosya yeni temanızdakiler tarafından override edilmekte.

Bu noktada şu soruları soranlar olabilir:

  • Neden override ediyoruz?
  • Neden orijinallerinin üzerinde değiştirip geçmiyoruz?

WordPress’in kendisi sürekli geliştirilirken aynı şekilde kullanılan popüler temalar da sürekli güncellenmekte. Bu güncellemeler kimi zaman kozmetik, kimi zaman güvenlik ile alakalı, bazen de WordPress’in değişen API’sine uyum sağlamak ya da eklenen yeni fonksiyonları desteklemek şeklinde olabiliyor. Bu yüzden, WordPress’i güncellerken kullandığımız temaları da güncellememiz gerekmekte. Peki biz kullandığımız twentyeleven temasındaki header dosyasını değiştirdik, daha sonra twentyeleven teması güncellendi ve güncel temadaki header dosyası da değiştirildi. Bu durumda ya bizim değişikliklerden ya da temanın yeni halindeki değişikliklerden vazgeçmek, dolayısıyla kararlılık sorunu yaşamamız söz konusu olacak. Alt tema sistemini kullanarak miras aldığımız temayı tüm özellikleriyle kullanıp aynı zamanda güncellemelerini takip edebilirken, aynı zamanda o temanın üzerinde istediğimiz özelleştirmeyi yapabilme imkanına sahip olmaktayız.

Son olarak bir ipucu: tema dizinine “screenshot.png” isimli bir görsel koyarsanız yönetim panelinin tema kısmında temanızla ilgili olarak o görsel görünmekte. Temanızın çalışır halinin ekran görüntüsünü alıp screenshot.png ismi ile saklarsanız. Temayı etkinleştirmeden nasıl göründüğünü gösterebilirsiniz. :)

Bir müddet WordPress üzerine yazmayacağım :) . Sırada Drupal ya da Python üzerine bir şeyler gelecek gibi görünüyor :)

Herkese iyi bayramlar diliyorum.

[1] http://codex.wordpress.org/Theme_Development

[2] http://seminer.linux.org.tr/wp-content/uploads/wp-goc.odp

[3] http://codex.wordpress.org/Child_Themes