WordPress Şablon Hiyerarşisi

wordpress template hierarchy

Şablon dosyaları, WordPress sitenizdeki web sayfalarını oluşturmak için kullanılan modüler, yeniden kullanılabilir dosyalardır. Bazı şablon dosyaları (örneğin başlık ve alt wood kısmı) sitenizin tüm sayfalarında kullanılırken, diğerleri yalnızca belirli koşullar altında kullanılır.

Bu makale, WordPress’in tek tek sayfaları göstermek için hangi şablon dosyasını veya dosyalarını kullanacağına nasıl karar verdiğini açıklar. Mevcut bir WordPress temasını özelleştirmek istiyorsanız, hangi şablon dosyasının düzenlenmesi gerektiğine karar vermenize yardımcı olacaktır.

Ayrıca, belirli bir sayfada hangi şablonların yükleneceğini kontrol etmek için Koşullu Etiketleri (Conditional Tags) kullanabilirsiniz.

Şablon Dosyası Hiyerarşisine Genel Bakış

WordPress, görüntülenecek sayfayı belirlemek için sorgu dizesini (query string) kullanır. Sorgu dizesi, web sitenizin her bir bölümüne giden bağlantıda bulunan bilgidir.

Basitçe söylemek gerekirse, WordPress eşleşen bir şablon dosyası bulana kadar şablon hiyerarşisinde aşağı doğru arama yapar. Hangi şablon dosyasını kullanacağına karar vermek için WordPress şunları yapar:

  1. Her sorgu dizesini, hangi sayfanın istendiğine karar vermek için bir sorgu tipiyle eşleştirir (örneğin, bir arama sayfası, bir kategori sayfası vb.).
  2. Şablon hiyerarşisi tarafından belirlenen sırayla şablonu seçer.
  3. Mevcut temanın dizininde belirli adlara sahip şablon dosyalarını arar ve hiyerarşide belirtilen ilk eşleşen şablon dosyasını kullanır.

Temel index.php şablon dosyası hariç, belirli bir şablon dosyasını uygulayıp uygulamayacağınıza siz karar verebilirsiniz.

Not: Bu örneklerde PHP dosya uzantısı kullanılmıştır. Blok temalarda ise HTML dosyaları kullanılır, ancak şablon hiyerarşisi aynıdır.

WordPress eşleşen bir şablon dosyası bulamazsa, hiyerarşideki bir sonraki dosyaya atlar. Hiçbir eşleşen şablon dosyası bulunamazsa, temanın index.php dosyası kullanılır.

Alt Tema (Child Theme) Durumları:

Alt tema kullanıyorsanız, alt temanıza eklediğiniz herhangi bir dosya, üst temadaki aynı dosyayı geçersiz kılar. Örneğin, her iki tema da aynı şablonu (category.php) içeriyorsa, alt temanın şablonu kullanılır.

Alt temada daha spesifik bir şablon (category-unicorns.php) varsa ve üst temada daha düşük öncelikli bir şablon (category.php) varsa, yine alt temanın category-unicorns.php dosyası kullanılır.

Ancak, alt tema yalnızca genel bir şablonu (category.php) içeriyor ve üst tema spesifik olanı (category-unicorns.php) içeriyorsa, üst temadaki spesifik şablon (category-unicorns.php) kullanılır.

 

Örnekler: Kategori Sayfası

 

Blogunuz http://ornek.com/blog/ adresindeyse ve bir ziyaretçi http://ornek.com/blog/kategori/sizin-kediniz/ gibi bir kategori sayfasına tıklar ise, WordPress doğru sayfayı oluşturmak için mevcut temanın dizininde kategori kimliğiyle eşleşen bir şablon dosyası arar:

  1. category-{slug}.php: Önce kategorinin kısa ismine (slug) göre eşleşen bir şablon dosyası arar. Kategori adı “haberler” ise, category-haberler.php dosyasını arar.
  2. category-{id}.php: Eğer category-haberler.php yoksa ve kategorinin Kimliği (ID) 4 ise, category-4.php adlı bir şablon dosyası arar.
  3. category.php: Eğer category-4.php yoksa, daha genel bir kategori şablonu olan category.php dosyasını arar.
  4. archive.php: Eğer category.php de mevcut değilse, genel arşiv şablonu olan archive.php dosyasına geri döner.
  5. index.php: Eğer archive.php de eksikse, son olarak ana tema şablon dosyası olan index.php dosyasına geri döner.

Ayrıntılı Şablon Hiyerarşisi

Şablon hiyerarşisinin bir şema olarak anlaşılması daha kolay olsa da, aşağıdaki bölümler WordPress’in bir dizi sorgu türü için şablon dosyalarını hangi sırayla çağırdığını açıklamaktadır:

