- Konu sahibi
- #1
functions.php dosyasına kod eklerken en önemli noktalar; doğru temaya veya alt temaya müdahale etmek, PHP sözdizimini bozmamak, mevcut kodu silmemek ve eklediğiniz işlevi benzersiz bir adla tanımlamaktır. Ana temanın dosyasını değiştirirseniz tema güncellemesinde kodunuz silinebilir. Bu nedenle tema davranışıyla ilgili kodlar için tercihen alt temanın functions.php dosyasını, temadan bağımsız kodlar içinse özel bir eklentiyi kullanın.Dosyaya kod eklemeden önce
- Etkin temayı ve mümkünse etkin alt temayı belirleyin. Kodun çalışacağı
functions.phpdosyasını kullandığınız temaya göre seçin; pasif bir temanın dosyasına eklenen kod sitede çalışmaz. - Dosyanın mevcut hâlinin yedeğini alın. En azından değiştirmeden önce dosyanın tamamını bilgisayarınıza indirin.
- Kodun nereye ekleneceğini kontrol edin. Dosya
<?phpile başlıyorsa, dosyanın ortasına tekrar<?phpyazmayın. Tema dosyasında açılış etiketi yoksa kod çalışmaz; ancak mevcut açılış etiketinin içine eklenen kodun önüne yeni bir etiket koymak da sözdizimi hatasına yol açabilir. - Kodun kullandığı kanca adını ve fonksiyon adını kontrol edin. Aynı fonksiyon adı daha önce tanımlanmışsa PHP hata verebilir.
Dosyanın sonunda
?> kapanış etiketi bulunması zorunlu değildir. Kapanış etiketini eklememek, dosyanın sonuna yanlışlıkla boşluk veya görünmez karakter yazılması gibi sorunları azaltır. Kodun son satırından sonra dosyanın mevcut yapısını bozacak rastgele karakter bırakmayın.Çalışan en küçük örnek
Aşağıdaki örnek, sayfanın HTML gövde sınıflarına
site-ornek adını ekler. Böylece CSS veya başka bir tema özelleştirmesi bu sınıfı kullanabilir.Önce deneme ortamında uygulayın; dosyaya erişebildiğiniz FTP/panel yolunu koruyun. PHP CLI varsa
php -l functions.php sözdizimini kontrol eder; bu kontrol WordPress kancalarının veya uygulama davranışının doğru olduğunu tek başına kanıtlamaz. Yeni ve boş bir functions.php dosyası oluşturuyorsanız örneği açılış etiketiyle kullanın. Mevcut bir dosyaya ekliyorsanız yalnızca <?php satırını eklemeyin:
Kod:
<?php
function ornek_site_body_class( $classes ) {
$classes[] = 'site-ornek';
return $classes;
}
add_filter( 'body_class', 'ornek_site_body_class' );
Kodu kaydedip siteyi açtığınızda işlem başarılıysa sayfanın HTML çıktısındaki
body etiketinde site-ornek sınıfını görürsünüz. Sınıf görünmüyorsa yanlış temanın dosyasını değiştirmiş, kodu dosyanın PHP bölümü dışına koymuş veya tema body_class kancasını kullanmıyor olabilir. Beyaz ekran, PHP hata mesajı ya da yönetim paneline erişememe oluşursa son eklediğiniz kodu geri alın; dosyanın yedeğini geri yüklemek en hızlı düzeltme yoludur.Kodun yerini seçme kararı
Aynı kod her zaman
functions.php dosyasına konmamalıdır. Kodun yaşam süresi, yer seçiminde temel ölçüttür:| Kodun amacı | Uygun yer | Dikkat edilmesi gereken |
|---|---|---|
| Yalnızca belirli temanın görünümü veya davranışı | Alt tema functions.php | Alt tema değişirse kod da devre dışı kalabilir |
| Tema değişse de devam etmesi gereken işlev | Özel eklenti veya siteye özel eklenti | İşlevi temadan bağımsız tutun |
| Kısa süreli deneme | Deneme ortamında yedeği korunmuş dosya veya yönetilen kod parçacığı | Deneme bittiğinde kodu kaldırın ve çakışmayı kontrol edin |
Sık yapılan hatalar
Ana temaya doğrudan eklemek: Tema güncellendiğinde değişiklik kaybolabilir. Özelleştirme için alt tema kullanın; alt tema
functions.php dosyasına ana temadaki dosyanın tamamını kopyalamayın. Yalnızca gereken kodu ekleyin.Fonksiyon adını genel seçmek:
custom_function gibi yaygın adlar başka bir tema veya eklentiyle çakışabilir. Siteye özgü bir ön ek kullanın; örnekteki ornek_ gibi.Noktalı virgül ve parantezleri bozmak: Yeni koddan önceki satırın noktalı virgülünü silmek veya kapanış parantezini unutmak, hatanın başka bir satırda görünmesine neden olabilir. Sorun çıkarsa önce son eklediğiniz bölümü ve hemen üstündeki satırı karşılaştırın.
Aynı kodu iki kez eklemek: Aynı adlı fonksiyonu yeniden tanımlamak fatal hata üretebilir. WordPress’te aynı callback’i aynı kancaya ve aynı önceliğe tekrar kaydetmek genellikle ikinci ayrı kayıt oluşturmaz; farklı öncelikler, farklı callback’ler veya farklı kod yolları ise aynı işi tekrarlatabilir. Kodu eklemeden önce dosyada fonksiyon adını arayın.
Çıktıyı yanlış yerde üretmek:
functions.php dosyasına doğrudan HTML yazmak yerine uygun WordPress kancasını kullanın. İşlevi bir kancaya bağlamak, çıktının ne zaman üretileceğini ve başka kodlarla nasıl çalışacağını belirginleştirir.Kaynaklar
Sık sorulan sorular
functions.php dosyasını değiştirince site açılmıyorsa ne yapılır?
Son eklenen kodu kaldırın veya değiştirmeden önce aldığınız yedeği geri yükleyin. Hatanın nedeni genellikle eksik parantez, yanlış PHP etiketi, eksik noktalı virgül ya da aynı fonksiyonun ikinci kez tanımlanmasıdır.
Alt tema kullanırken ana temanın functions.php dosyası kopyalanmalı mı?
Hayır. Alt temanın dosyası ana temanın dosyasını otomatik olarak kopyalayan bir yedek değildir. Alt temada yalnızca kendi ek kodlarınızı bulundurun; gerekli işlevleri uygun kancalarla ana temanın işleyişine bağlayın.
Her özel kod functions.php içine mi eklenmelidir?
Hayır. Tema görünümüne bağlı kodlar burada bulunabilir; tema değişse de korunması gereken işlevler ise özel bir eklentide tutulmalıdır.