Cuma , 22 Eylül 2017
Güncel
Anasayfa / Yazılım / Wordpress / WordPress Child Tema Nedir ?

WordPress Child Tema Nedir ?

WordPress blogumda default temada değişiklik yaptığımda en korktuğum şey WordPress’in bir güncelleme çıkarmasıydı. Çünkü her güncellemede tek tek tema güncellemerini eski haline getirmem gerekiyordu. Bu da beni güncelleme yapmaktan soğutuyordu.

WordPress bunu düşünmüş olacak ki bizim için Child Tema olayını gündeme getirmişler. Aslında çok yeni değil bu. Fakat ben yeni keşfettim o kadar. Baktım internette child tema (çocuk tema) hakkında Türkçe pek bir kaynak yok. Ben de WordPress Codex’ten baktım ve sizin için de çevirdim. (Bkz: WordPress Codex – Child Themes)

Örnek olarak twenty eleven için bir child tema yapacaksınız diyelim. Bunun için size gerekli olan şey twenty eleven klasörünüzün bulunduğu yerde (wp-content >> themes >> twentyeleven ) child tema klasörünüzün bulunmasıdır. Child tema klasörü herhangi bir isim olabilir. Ama biz bunu gelin akılda kalıcı bir şekilde twentyeleven-child şeklinde yapalım. Hem isim sıralamasından orjinal tema ile alt alta gelir.

Child Tema klasörünüz içinde bulunması zorunlu tek dosya style.css dosyasıdır ve adı da style.css olması zorunludur. Bu noktaya lütfen dikkat edelim.

WordPress’in child temayı yorumlayabilmesi için (yani temanın parent temaya ait bir child tema olduğunu anlayabilmesi için) header bilgilerine ihtiyaç vardır. Bu bilgiler child temadaki style.css dosyasının  en üstüne yazılır.

Burada önemli olan yerler Theme Name ve Template ‘dir. Template alanı direk olarak parent tema klasörünüz ile aynı isimde olmalıdır. Büyük küçük harf duyarlıdır. Theme Name olarak da Parent Name Child şeklinde yazabilirsiniz.

Temel Çocuk Tema Örneği

Mesela varsayılan temamız olan twenty eleven’da site başlığı haricinde her şeyi sevdiniz ve site başlığının rengini siyahtan yeşile çevirmek istediniz. 3 basamakta bu sorunu çözebilirsiniz.

  1. wp-content/themes altında bir klasör oluşturun ve twentyeleven-child olarak adlandırın. (ya da istediğiniz herhangi bir isim de olabilir).
  2. Aşağıdaki kodu style.css adıyla kaydedin ve oluşturduğunuz yeni klasöre taşıyın.
  3. Daha sonra Görünüm’e gelin ve yeni temanız olan twentyeleven-child’ı aktif edin.

Şimdi yukarıdaki kod basamak basamak nasıl çalışıyor onu görelim.

  1. /* ile çocuk temanın header bilgilerini açar.
  2. Theme Name: ile çocuk temanın ismini okur.
  3. Description: temayı tanımını okur. (İsterseniz bu satırı silebilirsiniz.)
  4. Author: tema yazarı bilgisini okur. (İsterseniz bu satırı silebilirsiniz.)
  5. Template: çocuk temanın ebeveynini okur. Yani ana temayı okur.
  6. */ ile çocuk temanın header bilgisi kapatır.
  7. @import ile parent temanın style dosyasını çeker.
  8. #site-title ile çağırmış olduğunu parent tema style'da bulunan site-title'ı okumaz. Onun yerine sizin yazmış olduğunuz kodu okur.
  1. basamakta okuduğunuz @import olayını uygulamayı sakın unutmayınız. Aksi halde parent tema css bilgilerini çekmedi için şablonunuz dağılır.
    Child temanın aynı zamanda rtl (right-to-left) desteği de vardır. Yani arapça gibi sağdan sola yazılan diller için sitenin bu şekilde düzenlemesi gerekir. Child tema bu desteği de verir. Bunun için şunu yapabiliriz.

Bu şekilde parent temanızın rtl.css dosyasını çekebilirsiniz. Eğer parent temanızın rtl.css dosyası yoksa child temanızda oluşturabilirsiniz.

Önemli: Twenty Eleven temada link rengi ve koyu renk tema desteği child temanızdan sonra okunduğu için bazı renkler değişiklik gösterebilir. Bunu tamamen ortadan kaldırmak için css’in !important özelliğini kullanabilirsiniz.

functions.php Dosyasını Kullanmak

Child temanın en güzel özelliklerinden birisi de size özel bir functions.php dosyası oluşturabilmeniz. Mesela siz kendinize ait bir adsense kodu yazdınız diyelim. 6 farklı için ölçü kod yazdınız ve switch yapısıyla ilişkili olanı çekiyorsunuz diyelim.

Temanızda bir yerde

veya