Sorgu Tipi Kullanılan Şablon Dosyaları (Öncelik Sırasına Göre)
Ön Sayfa (Front Page) Gösterimi front-page.phphome.php (Yazılar Ana Sayfada ise) / page.php (Statik Sayfa ise) → index.php
Blog Yazıları Dizini home.phpindex.php (Eğer blog yazıları ayrı bir statik sayfada gösteriliyorsa)
Gizlilik Politikası Sayfası privacy-policy.phpcustom template filepage-{slug}.phppage-{id}.phppage.phpsingular.phpindex.php
Tekil Yazı (Single Post) single-{post-type}-{slug}.phpsingle-{post-type}.phpsingle.phpsingular.phpindex.php
Tekil Sayfa (Single Page) custom template filepage-{slug}.phppage-{id}.phppage.phpsingular.phpindex.php
Kategori (Category) Arşivi category-{slug}.phpcategory-{id}.phpcategory.phparchive.phpindex.php
Etiket (Tag) Arşivi tag-{slug}.phptag-{id}.phptag.phparchive.phpindex.php
Özel Taksonomi (Custom Taxonomy) Arşivi taxonomy-{taxonomy}-{term}.phptaxonomy-{taxonomy}.phptaxonomy.phparchive.phpindex.php
Özel Yazı Tipi (Custom Post Type) Arşivi archive-{post_type}.phparchive.phpindex.php
Yazar (Author) Arşivi author-{nicename}.phpauthor-{id}.phpauthor.phparchive.phpindex.php
Tarih (Date) Arşivi date.phparchive.phpindex.php
Arama Sonucu (Search Result) search.phpindex.php
404 (Bulunamadı) 404.phpindex.php
Eklenti (Attachment) {MIME-type}.php (Örn: image.php) → attachment.phpsingle-attachment-{slug}.phpsingle-attachment.phpsingle.phpsingular.phpindex.php
Gömülü İçerik (Embeds) embed-{post-type}-{post_format}.phpembed-{post-type}.phpembed.phpwp-includes/theme-compat/embed.php (Son Geri Dönüş)

ASCII Olmayan Karakterlerin Yönetimi

 

WordPress 4.7 sürümünden itibaren, şablon adının dinamik bir kısmı (örneğin slug, terim adı veya yazar adı) ASCII olmayan karakterler içeriyorsa, hem kodlanmamış hem de kodlanmış biçimleri destekler.

Örneğin, ID’si 6 olan “Merhaba Dünya 😀” adlı bir sayfa için sayfa şablonu hiyerarşisi şöyledir:

  1. page-merhaba-dunya-😀.php (Kodlanmamış)
  2. page-merhaba-dunya-%f0%9f%98%80.php (Kodlanmış)
  3. page-6.php
  4. page.php
  5. singular.php
  6. index.php

Filtre Hiyerarşisi

 

WordPress şablon sistemi, hiyerarşiyi filtrelemenize olanak tanır. Bu, hiyerarşinin belirli noktalarına müdahale edebileceğiniz ve değişiklik yapabileceğiniz anlamına gelir.

get_query_template() fonksiyonunda bulunan filtre, {$type}_template adını kullanır, burada $type şablon türüdür (örneğin: author_template, category_template).

Örnek:

Varsayılan yazar hiyerarşisi şöyledir:

author-{nicename}.phpauthor-{id}.phpauthor.php

Eğer author.php öncesine yazarın rolüne özel bir şablon (author-{role}.php) eklemek isterseniz, author_template filtresini kullanarak hiyerarşiyi manipüle edebilirsiniz.

Bu bilgiler, özellikle Germany gibi yüksek standartların beklendiği pazarlarda veya büyük projelerde çalışırken, temanızın tam olarak hangi kodu çalıştırdığını kontrol etmeniz ve doğru optimizasyonları yapmanız için hayati önem taşır.

kaynak: https://developer.wordpress.org/themes/classic-themes/basics/template-hierarchy/

Paylaş

Bir yanıt yazın

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

Bu alanı doldurun
Bu alanı doldurun
Lütfen geçerli bir e-posta adresi yazın.
Devam etmek için şartları kabul etmelisiniz

Öne çıkan web sitesi tasarım çalışmalarımıza göz atın

1.000’den fazla müşterimiz için oluşturduğumuz güzel web sitelerinden bazılarını inceleyin.

WordPress desteği ve bakımı sunuyoruz

WordPress uzmanlarından oluşan ekibimizin desteklediği planlarla devam eden bakımın stresinden kurtulun.

İlgili Makaleler