BU DERSİN BAŞLIKLARI
Tema fonksiyonları, temanıza bir takım özellikler eklemenize yarayan fonksiyonlardır. Aşağıda, en sık kullandığımız tema fonksiyonları, ayrı ayrı başlıklar altında ve kullanım örnekleri ile birlikte verilmiştir. Bu örneklere geçmeden önce, tema fonksiyonlarına ev sahipliği yapan functions.php
dosyasını tanıyalım.
Tema Fonksiyonları ve Functions.php Dosyası
WordPress temasına özellik eklemek deyince, akla, önce functions.php
dosyası gelmelidir.
Functions.php
dosyası, tema fonksiyonlarını kullandığımız tema dosyasıdır. Bu dosya sayesinde, WordPress temamıza yeni özellikler ekleriz, WordPress’in bize sunduğu bütün imkânları kullanabilir, temamızı daha fonksiyonel bir hale getirebilirsiniz.
Functions.php
dosyası, bir WordPress eklentisi gibi davranır, WordPress sitenize yeni özellikler ve fonksiyonellik kazandırır. Bu dosyayı, WordPress’in çekirdek fonksiyonlarını kullanmak için veya kendi fonksiyonlarınızı yazmak için kullanabilirsiniz.
Functions.php
dosyasının yapabildikleri, aslında bir WordPress eklentisinin yapabildikleri ile aynıdır. Eğer, ekleyeceğiniz özelliği, farklı temalarda da kullanmak istiyorsanız, bu özelliği, bir eklenti olarak eklemek en doğru tercih olacaktır.
Bir WordPress eklentisi ile functions.php
dosyası arasındaki farklılıklar şöyle sıralanabilir:
Bir WordPress eklentisi:
- Bir eklenti yazmaya başlarken, ilk önce WordPress’in bu eklentiyi tanımasını sağlayan özel bir text ile başlamalısınız.
- Bir eklenti,
wp-content/plugins
dizininde yeni bir klasör oluşturarak yazılır. - Bir eklenti, sadece etkinleştirildiğinde çalışır.
- Her temada kullanılabilir.
- Her eklenti, özel bir amaç için, temaya yeni bir özellik kazandırmak için yazılır.
Bir functions.php
dosyası:
- Eklentilerde olduğu gibi,
functions.php
dosyasını WordPress’e tanıtmaya gerek yoktur. WordPress bu dosyayı otomatik olarak algılar. - Temanızın adı “benim-temam” ise, bu dosya,
wp-content/themes/benim-temam
dizininde bulunur. - Sadece tema etkinleştirildiğinde çalışır.
- Sadece kendi temasına etki eder.
functions.php
dosyasına istediğiniz kadar farklı özellik ekleyebilirsiniz.- Bu dosya bir eklentinin yaptığı her şeyi yapabilir.
Her tema, kendi functions.php
dosyasına sahiptir fakat sadece aktif temanın functions.php
dosyası çalışır. Eğer hazır bir tema kullanıyorsanız, temanızın zaten bir functions.php
dosyası var demektir ve siz bu dosyaya istediğiniz değişiklikleri veya eklemeleri yapabilirsiniz.
Bir yavru tema da kendi functions.php
dosyasına sahip olabilir. Bir ana temayı modifiye etmenin en garanti yolu, yavru temasının functions.php
dosyasını kullanmaktır. Bu şekilde, ana temaya güncelleme geldiğinde, yaptığınız değişiklikler bundan etkilenmez.
WordPress, önce, ana temanın functions.php dosyasını yükler, sonra yavru temanınkini yükler. Yani yavru temanın funtions.php
doyası, ana temanınkinin üzerine yazılmaz, ana temanınkini geliştirmek ya da değiştirmek için kullanılır. Benzer şekilde, functions.php
dosyası, bütün eklenti dosyaları yüklendikten sonra yüklenir. Yani son sözü hep, functions.php
dosyası söyler.
functions.php
dosyası ile yapabileceğiniz şeylere örnekler:
- WordPress kancalarını (hooks) kullanabilir ve bir çok standart özelliği dilediğiniz gibi şekillendirebilirsiniz. Mesela “
excerpt_length
” kancası ile, yazılarınızın kısaltmalarındaki kelime sayılarını değiştirebilirsiniz. WordPress varsayılan olarak, kısaltmalarda, yazının ilk 55 kelimesini kullanır. - add_theme_support() fonsiyonu ile, WordPress’in temalar için sunduğu standart özelliklerini temanıza ekleyebilirsiniz. Bu özellikler; öne çıkan görsel, yazı formatları ve dolaşım menüsü gibi özelliklerdir.
- Temanızın şablon dosyalarında kullanmak istediğiniz fonksiyonları tanımlayabilirsiniz.
- Bir eklentinin yapabildiği bütün işleri yapabilirsiniz.
Temanızda kullanabileceğiniz standart özelliklere örnekler vererek devam edelim.
Temaya Temel Özellikleri Ekleme
Aşağıda, tema fonksiyonları yardımı ile temanıza çeşitli özellikler ekleyebilmeniz için, örnekler bulunmaktadır. Verilen örnekleri, temanızın functions.php
dosyasında oluşturmalısınız.
Fonksiyonlarınızın adının önünde ön ek (namespace) kullanmanız, isim çakışmasının önlemek için çok önemlidir. Bu amaçla, tema adınızı, fonksiyon adlarına ön ek yapabilirsiniz. (ilktemam_benimfonksiyonum()
gibi.)
Eğer, eklentilerdeki ve functions.php
dosyasındaki fonksiyonların adı çakışırsa, bu beklenmedik sonuçlara yol açabilir hatta sitenizi durdurabilir.
Temanızın genel ayarları için, bir kurulum fonksiyonu oluşturmak ve temel özellikleri, bu fonksiyon içinde etkinleştirmek iyi bir alışkanlıktır.
Oluşturduğumuz kurulum fonksiyonun, çalışması için ise, after_setup_theme
kancası ile tetiklenmesi gerekmektedir.
Aşağıdaki adımları takip ederek, bahsettiğimiz bu işlemlerin nasıl yapılacağını görebilirsiniz.
Önce, ilktemam_setup
adında, kapsayıcı bir kurulum fonksiyonu oluşturuyoruz ve bu fonksiyonu, after_setup_theme
kancası ile tetikliyoruz.
if ( ! function_exists( 'ilktemam_setup' ) ) :
/**
* Temanın varsayılan ayarlarını yap ve temel WordPress özelliklerini etkinleştir.
*
* Tema özelliklerini hemen başlangıçta eklemek, özelliklerimizin hepsini kullanabilmek için önemlidir.
*
* @since IlkTemam 1.0
*/
function ilktemam_setup() {
// Eklenecek özellikler buraya kodlanır
}
endif; // ilktemam_setup
// WordPress'e ilktemam_setup fonksiyonunu, tema dosyaları yüklendikten sonra kullanması gerektiğini söyler
add_action( 'after_setup_theme', 'ilktemam_setup' );
Aşağıdaki verilen tema fonksiyonlarını, yukarıda hazırladığımız kurulum fonksiyonunun gövdesine ekleyerek, temamıza, bir takım özellikler kazandırıyoruz.
Otomatik Besleme (Feed) Linki
Otomatik besleme linkleri, yazı ve yorumlara RSS beslemeleri özelliği kazandırır. Bu beslemeler, temanızın <head>
kısmında otomatik olarak gösterilir. Bu özellik add_theme_support() fonksiyonu ile eklenir.
add_theme_support( 'automatic-feed-links' );
Temanıza menüler eklemek için, önce bu menüleri kaydetmelisiniz. Kaydedilen bu menüleri, yönetim panelinizde Görünüm->Menüler sayfasından düzenleyebilirsiniz.
Birden çok menü kaydedebilirsiniz. Bir menü kaydetmek için register_nav_menu
() fonksiyonunu, kaydettiğiniz menüyü temanızda kullanmak için ise wp_nav_menu
() fonksiyonunu kullanmalısınız. Bu konu ilerleyen derslerde detaylı bir şekilde ele alınacaktır. Birden fazla menüyü tek seferde kaydetmek aşağıdaki kadar kolaydır:
register_nav_menus( array(
'ana_menu' => __( 'Ana Menü', 'ilktemam' ),
'yan_menu' => __( 'Yan Menü', 'ilktemam' )
) );
Yukarıda iki tane menü oluşturduk. İsterseniz daha fazla veya az da oluşturabilirsiniz. Birincisinin “theme_location
” değerini ana_menu
, ikincisinin ise yan_menu
olarak seçtik. Daha sonra, şablon dosyalarımızda, wp_nav_menu()
fonksiyonuna seçtiğimi bu isimleri girerek, temamıza menü koyabileceğiz. (İsterseniz ana_menu
ve yan_menu
yerine farklı isimler bulabilirsiniz fakat boşluk ve Türkçe karakter kullanmamaya dikkat etmelisiniz.)
Yukarıda kaydettiğimiz menüleri henüz temamızda görmemiz mümkün değildir. Bunun için bu menüleri tema sayfalarımızda (header.php
, footer.php
gibi) çağırmamız gereklidir. Aşağıda “Ana Menü” olarak kaydettiğimiz menüyü çağırıyoruz:
wp_nav_menu(array(
'theme_location' => 'ana_menu'
));
WordPress temanıza dolaşım menüleri ekleme hakkında daha detaylı bilgi için Menüler (Navigation Menus) adlı dersimizi okuyabilirsiniz.
Text Domain Yükleme
Temalarınızın farklı dillerde de yayın yapabilmesi için tercümeye hazır halde hazırlanması gerekir. Bir temanın tercüme edilebilmesini sağlayan şey, o temadaki metinlerin bir text domain ile birlikte yazılmasıdır. Temanızın text domainini kullanmadan önce yüklemeniz gerekmektedir. Bunu yapmak, tek satırlık bir kod yazmak kadar kolaydır:
load_theme_textdomain( 'ilktemam', get_template_directory() . '/languages' );
Bu kodu ekledikten sonra, artık temanızdaki bütün metin ifadelerini şu örnekteki gibi yazmalısınız:
<?php echo __('En Çok Satanlar', 'ilktemam'); ?>
Öne Çıkan Görseller (Post Thumbnails/Featured İmages)
Öne çıkan görseller, yazılarınızın veya sayfalarınızın vitrin resmi niteliğindeki görsellerdir. Temanızda bu görselleri içeriklerinizin en üstüne ya da en altına ya da istediğiniz yerine ve istediğiniz kadar ilgi çekici bir şekilde yerleştirebilirsiniz. Bu özellik her temanın kullanmak isteyeceği bir özelliktir.
add_theme_support( 'post-thumbnails' );
Bu kodu ekledikten sonra artık, yönetim panelinizden sayfa ya da yazı eklerken şöyle bir bölüm de göreceksiniz:
WordPress temasına öne çıkan görsel özelliği ekleme hakkında detaylı bilgi için Öne Çıkan Görsel Özelliği Ekleme adlı dersimizi okuyabilirsiniz.
Yazı Biçimleri-Formatları (Post Formats)
Yazı formatları, eklediğiniz yazıları farklı formatlarda sınıflandırabilme ve bu formatlara göre şablonlar hazırlayabilme imkanı sunar. Yazı formatlarını destekleyen bir tema yapmak, aşağıdaki kodu eklemek kadar basittir:
add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );
WordPress temanıza, post formats desteği sağlama hakkında daha detaylı bilgi için Yazı Biçimleri-Formatları (Post Formats) adlı dersimizi okuyabilirsiniz.
Hepsi Birden
Yukarıdaki kodları derleyip tek seferde yazarsak aşağıdaki gibi bir fonksiyonumuz olur. WordPress’e, bu fonksiyonun ne zaman kullanılacağını add_action()
fonksiyonu sayesinde belirtiyoruz.
if ( ! function_exists( 'ilktemam_setup' ) ) : //isimler karışmasın diye
/**
* Temanın varsayılan ayarlarını yap ve faklı WordPress özelliklerini aktive et.
*
* Bu tür fonksiyonları hemen başlangıçta yazmak, özelliklerimizin hepsini kullabilmek için önemlidir.
*
* @since IlkTemam 1.0
*/
function ilktemam_setup() {
/**
* Temayı tercümeye hazır hale getir
* Tercümeler /languages/ dizinine yerleştirilmelidir.
*/
load_theme_textdomain( 'ilktemam', get_template_directory() . '/languages' );
/**
*<head> kısmına yazı ve yorumlar için varsayılan RSS besleme linkini ekle.
*/
add_theme_support( 'automatic-feed-links' );
/**
* Öne çıkan görsel özelliği ekle.
*/
add_theme_support( 'post-thumbnails' );
/**
* İki tane menü kaydet.
*/
register_nav_menus( array(
'ana_menu' => __( 'Ana Menü', 'ilktemam' ),
'yan_menu' => __( 'Yan Menü', 'ilktemam' )
) );
/**
* Aşağıdaki yazı formatları için desetek oluştur:
* aside, gallery, quote, image, and video
*/
add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );
}
endif; // ilktemam_setup
// aşağıdaki fonksiyon WordPress'e ilktemam_setup fonksiyonunu ne
// zaman kullanaması gerektiğini söyler
add_action( 'after_setup_theme', 'ilktemam_setup' );
İçerik Genişliği
functions.php
dosyasınıza, bir maksimum genişlik değeri ekleyerek, sitenizde kullanılacak resimlerin, bu değeri aşmasını ve sayfanızın düzenini bozmasını engelleyebilirsiniz. Aşağıda, temamızda kullanılacak resimlerin, genişlik olarak 800 pixeli aşamayacağını belirtiyoruz.
if ( ! isset ( $content_width) )
$content_width = 800;
Diğer Özellikler
Yukarıda verilenlerin dışında, genel olarak kullanılan başka özellikler de vardır. Aşağıda, en sık kullanılan diğer özellikler listelenmiştir:
- Sayfalara üst kısım görselleri ekleme (custom headers)
- Sidebar (sayfa yanı)
- Özel arkaplanlar
- Editör stilleri ekleme
- HTML5
- Başlık etiketi (title tag)
Bu özelliklerden, daha sonraki derslerimizde bahsedilecektir.
Dosyanızın Son Hali: functions.php
Yukarıda bahsedilen bütün özellikler eklendiğinde, functions.php
dosyanız şöyle görünecektir:
/**
* IlkTemam'ın fonksiyonları ve açıklamaları
*
* @package IlkTemam
* @since IlkTemam 1.0
*/
/**
* Önce, temanın dizaynı ve stilinde lazım olan maksimum bir içerik genişliği belirledik.
* Bu değer, yüklenen resim ve video gibi görsellerin de maksimum genişliğini verecketir.
*/
if ( ! isset( $content_width ) )
$content_width = 800; /* pixels */
if ( ! function_exists( 'ilktemam_setup' ) ) :
/**
* Temanın varsayılan ayarlarını yap ve faklı WordPress özelliklerini aktive et.
*
* Bu tür fonksiyonları hemen başlangıçta yazmak, özelliklerimizin hepsini kullabilmek için önemlidir.
*
* @since IlkTemam 1.0
*/
function ilktemam_setup() {
/**
* Temayı tercümeye hazır hale getir
* Tercümeler /languages/ dizinine yerleştirilmelidir.
*/
load_theme_textdomain( 'ilktemam', get_template_directory() . '/languages' );
/**
*<head> kısmına yazı ve yorumlar için varsayılan RSS besleme linkini ekle.
*/
add_theme_support( 'automatic-feed-links' );
/**
* Öne çıkan görsel özelliği ekle.
*/
add_theme_support( 'post-thumbnails' );
/**
* İki tane menü kaydet.
*/
register_nav_menus( array(
'ana_menu' => __( 'Ana Menü', 'ilktemam' ),
'yan_menu' => __( 'Yan Menü', 'ilktemam' )
) );
/**
* Aşağıdaki yazı formatları için desetek oluştur:
* aside, gallery, quote, image, and video
*/
add_theme_support( 'post-formats', array ( 'aside', 'gallery', 'quote', 'image', 'video' ) );
}
endif; // ilktemam_setup
// aşağıdaki fonksiyon WordPress'e ilktemam_setup fonksiyonunu
// tema dosyaları yüklendikten sonra kullanması gerektiğini söyler
add_action( 'after_setup_theme', 'ilktemam_setup' );
1 yorum: “2.10 Tema Fonksiyonları”