şeklinde kullanıyorsunuz. Bir güncelleme yapıldığında direk olarak bu fonksiyonlar geçersiz kalacaktır. Hatta fonksiyon tanınmadığı için wordpress sayfalarınız açılmayacaktır.

Kendi yazdığınız functions.php dosyasını tanıtmaya gerek yok. child tema klasörünüzde bulunması yeterlidir.

Ayrıca diğer tema dosyalarınızı da düzenleyecekseniz editleme yapabilirsiniz.

Sormak istediğiniz sorular olursa buradan sorularınızı sorabilirsiniz. Sorularınızı seve seve cevaplarım.

Bu yazı 4 saatte tamamlanmıştır. İnşaallah bir teşekkürü çok görmezsiniz. Olumlu / Olumsuz yorumlarınızı ve sorularınızı bekliyoruz.

Saygılarımla,

Cihan KÜSMEZ

Cihan KÜSMEZ Kimdir ?

Makalelerinin Toplam Okunma Sayısı: 2.317.006


2002 yılında başladığım yazı hayatıma ilk önce 2007 yılında blogspot ile devam ederken daha sonra 2009 yılında Wordpress ile devam ettim. 2009'dan bu yana Cihan Blog'ta yazmaktayım. Yazılım, Diziler ve Sosyal Medya ağırlıklı yazıların yanı sıra güncel konular ile ilgili yazılar da yazmaktayım.
  • Ali

    Evet gerçekten emek verilmiş…
    pek fazla anlamadığım için bir okuduğum ve anladığım kadarıyla bir soru sorayım…
    wordpress güncellemeleri için wordpress orjinal tema üzerinde değişiklik yapmak
    daha sonra gelen güncellemelerde hata olasılığın azaltıyor, yani, galiba..
    anladığım bu…

    • tam olarak değil, şöyle normalde child tema kullanılmasa direk olarak siz düzenleme yaparsanız güncelleme geldiğinde tüm yaptığınız değişiklikler silinir. Sil baştan düzenleme yaparsınız. Fakat child temaya girerseniz güncelleme gelse bile bir değişim olmadan güncelleme yaparsınız.

      • Yazınızı uzun zaman önce yazmışsınız, konu hakkında bilginiz varsa yazarsanız sevinirim, takip etme’ye tıkladım haberim olur merak etmeyin.
        Şimdi şöyle birşey var, ben o ingilizce olan yere gittim okudum herşeyi, child theme olayı biraz karışık geldi. Sadece style.css içinse ben zaten bir yedeğini alırım güncelleme yapılacaksa benim temama. Tam olay kafama yatmadı. Mesela internetten bir tema “çaldım” -paralı ya Türk insanıyız vermeyiz para filan- ben sonra gittim bu temanın işime yaramayan yerlerini sildim ya da ekleme yaptım “page.php” dosyasına.
        Bunu, child theme yerine atabilir miyim yani? TOKAT_THEME_CHILD yapıp, içine style.css ve page.php atabiliyor muyuz?

  • Mert

    Güzel anlatım. Yeni başlamış biri olarak işime yarayacak bir bilgi.

    Teşekkürler

    • sağolun mert bey, anlamadığınız bir yer olursa da seve seve yardımcı olurum. İyi çalışmalar size de…

  • burak

    faydalı bir yazı, teşekkür ederim.

  • Hakan

    Bununla ilgili bir Türkçe kaynağa ihtiyaç vardı. Çok faydalı olmuş. Elinize sağlık.

  • Mustafa Yılmaz

    teşekkürler.

  • tughan

    arkadaslar öncelikle hepinize merhabalar benim sorum biraz farklı olcak wordpressle çalısmaya yeni basladım sorum normalde butun işlemleri localdemi yapıyoruz yoksa hostamı ben suanda herhangi bi hosting kullanmıyorum sadece wamp serverla çalışıyorum gercek senaryo nasıl acaba…

    • Her yazılımda localde çalışmak iyidir. Çünkü sizin sitenize ziyaretçiler girerken siteniz üzerinde değişiklik yapmak uygun değildir. O esnada tasarım hataları, kodlama hataları, database hatası veya çeşitli hatalar meydana gelebilir. Bu size ziyaretçi ve reklam gideri kaybı olarak döner.

      Mesela bir plugin deneyecekseniz localde denemekte fayda var. Fakat localde deneyip sonra upload çoğu kişiye zor geldiği için direk host üzerinde yaparlar. Ama büyük siteler, büyük bloglar localde çalışıp denemelerini bitirdikten sonra hostinge upload ederler.

  • GÖKHAN

    Yazı için teşekkürler. Ben Twenty Eleven temasını kullanmaya yeni başladım. Tema orjinalde ingilizce. Ben gerekli yerleri Türkçeleştirdim ve footer’a widget destegi falan ekledim. Şimdi bi güncelleme olsa bunlar gider mi? Giderse ben bu yapmış olduğum eklemeleri nasıl child temaya aktarırım. Cevabınızı bekliyorum.

    • Gökhan Bey, Ben sürekli güncelleme yapıyorum ve child temam olduğu için güncellemelerde hiç problem çekmiyorum. Eğer child temam olmasa güncellemeler de her şey eski haline dönerdi.

      • GÖKHAN

        Peki ben şuanda child temaya footeri, headeri hepsini aktarmammı lazım. Çünkü bunlarıda editledim. Child temaya hangi dosyaları aktarmam gerek sizce.

  • Deniz

    Teşekkürler

  • Abdulkerim Eski

    Teşekkürler çok faydalı olmuş function.php kullanmak için ihtiyacım vardı çok araştırdım ama en anlaşılır ve basit burada buldum çok kolaymış meğer.

  • Teşekkürler 🙂

  • AytenS

    Bilgiler için çok teşekkürler Cihan bey, ben de wordpressle yeni çalışmaya başladım, Verdiğiniz bilgiler çok yararlı oldu. Kolay gelsin

  • mehmet

    Gece gece başım ağrırken ingilizcesi ile uğraşamadım. İyi ki karşıma çıktı sayfanız

  • çok güzel bir çalışma olmuş. teşekkür ederim.

  • Kullanımının zor olduğunu sandığımdan hiç bu yöntemi denememiştim. Hep ana temada değişiklik yapıp her tema güncellemesinde tekrar uğraşıyordum. Teşekkürler

  • Berk

    Teşekkürler güzel bir makale

  • Mehmet Aydın

    Cihan Bey merhaba, sanırım bir çok tema artık child theme ile geliyor. 3click aldım ve içinde child ayrıca var. Yani ben child theme’i aktif edip, siteyi kuracağım ve olası güncelleme sonrası hatalardan etkilenmeyeceğim, doğru mu anlamışım acaba? Ana tema, child dan belli yerleri mi alıyor, klonlama gibi bir şey mi yani bu..?
    Teşekkürler güzel paylaşımlarınız için.

  • imdat

    Hocam saygılar on numara olmuş.. Yalnız “xx child theme” klasör ismi satın aldığımız tema ile birlikte geldi diyelim “xx child theme” isminde değişiklik yaptığımızda örneğin: “cihan-temav1” yaptık bir sıkıntı olmaz mı ?

  • beşir

    merhaba Cihan bey öncelik ile konu gerçekten cok iyi ve yorumunuz çok iyi fakat ben şunu ögrenmek istiyorunsatın aldığım tema ile birlikte child temada yüklendi.ve ben güncelleme yaptıkca daha önce oluşturduğum bilgler ve çeviriler komple siliniyor ve orjinal haline geliyor acaba ne yapmalıyım şimdiden teşekkürler

  • Çok sağolun teşekkür ederim

  • sondes

    Merhaba Cihan Bey, verdiğiniz bilgiler için çok teşekkürler. Ancak anlamadığım bir nokta var. Alt tema kullandığımız zaman functions.php dosyasına eklemeler yapabiliyoruz. Ancak, üst temada kullanılmış temaya ait bir fonksiyonu değiştirmemiz gerekirse bu işlemi nasıl yapmamız gerekir?

    • Üst temadaki functions.php nin üzerine yazacaksınız. Tıpkı classlardaki override gibi. Örneğin foo diye bir fonksiyon olsun üstte. Siz child temada foo diye bir fonksiyon yazarsanız. Üst temadaki foo islevini yitirecek. Bu şekilde fonksiyonlarinizi duzenleyebilirsiniz

  • Bunca zaman bu nedir diye hiç merak etmemiştim, az önce birden aklıma geldi, keşke daha önce arasaymışım. Hakkaten önemli bir özellik, sırf bu yüzden 2-3 kere tema editledim güncelleme gelince tema dosyaları değiştiği için.

  • murat

    Çok bilgilendirici bir yazı olmuş.elinize sağlık

  • Teşekkürler. Faydalı oldu

  • Hasan Hüseyin Mercan

    Siz bu yazıyı paylaştıktan 6 sene sonra okumuş bulundum ama yine de verdiğiniz emek için teşekkür etmek istedim.
    Aslında premium temaların hemen hepsinde child mevcut ama bugün satın almış olduğum bir temada tekrar gördüğüm için merak edip araştırdım. Bu sayede konunuzu gördüm. Ve gerçekten çok faydalı oldu.
    Her seferinde tasarımın değişen bölümlerini not alıp güncellemeden sonra tekrar uğraşıyordum. Sayenizde bu dertten kurtulmuş olduk.

  • Emeğiniz ve ayırdığınız vakit için teşekkürler 🙂

  • AHMET UĞUR

    Cihan Bey Elinize emeğinize sağlık, konu ile ilgili web te gördüğüm en dolu yazı olmuş, devamını bekleriz ne diyeyim 🙂