WordPress temalarının temel yapısını ve çekirdek dosyalarını anlamak
Standart bir WordPress teması, belirli dosyaları ve klasörleri içeren bir klasördür ve web sitesinin belirli bir bölümünde bulunur./wp-content/themes/Bu dosyalar, katalogun içinde yer alır ve birlikte çalışarak web sitesinin görünümünü ve işlevlerini tanımlarlar. Bu temel dosyaları anlamak, geliştirme sürecinin ilk adımıdır.
En temel dosya şudur:style.cssBu dosya sadece bir temanın stil şeması değil; aynı zamanda temanın “kimlik kartı”dır. Dosyanın baş kısmındaki yorumlar, temanın adını, yazarını, açıklamasını, sürümünü ve diğer meta bilgilerini içerir. WordPress, temayı arka planda tanımak ve göstermek için bu bilgileri okur.
/*
Theme Name: My Custom Theme
Theme URI: https://example.com/my-theme
Author: Your Name
Author URI: https://example.com
Description: A custom WordPress theme built for learning.
Version: 1.0.0
*/ Diğer kesinlikle gerekli dosya ise…index.phpBu, temanın varsayılan şablon dosyasıdır. WordPress daha spesifik bir şablon dosyası bulamadığında, sayfayı renderlamak için bu dosyayı kullanır.
Tavsiye edilen okuma Sıfırdan Uzmanlığa WordPress Tema Geliştirme Kılavuzu。
Bu iki dosyanın yanı sıra, işlevsel bir tema genellikle başka şablon dosyaları da içerir. Örneğin,header.phpWeb sayfasının baş kısmını (DOCTYPE, bölge, navigasyon menüsü vb.) oluşturmaktan sorumludur.footer.phpSayfa alt kısmının (footer) oluşturulmasından sorumludur.sidebar.phpBu durumda, bir kenar çubuğu tanımlanmıştır. Bunu kullanarak…get_header(), get_footer()和get_sidebar()Bu şablon etiketlerini, ana şablon dosyasına kolayca ekleyebilir ve böylece kodun modülerliğini ve yeniden kullanılabilirliğini sağlayabilirsiniz.
Kritik şablon dosyalarının işlevi
Temanın işlevleri, bir dizi şablon dosyası aracılığıyla gerçekleştirilir.single.phpTek bir blog makalesini veya özel makale türünü renderlemek için kullanılan tek içerik sayfasıdır. Kullanıcı bir makaleyi okumak için tıkladığında, WordPress bu şablonu çağırır.
Makale listelerini göstermek için, örneğin bir blogun ana sayfasında veya kategori dizin sayfasında…archive.php和home.php/index.phpÖnemli bir rol oynadı. Bunlar arasında,archive.phpBu, kategoriler, etiketler, yazarlar veya tarihler bazında arşivlenen makale listelerini göstermek için kullanılan genel bir arşiv şablonudur. Eğer konu belirtilmemişse…home.phpO zaman…index.phpBlog makaleleri için indeks sayfası olarak kullanılacak varsayılan şablon olacaktır.
Sayfa şablonları ise…page.phpBu, WordPress arayüzünde oluşturulan statik sayfaların görüntülenmesi için kullanılır. Belirli bir sayfa için özel bir tasarım oluşturmanız gerekiyorsa, dosyanın baş kısmına belirli bir şablon adı ekleyerek özel sayfa şablonları da oluşturabilirsiniz.
Konu şablonlarının yapısal seviyelerini ve döngü mekanizmalarını kavramak
WordPress, belirli bir isteğe hangi şablon dosyasının kullanılacağını belirlemek için akıllı bir şablon hiyerarşisi sistemi kullanır. Bu sistem, özel durumların genel durumlardan önce ele alınması ilkesine dayanır ve geliştiricilere web sitesinin farklı bölümleri için daha ayrıntılı bir tasarım sunma imkanı sağlar.
Tavsiye edilen okuma Mükemmel bir WordPress teması oluşturma: Sıfırdan uzmana kadar kapsamlı bir geliştirme rehberi。
Örneğin, bir kullanıcı “Haberler” kategorisindeki bir makaleye eriştiğinde, WordPress sırayla şunları arar:category-news.php(Özel Kategori Şablonu) -> category-5.php(Kategori ID Şablonu) -> category.php(Genel Kategori Şablonu) -> archive.php(Genel Arşivleme Şablonu) -> En sona kalan bu.index.phpBu yapıyı anlayıp kullanarak, son derece özelleştirilmiş sayfa görünümleri oluşturabilirsiniz.
WordPress Çekirdek Sorguları ve Döngüleri
Tüm içeriğin görüntülenmesini sağlayan temel unsur “WordPress döngüsüdür”. Bu, hangi “makalelerin” görüntülenmesi gerektiğini kontrol etmek için kullanılan bir PHP kod yapısıdır; eğer makaleler varsa, her biri döngü yoluyla tek tek görüntülenir. Döngü, neredeyse tüm şablon dosyalarının merkezindedir.
En temel döngü yapısı aşağıdaki gibidir. Bu yapı,have_posts()和the_post()Bu fonksiyon, sorgulanarak elde edilen makale koleksiyonunu tarar.
<h2><?php the_title(); ?></h2>
<div><?php the_content(); ?></div>
<p>Hiçbir makale bulunamadı.</p>
<?php endif; ?> Döngü içinde, makale bilgilerini çıkarmak için bir dizi şablon etiketi kullanabilirsiniz, örneğin:the_title()Çıkış Başlığı:the_content()Lütfen içeriğin tamamını sağlayın, böylece çeviriyi yapabilirim. Eğer metin parçaları varsa, bunları da ayrı ayrı belirtin.the_excerpt()Çıktı özeti vethe_permalink()Makale bağlantısını alın. Döngü, web sitesi içeriğinin dinamik olarak sunulmasını sağlar.
Fonksiyonlar ve hook’lar kullanarak tema özelliklerini genişletme
functions.phpDosya, temanın “güç merkezidir”. Bu bir şablon dosyası değil; temanın başlatılması sırasında otomatik olarak yüklenen bir PHP dosyasıdır. Burada fonksiyonlar tanımlayabilir, özellikler kaydedebilir, filtreler (Filter) ve eylem (Action) işlemleri ekleyebilirsiniz. Böylece WordPress’in çekirdek kodunu değiştirmeden temanın işlevlerini büyük ölçüde genişletebilir ve özelleştirebilirsiniz.
geçmek (bir fatura veya teftiş vb.)add_theme_support()Bu fonksiyonlar sayesinde temanıza çeşitli WordPress çekirdek özelliklerini etkinleştirebilirsiniz. Örneğin, makale özetlerinin (özel görsellerin) görünmesini sağlayabilir ve kullanıcıların makaleler için temsil eden görseller belirlemesine izin verebilirsiniz.
Tavsiye edilen okuma WordPress Tema Geliştirme Başlangıç Kılavuzu: Sıfırdan Özelleştirilmiş Tema Yapısını ve Şablonlarını Oluşturma。
function mytheme_setup() {
// 启用文章和评论的Feed链接
add_theme_support( 'automatic-feed-links' );
// 启用文章缩略图功能
add_theme_support( 'post-thumbnails' );
// 启用自定义Logo功能
add_theme_support( 'custom-logo' );
}
add_action( 'after_setup_theme', 'mytheme_setup' ); Eylem ve filtre hook’larını kullanmak
WordPress’in hook mekanizması, genişletilebilirliğinin temel taşıdır. Eylem hook’ları (Action Hooks), belirli zaman noktalarında özel kodların eklenmesine ve çalıştırılmasına olanak tanır. Örneğin, bunu kullanarak…wp_enqueue_scriptsKancalar, bir temaya stil şemaları ve JavaScript betiklerini güvenli bir şekilde eklemek için kullanılır.
function mytheme_scripts() {
// 引入主题的主样式表
wp_enqueue_style( 'mytheme-style', get_stylesheet_uri() );
// 引入自定义JavaScript文件
wp_enqueue_script( 'mytheme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_scripts' ); Filtre kancaları (Filter Hooks), işlem sırasında oluşturulan veya çıktı olarak verilen verileri değiştirmenize olanak tanır. Örneğin, bunları kullanarak…excerpt_lengthFiltreler, makale özetlerinin varsayılan kelime sayısını değiştirebilir.
function mytheme_custom_excerpt_length( $length ) {
return 30; // 将摘要字数改为30字
}
add_filter( 'excerpt_length', 'mytheme_custom_excerpt_length' ); Responsive tasarımı ve performans optimizasyonunu uygulayın.
Modern WordPress temalarının duyarlı (responsive) olması gerekmektedir; yani masaüstünden cep telefonuna kadar çeşitli ekran boyutlarına uyum sağlayabilmelidir. Duyarlı tasarımı gerçekleştirmenin en etkili yolu CSS medya sorguları (Media Queries) kullanmaktır. Bunu şu şekilde yapabilirsiniz:style.cssFarklı ekran genişlikleri için stil kuralları burada tanımlanmıştır.
Aynı zamanda, resimler gibi medya öğelerinin de duyarlı (responsive) olmasını sağlayın. Basit bir yöntem, resimlere uygun özellikler atamaktır.max-width: 100%;和height: auto;Böylece resim, kendi konteyneri içinde otomatik olarak ölçeklenebilir.
Konu yükleme hızını artırın.
Performans optimizasyonu, kullanıcı deneyimi ve SEO (Arama Motoru Optimizasyonu) açısından son derece önemlidir. Öncelikle, betiklerin ve stil şemalarının doğru sırayla yüklenmesini sağlamak ve render işleminin engellenmesini önlemek gerekmektedir.wp_enqueue_script()Bu durumda, ayarlamalar yapılabilir.in_footerParametreler şunlardır:trueÖnemli olmayan betikleri sayfanın en alt kısmına koyarak yükleyin.
Resimler için her zaman uygun boyutlar sağlanmalıdır. WordPress’te…add_image_size()Bu fonksiyon, özel resim boyutlarını kaydetmenize olanak tanır ve daha sonra şablonlarda bunları kullanabilirsiniz.the_post_thumbnail( ‘custom-size’ )Böylece tarayıcı, orijinal resmin büyüklüğünü ölçerek uygun boyutta bir resim yükler; büyük orijinal resmi ölçeklendirmez.
Ayrıca, temaya “gecikmeli yükleme” (Lazy Load) özelliğinin eklenmesini de düşünebilirsiniz. WordPress 5.5’ten itibaren, çekirdek yazılım resimler için yerleşik bir gecikmeli yükleme desteği sunmaktadır; ancak bu özelliği eklentiler veya özelleştirilmiş kodlar aracılığıyla daha da iyileştirebilirsiniz.
Kodlama standartlarına ve güvenliğe uyun.
Güvenli ve sürdürülebilir kod yazmak, profesyonel geliştiricilerin bir özelliğidir. Dinamik içerikleri oluşturmak için her zaman WordPress tarafından sağlanan API fonksiyonlarını kullanın; örneğin:esc_html(), esc_url()Çıktıyı eşitlemek için şunu kullanın:wp_kses_post()Güvenli HTML etiketlerinin geçmesine izin vermek, çapraz sitelik betik (XSS) saldırılarını etkili bir şekilde önleyebilir.
Kullanıcı girdilerini içeren formlar oluştururken veya veritabanıyla etkileşimde bulunurken, isteklerin geçerliliğini doğrulamak için mutlaka “Nonce” (tek seferlik sayılar) kullanmalısınız ve ayrıca önceden işlenmiş sorgular (preprocessed queries) kullanmalısınız.$wpdb->prepare()Bu, SQL enjeksiyonu saldırılarını önlemek için veritabanı sorgularını gerçekleştirmek için kullanılır.
Özetle.
WordPress tema geliştirme, yaratıcılığı ve teknolojiyi bir araya getiren bir süreçtir. Başlangıçta…style.css和index.phpTemel dosyalarla başlayarak, adım adım şablon seviyeleri, döngü mekanizmaları gibi temel kavramlara derinleşin.functions.phpGüçlü bir kancalama (hooking) sistemi sayesinde temalara sınırsız olanaklar katabilirsiniz. Son olarak, duyarlı tasarım (responsive design), performans optimizasyonu ve güvenli kodlama, başarılı, profesyonel ve güvenilir bir WordPress teması oluşturmanın vazgeçilmez unsurlarıdır. Sürekli pratik yaparak, daha gelişmiş tema özelleştirmeleri ve alt tema (subtheme) geliştirme tekniklerini keşfedin; böylece her türlü ihtiyacı karşılayan güçlü web siteleri oluşturabilirsiniz.
Sıkça Sorulan Sorular.
WordPress teması geliştirmek için hangi ön bilgi gereklidir?
Web sayfalarının yapısını ve stilini oluşturmak için HTML ve CSS temellerine sahip olmanız gerekmektedir. Ayrıca, WordPress’ün çekirdeği ve tema şablonlarının PHP ile yazılmış olması nedeniyle PHP’nin temel bilgilerine de hakim olmanız şarttır. JavaScript konusunda temel bir bilgiye sahip olmak, etkileşimli özellikler eklemenize yardımcı olacaktır; ancak bu, başlamak için zorunlu değildir.
Bir üst temayı değiştirmeden nasıl özelleştirme yapabilirim?
Özelleştirmeler yapmak için alt temaların (Child Themes) kullanılması şiddetle tavsiye edilir. Alt temalar yalnızca sizin değiştirdiğiniz dosyaları içerir.style.css, functions.phpVeya özel bir şablon kullanarak, üst temanın tüm özelliklerini devralır. Üst tema güncellendiğinde, yaptığınız özel değişiklikler kaybolmaz. Bir alt tema oluşturmak için yalnızca belirli başlık bilgilerine sahip bir dosya oluşturmanız yeterlidir.style.cssDosya ve bir tane daha…functions.phpDosya.
Bir temanın `functions.php` dosyası ile bir eklentinin (plugin) işlevleri arasındaki farklar nelerdir?
functions.phpBu özellikler mevcut temaya bağlıdır. Eğer temayı değiştirirseniz, bu özellikler artık kullanılamaz hale gelir. Öte yandan, eklentiler tarafından sağlanan özellikler temadan bağımsızdır; hangi temayı kullanırsanız kullanın, eklentinin özellikleri devam eder. Genellikle, bir özellik yalnızca görünümü veya düzeni değiştirmek için tasarlanmışsa, temaya eklenmesi daha uygundur; ancak web sitesine genel kullanım için özellikler (örneğin iletişim formları, SEO optimizasyonu) eklemek istiyorsanız, bu özelliklerin bir eklenti olarak oluşturulması daha iyidir.
Temamı nasıl birden çok dil çevirisine destekleyebilirim?
Bunu uluslararasılaştırma (i18n) ve yerelleştirme (l10n) yöntemleriyle gerçekleştirebilirsiniz. Tema kodunuzda, kullanıcıya yönelik tüm metinler için WordPress’in çeviri fonksiyonlarını kullanın.(), _e(), esc_html()Daha sonra, Poedit gibi bir araç kullanarak bunu oluşturun..potŞablon dosyaları; çevirmenler, bu dosyalara dayanarak farklı dillerde içerikler oluşturabilirler..po和.moDosya. Son olarak,functions.phpÇince'de kullanılır.load_theme_textdomain()Bir fonksiyon, çeviri dosyalarını yüklemek için kullanılır.
Bir sonraki adım, bundan sonra ne yapmalıyım?
Daha fazla okuma ve pratik bilgiler.
Aşağıdaki içerikler bu makalenin konusuyla ilgilidir ve daha fazla okumak için uygundur. Öncelikle mevcut sorununuza en yakın makaleden başlayın, sonra çevresel konulara doğru ilerleyin, genellikle daha iyi sonuçlar alırsınız.
- WordPress Tema Geliştirme Kılavuzu: Sıfırdan Başlayarak Özelleştirilmiş Web Siteleri Oluşturma
- WordPress Tema Geliştirme Kılavuzu: Sıfırdan Uzmanlığa Pratik Bir Eğitim Kursu
- WordPress Tema Geliştirme Kılavuzu: Sıfırdan Profesyonel Seviyede Web Sitesi Şablonları Oluşturmak
- WordPress Tema Geliştirme Uygulamaları: Sıfırdan Başlayarak Responsif, Kurumsal Düzeyde Web Siteleri Oluşturma
- Kod kullanmadan WordPress temaları oluşturma: Sıfırdan ustalığa kadar tam bir rehber