Merhaba, bu makalemde wordpress blogunuza nasıl shortcode ekleyebileceğinizi anlatacağım. Öncelikle “Shortcode nedir?” ondan başlayalım. Ardından gereksinimlerimizi inceleyelim ve son olarak da nasıl shortcode ekleyeceğimizi öğrenelim.
Shortcode nedir?
WordPress blogunuzun yönetimine çok vakit harcıyorsanız mutlaka ne olduğunu biliyorsunuz aslında. Shortcode, köşeli parantezler arasına yazılan anahtar kelimelerdir diyelim kısaca. Örneğin bir puanlama eklentisi yüklediniz ve kullanma talimatında diyor ki, eklentiyi görüntülemek istediğiniz kısma [rating] şeklinde bir kod ekleyin. İşte bu [rating] shortcode oluyor.
Çalışma mantığı çok basit. Arka planda [rating] anahtar kelimesi bir php metodu ile eşleştiriliyor. Sizin [rating] yazdığınız noktada ilgili php metodu devreye giriyor. Bu metoda elbette ki parametreler de geçebiliyorsunuz. Örneğin [rating text=”Oylama”] şeklinde, metodun text parametresine “Oylama” değerini gönderdik.
Gereksinimler
Aslında herhangi bir ekstra gereksinim yok. Temel seviyede php bilmeniz yeterli ve tabiki de wordpress dosyalarına erişebiliyor olmanız gerekli. Yani eğer blogunuz wordpress.com üzerindeyse bu işlemi uygulayamazsınız.
Shortcode nasıl eklenir?
Gelelim kendimize ait shortcode’u nasıl ekleyeceğimize. Öncelikle bir amacımız olmalı. Yani neden shortcode oluşturmak istiyoruz? Kendimden örnek vereyim, sitemdeki film yorumlarını görmüşsünüzdür. Her film yorumumun üzerinde filme ait bilgilerin olduğu bir tablo mevcut. Her film yorumu yazmaya kalktığımda bu tabloyu tekrar tekrar kopyala – yapıştır yaparak yazıma dahil ediyordum. Tabi sonradan tabloda bir alan değiştirmem gerektiğinde bütün yazıları elden geçirmem gerekiyordu. İşte tam bu noktada shortcode imdadıma yetişti.
Öncelikle kendime bir anahtar kelime seçtim: film. Bu kelime benim shortcode anahtar kelimem oldu. Tabloyu oluşturmak için nelere ihtiyacım var onları çıkarttım: filmin IMDB linki, yılı, türü, yönetmeni vs. vs. Her biri için bir değişken adı seçtim. En sonunda ortya şu tarzda bir şey çıktı:
[film imdblink="xxx" imdbrating="xxx" year="yyyy" director="zzzzz"]film yorumu[/film]
Şablonum böylece hazırlanmış oldu. Şimdi bu kodu wordpress’e tanıtmamız lazım. Sunucunuzdaki wordpress dosyalarının olduğu dizinde wp-content/themes/[temanızın adı]/functions.php dosyasını bulun ve bilgisayarınıza indirin (bazı temalarda alt klasörlerde olabilir bu dosya). Her ihtimale karşı bir yedeğini alın. Dosyayı herhangi bir metin editörü ile açıp en aşağı inin. Benim örneğimde ben aşağıdaki satırı ekledim:
add_shortcode('film', 'getfilm');
Siz de satırı kendinize göre değiştirip ekleyin. İlk parametre shortcode için kullandığınız anahtar kelime, ikinci parametre ise çağrılacak php metodunu temsil ediyor. Yani sayfa açılırken [film] görüldüğü yerde getfilm metodu çağrılacak.
Bu satırı ekledikten sonra, hemen altına metodumuzu yazıyoruz:
function getfilm($atts, $content=""){}
Metodumuz aslında iki parametre alıyor. İlk parametre yukarıdaki benim örneğimde imdblink, imdbrating, year, director değerlerini içeriyor. İkinci parametre olan $content ise, [film] ve [/film] arasındaki metni temsil ediyor. Yani benim örneğimde “film yorumu” kısmını temsil ediyor ve varsayılan değer olarak da boşluk değerini veriyoruz.
Php ile uğraşanlar $atts değişkeni içerisinden değerleri nasıl alacağımızı zaten biliyorlardır; ancak bilmeyenler için yazayım:
extract( shortcode_atts( array(
'imdblink' => '',
'imdbrating' => '0',
'year' => '2014',
'director' => '',
), $atts ) );
Dikkat edilmesi gereken nokta, [film] içerisindeki alan adları ile => işaretinden önceki alan adlarının aynı olması gerektiği. Alanların yanında yazan değerler, o alanın varsayılan değerlerini temsil ediyor. Yani eğer siz [film] içerisine ilgili alanı eklemezseniz burada tanımladığınız varsayılan değer geçerli olacak demek.
Bu şekilde extract metodunu çağırdıktan sonra tüm değişkenlere $imdblink, $imdbrating şeklinde erişebiliyoruz. Metot içerisinde ilgili değişiklikleri yaptıktan sonra return ile sonucu geri döndürüyoruz. Aşağıda küçük bir örnek kod yazdım bununla alakalı.
add_shortcode('film', 'getfilm');
function getfilm($atts, $content="")
{
extract( shortcode_atts( array(
'imdblink' => '',
'imdbrating' => '0',
'year' => '2014',
'director' => '',
), $atts ) );
$result = "Filmin linki: ".$imdblink." Puanı: ".$imdbrating." Yılı: ".$year." Yönetmeni: ".$director;
return $result;
}
Kodunuzu bu şekilde yazdıktan sonra, functions.php dosyasını kaydedin ve sunucunuzdaki dosya ile değiştirin. Hepsi bu kadar. Artık bloga yazınızı yazarken [film] gibi kendi oluşturmuş olduğunuz shortcode’u kullanabileceksiniz.
WordPress sitemde yazmış olduğum shortcode fonksiyon.php içerisinde çalıştırıyorum. Tüm yazılarda sorunsuz çalışıyor fakat title ve description “[shortcode]” olarak görünüyor. Buralarda nasıl çalıştırabilirim acaba?
Merhaba, bildiğim kadarıyla kısa kodlar sadece yazı içerisinde çalışıyor. O yüzden yapmak istediğiniz şey mümkün olmayabilir.