Temanızı özelleştirdiniz, renkleri değiştirdiniz, bazı CSS düzenlemeleri yaptınız. Bir gün tema güncellemesi geldi, güncellemeyi çalıştırdınız — ve yaptığınız tüm değişiklikler kayboldu. Bu senaryo her gün düzinelerce WordPress kullanıcısının yaşadığı ve tamamen önlenebilir bir durum. Çözüm child theme.
Child theme (alt tema), mevcut bir WordPress temasının — buna parent theme (ana tema) denir — tüm özelliklerini miras alarak üzerine özelleştirmeler eklemenizi sağlayan ikincil bir tema katmanıdır. Ana temada yapılan güncellemeler child theme'i etkilemez; kendi değişiklikleriniz her zaman güvende kalır.
Ana temayı hiç dokunmadan bırakır, tüm özelleştirmelerinizi ayrı bir tema katmanında saklarsınız. Sistem iki katmanı birleştirerek çalışır — bir dosya ya da özellik child theme'de varsa oradan, yoksa ana temadan alınır.
Ana temada doğrudan değişiklik yapmanın tek bir sorunu var: tema güncellendiğinde tüm değişiklikler ezilir. Bunu bilerek güncellemeyi erteleyenler de ayrı bir sorunla karşılaşıyor — güncellenmeyen temalar güvenlik açıklarını beraberinde getiriyor. Child theme bu ikilemden çıkış yolu.
Manuel oluşturmak için WordPress'in wp-content/themes klasörü içinde yeni bir klasör açın. Klasör adı genellikle ana tema adına -child eki getirilerek belirlenir: astra-child, generatepress-child gibi.
Bu klasörün içine iki dosya oluşturmanız yeterli: style.css ve functions.php.
style.css dosyasının başına şu yorum bloğunu ekleyin — WordPress bu bilgiyi okuyarak temayı tanır:
Theme Name: Astra Child
Template: astra
Version: 1.0.0
Template değeri ana temanın klasör adıyla birebir eşleşmeli. functions.php dosyasında ise ana temanın stilini yüklemek için wp_enqueue_scripts kancasını kullanın.
Manuel oluşturmak istemiyorsanız Child Theme Configurator veya Child Theme Wizard gibi eklentiler bu süreci birkaç tıklamaya indiriyor.
CSS değişiklikleri en yaygın kullanım. Ana temanın stillerini ezmek veya yeni stiller eklemek için child theme'in style.css dosyasına yazmak yeterli. Değişiklikleriniz her güncellemeden sonra da yerli yerinde kalır.
PHP fonksiyonları için functions.php dosyasını kullanırsınız. Yeni kısa kod (shortcode) eklemek, belirli sayfalar için özel işlevler tanımlamak veya eklenti davranışlarını değiştirmek burada yapılır.
Şablon dosyaları da override edilebilir. Ana temadaki header.php, footer.php veya single.php gibi şablon dosyalarının kopyasını child theme klasörüne eklerseniz WordPress otomatik olarak sizin versiyonunuzu kullanır. Yalnızca değiştirmek istediğiniz dosyaları child theme'e kopyalamanız yeterli — geri kalanlar ana temadan gelmeye devam eder.
Ana temayı güvenle güncelleyebilirsiniz — child theme'deki özelleştirmeler korunur. Ancak ana tema büyük bir yapısal değişiklik geçirdiyse (örneğin şablon dosyalarının isimleri veya yapısı değiştiyse) child theme'de override ettiğiniz şablon dosyalarını gözden geçirmeniz gerekebilir. Bu durum çok sık yaşanmaz ama büyük sürüm güncellemelerinden sonra kontrol etmek iyi bir alışkanlık.
Tema görünümünü etkileyen özelleştirmeler (CSS, şablon dosyaları) child theme'e gider. Tema bağımsız, siteye özgü işlevler (özel yazı türleri, vergi hesaplama, API entegrasyonu) ise ayrı bir eklentiye taşınmalı. Bu ayrımı korumak, ileride tema değiştirdiğinizde işlevselliği sıfırdan kurmanızı önler.