WordPress kısa koduyla içerik bileşenleri oluşturan kod düzenleyicisi

WordPress Kısa Kod Oluşturma Rehberi: Shortcode Nedir, Nasıl Yazılır?

WordPress ile hazırlanan bir yazıya, sayfaya veya bileşene dinamik bir özellik eklemek istediğinizde her defasında uzun kodlar yazmanız gerekmez. WordPress kısa kod sistemi, önceden tanımlanmış bir PHP fonksiyonunu köşeli parantezler içinde yazılan kısa bir ifadeyle çalıştırmanızı sağlar. Böylece bir bilgi kutusu, iletişim formu, ürün listesi, galeri veya özel sorgu yalnızca birkaç karakterden oluşan bir kısa kodla içerikte gösterilebilir.

Ancak kısa kod oluşturmak, internette sıkça gösterildiği gibi yalnızca add_shortcode() fonksiyonunu kullanmaktan ibaret değildir. Kısa kodun nerede tanımlanacağı, kullanıcıdan alınan değerlerin nasıl denetleneceği, çıktının nasıl güvenli hâle getirileceği ve tema değişikliklerinden nasıl korunacağı da önemlidir.

Bu rehberde WordPress kısa kodlarının ne olduğunu, nasıl çalıştığını ve güvenli bir özel kısa kodun nasıl geliştirileceğini başlangıçtan ileri düzeye kadar inceleyeceğiz. Rehber boyunca basit bir metin çıktısından başlayacak, daha sonra başlığı, türü ve bağlantısı değiştirilebilen erişilebilir bir bilgi kutusu oluşturacağız.

Table of Contents

WordPress Kısa Kod (Shortcode) Nedir?

Kısa kod, İngilizce adıyla shortcode, WordPress’te önceden tanımlanmış bir işlevin içerik alanından çağrılmasını sağlayan özel bir etikettir. WordPress’in resmî Shortcode API belgesinde açıklandığı üzere genellikle bir veya birkaç kelimeden oluşur ve yazı ya da sayfa içeriğine köşeli parantezler arasında eklenir:

[ozd_bilgi]

WordPress bu ifadeyi işlediğinde ozd_bilgi adıyla kaydedilmiş geri çağırma (callback) fonksiyonunu bulur. Fonksiyonun döndürdüğü HTML veya metin çıktısını kısa kodun bulunduğu yere yerleştirir. Böylece içerik yöneticisi PHP koduyla doğrudan uğraşmadan, geliştiricinin hazırladığı işlevi basit bir etiket aracılığıyla kullanabilir. Ziyaretçi ise sayfayı görüntülerken kısa kodun kendisini değil, fonksiyonun ürettiği sonucu görür.

Kısa kod yalnızca sabit bir metni ekrana getirmek zorunda değildir. Öznitelik adı verilen parametreleri kabul edebilir, açılış ve kapanış etiketleri arasında içerik taşıyabilir, veritabanından kayıt sorgulayabilir veya kullanıcıya göre farklı çıktı üretebilir. Örneğin aşağıdaki kullanımda aynı kısa kodun başlığı ve görünüm türü içerikten belirlenebilir:

[ozd_bilgi baslik="Dikkat" tur="uyari"]
İşleme başlamadan önce sitenizin yedeğini alın.
[/ozd_bilgi]

Buradaki baslik ve tur değerleri kısa kodun öznitelikleridir; iki etiket arasındaki metin ise kısa kodun içeriğidir. Callback fonksiyonu bu değerleri alır, gerekli kontrollerden geçirir ve uygun çıktıyı oluşturur. Bu sayede tek bir kısa kod farklı ihtiyaçlara göre yeniden kullanılabilir.

Kısa kodlar özellikle tekrar kullanılan veya dinamik olarak üretilen içeriklerde yararlıdır. Aynı yapıyı farklı yazılara ayrı ayrı kopyalamak yerine bir kez tanımlayıp ihtiyaç duyulan her yerde çağırabilirsiniz. İşlevde ya da HTML yapısında daha sonra yapılan bir değişiklik de kısa kodun kullanıldığı tüm içeriklere yansır. Böylece hem kod tekrarı azalır hem de merkezi yönetim kolaylaşır.

Kısa kod etiketi veritabanındaki yazı içeriğinde saklanır; etiketi çalıştıran PHP kodu ise tema veya eklenti tarafında bulunur. Bu ayrım önemlidir: kısa kodu tanımlayan tema ya da eklenti devre dışı bırakılırsa WordPress artık etiketi işleyemez ve kısa kod içerikte düz metin olarak görünebilir. Bu nedenle kalıcı, temadan bağımsız işlevlerin özel bir eklentide tutulması ve kısa kod adlarının başka projelerle çakışmayacak biçimde seçilmesi gerekir.

Özetle kısa kod, PHP kodunun kendisi değil; kayıtlı bir işlevi içerik içinde çağıran metinsel bir yer tutucudur. Gücü, karmaşık veya tekrar eden bir işlemi editörde kolayca kullanılabilen kısa bir ifadeye dönüştürmesinden gelir.

Kısa kodun içerik düzenleyicisinden bilgi kutusuna dönüşümü

WordPress Kısa Kodları Nerelerde Kullanılır?

Kısa kod sistemi farklı ihtiyaçlara uyarlanabilir. Yaygın kullanım örneklerinden bazıları şunlardır:

  • İletişim ve abonelik formlarını göstermek
  • Ürün veya katalog listeleri oluşturmak
  • Belirli kategorideki son yazıları listelemek
  • Galeri, ses veya video oynatıcı eklemek
  • Bilgi, uyarı ve duyuru kutuları hazırlamak
  • Kullanıcının rolüne göre farklı içerik göstermek
  • Tekrarlanan açıklama ve çağrı alanlarını merkezi olarak yönetmek

Kısa kodun asıl gücü, karmaşık bir işlemi kısa bir kullanıma dönüştürmesidir. Bununla birlikte yalnızca birkaç satırlık sabit metin için gereksiz yere kısa kod oluşturmak doğru değildir. Kısa kod; tekrar kullanım, dinamik veri veya merkezi yönetim sağladığında anlam kazanır.

Bu yaklaşımın gerçek bir uygulaması olarak, geliştirdiğim OZD Katalog Eklentisi, yönetim panelinde hazırlanan ürün ve katalog listelerini kısa kodlar aracılığıyla farklı sayfalarda gösterebilir.

Benzer biçimde, WordPress’te içindekiler tablosu oluşturma rehberinde, uzun içeriklerde tekrar kullanılabilecek bir yapının kısa kodla nasıl çağrılabileceğine ilişkin uygulamalı bir örnek bulunmaktadır.

Kısa Kodlar Nasıl Çalışır?

WordPress kısa kod oluşturma işlemi iki temel parçadan oluşur:

  1. Kısa kod çalıştığında ne üretileceğini belirleyen bir callback fonksiyonu yazılır.
  2. Bu fonksiyon add_shortcode() ile bir kısa kod adına bağlanır.

İçerik ziyaretçiye gönderilmeden önce WordPress, yazı metnini çeşitli filtrelerden geçirir. Kayıtlı bir kısa kodla karşılaştığında etiketi, öznitelikleri ve varsa iki etiket arasındaki içeriği ayrıştırır. Ardından bu değerleri ilgili callback fonksiyonuna gönderir. Fonksiyondan dönen metin, kısa kodun yerine eklenir ve sayfanın geri kalanıyla birlikte ziyaretçiye sunulur.

Bu süreçte yazı düzenleyicisine PHP kodu eklenmez. PHP kodu tema veya eklenti dosyasında çalışır; içerik üreticisi yalnızca kendisine sunulan kısa kod etiketini kullanır. Böylece geliştirme mantığı ile içerik yönetimi birbirinden ayrılmış olur.

Kısa kodun ayrıştırılıp PHP fonksiyonuyla web çıktısına dönüştürülme aşamaları

Callback Fonksiyonuna Aktarılan Değerler

WordPress bir kısa kod callback fonksiyonuna üç değer aktarabilir:

  • $atts: Kısa kodda yazılan öznitelikleri taşır.
  • $content: Açılış ve kapanış etiketleri arasındaki içeriği taşır.
  • $tag: Çalıştırılan kısa kodun adını taşır.
function ozd_ornek_kisa_kodu( $atts, $content = null, $tag = '' ) {
    // Kısa kod işlemleri burada yapılır.
}

Her callback fonksiyonunun bu üç parametreyi de kullanması gerekmez. Sabit çıktı üreten bir kısa kod parametre almayabilir. Aynı callback fonksiyonu birden fazla kısa kod etiketi için kullanılacaksa $tag değeri hangi etiketin çağrıldığını anlamayı sağlar.

WordPress’in Yerleşik Kısa Kodları

WordPress çekirdeği geçmişten beri bazı medya işlevleri için yerleşik kısa kodlar sunar. Galeri, ses, video, oynatma listesi ve içerik açıklaması gibi yapılar bunlara örnektir. Modern blok düzenleyici birçok kullanımda bu kısa kodların yerini bloklarla doldursa da eski içeriklerin çalışmaya devam etmesi ve farklı eklentilerle uyumluluk için kısa kod sistemi korunur.

Bir eklenti tarafından sunulan kısa kod ise yalnızca ilgili eklenti etkin olduğu sürece çalışır. Örneğin form, katalog veya ürün listeleme eklentisi devre dışı bırakılırsa ona ait kısa kod içerikte düz metin olarak kalabilir. Bu nedenle bir kısa kodu kullanmadan önce hangi tema, eklenti veya özel kod tarafından tanımlandığını bilmek önemlidir.

En basit yapı şöyledir:

function ozd_bilgi_kisa_kodu() {
    return '<p>Bu bir bilgi mesajıdır.</p>';
}

add_shortcode( 'ozd_bilgi', 'ozd_bilgi_kisa_kodu' );

Bu kodda ozd_bilgi_kisa_kodu() adlı fonksiyon gösterilecek içeriği hazırlar. add_shortcode() ise ozd_bilgi etiketi ile bu fonksiyonu eşleştirir. Artık yazı veya sayfa içine aşağıdaki ifade eklendiğinde bilgi mesajı gösterilir:

[ozd_bilgi]

add_shortcode() Fonksiyonu Nasıl Kullanılır?

WordPress’in resmî fonksiyon kaynağında tanımlanan add_shortcode() fonksiyonu iki parametre kabul eder:

add_shortcode( 'kisa_kod_adi', 'callback_fonksiyonu' );
  • kisa_kod_adi: İçerikte köşeli parantezler arasında kullanılacak etikettir.
  • callback_fonksiyonu: Kısa kod çalıştığında çağrılacak fonksiyondur.

Kısa kod adı küçük harflerle yazılmalı ve benzersiz olmalıdır. Başka bir tema veya eklenti aynı adı kaydederse kısa kodlardan biri diğerinin üzerine yazılabilir. Bu nedenle bilgi gibi genel bir ad yerine ozd_bilgi gibi projeye özgü bir önek kullanmak daha güvenlidir.

Kısa kod adlarında boşluk ve WordPress tarafından ayrılmış özel karakterler kullanılamaz. Benzer adlarla oluşabilecek ayrıştırma sorunlarını azaltmak için kelimeleri alt çizgiyle ayırmak iyi bir yaklaşımdır.

Kısa Kod Fonksiyonunda Neden echo Değil return Kullanılmalıdır?

Kısa kod callback fonksiyonu çıktıyı doğrudan ekrana yazdırmamalıdır. Hazırlanan içeriği return ile WordPress’e döndürmelidir. WordPress, döndürülen değeri kısa kodun içerikte bulunduğu konuma yerleştirir.

Aşağıdaki kullanım yanlıştır:

function ozd_bilgi_kisa_kodu() {
    echo '<p>Bu bir bilgi mesajıdır.</p>';
}

Doğru kullanım şöyledir:

function ozd_bilgi_kisa_kodu() {
    return '<p>Bu bir bilgi mesajıdır.</p>';
}

echo kullanılması çıktının yanlış konumda görünmesine, editör önizlemesinde beklenmeyen davranışlara veya içeriğin düzeninin bozulmasına neden olabilir. Kısa kod fonksiyonlarında temel kural, çıktıyı yazdırmak değil döndürmektir.

WordPress Kısa Kod Türleri

WordPress kısa kodları kullanım biçimlerine göre üç temel grupta ele alınabilir.

Kendi Kendine Kapanan Kısa Kod

Başlangıç ve bitiş etiketi arasında içerik taşımaz:

[ozd_bilgi]

Fonksiyon tarafından belirlenen sabit veya dinamik sonucu gösterir.

Öznitelik Kullanan Kısa Kod

Kısa kodun davranışı, kullanıcı tarafından girilen parametrelerle değiştirilebilir:

[ozd_bilgi baslik="Önemli Bilgi" tur="uyari"]

Burada baslik ve tur kısa kod öznitelikleridir.

Açılış ve Kapanış Etiketli Kısa Kod

Kısa kodun arasına özel içerik yazılabilir:

[ozd_bilgi]İşleme başlamadan önce sitenizin yedeğini alın.[/ozd_bilgi]

Bu kullanımda iki etiket arasındaki metin callback fonksiyonuna $content değişkeniyle aktarılır.

Kendi kendine kapanan, öznitelikli ve kapsayıcı kısa kod türleri

Parametreli WordPress Kısa Kodu Nasıl Oluşturulur?

Bir kısa kodun her kullanımda farklı sonuç üretmesi için özniteliklerden yararlanılır. Örneğin bilgi kutusunun başlığını ve türünü içerikten belirleyebiliriz:

function ozd_bilgi_kisa_kodu( $atts ) {
    $atts = shortcode_atts(
        array(
            'baslik' => 'Bilgi',
            'tur'     => 'bilgi',
        ),
        $atts,
        'ozd_bilgi'
    );

    $baslik = sanitize_text_field( $atts['baslik'] );
    $tur     = sanitize_key( $atts['tur'] );

    return sprintf(
        '<div class="ozd-bilgi ozd-bilgi--%1$s"><h3>%2$s</h3><p>Bu bir bilgi mesajıdır.</p></div>',
        esc_attr( $tur ),
        esc_html( $baslik )
    );
}

add_shortcode( 'ozd_bilgi', 'ozd_bilgi_kisa_kodu' );

Kısa kod aşağıdaki biçimlerde kullanılabilir:

[ozd_bilgi]

[ozd_bilgi baslik="Dikkat" tur="uyari"]

Öznitelik girilmezse shortcode_atts() içinde belirlenen varsayılan değerler kullanılır. Kullanıcı farklı bir başlık veya tür girerse ilgili varsayılan değer değiştirilir.

shortcode_atts() Ne İşe Yarar?

shortcode_atts() fonksiyonu, kısa koddan gelen öznitelikleri tanımladığınız varsayılan değerlerle birleştirir. Aynı zamanda desteklemediğiniz özniteliklerin sonuç dizisine eklenmesini engeller.

$atts = shortcode_atts(
    array(
        'baslik' => 'Bilgi',
        'tur'     => 'bilgi',
    ),
    $atts,
    'ozd_bilgi'
);

Bu kodun ardından $atts['baslik'] ve $atts['tur'] değerleri güvenli biçimde okunabilir. Ancak shortcode_atts() tek başına güvenlik sağlamaz. Yalnızca hangi özniteliklerin kabul edileceğini ve eksik olanların varsayılan değerlerini belirler. Gelen değerlerin ayrıca türüne uygun biçimde temizlenmesi, doğrulanması ve çıktı bağlamına göre güvenli hâle getirilmesi gerekir.

Öznitelik adlarının WordPress tarafından küçük harfe dönüştürüldüğünü de unutmamak gerekir. Bu nedenle kutuTuru gibi büyük harf içeren adlar yerine kutu_turu biçimi tercih edilmelidir.

Açılış ve Kapanış Etiketli Kısa Kod Oluşturma

Bilgi kutusunun metnini kısa kod etiketleri arasından almak için callback fonksiyonuna $content parametresi eklenir:

function ozd_bilgi_kisa_kodu( $atts, $content = null ) {
    $atts = shortcode_atts(
        array(
            'baslik' => 'Bilgi',
            'tur'     => 'bilgi',
        ),
        $atts,
        'ozd_bilgi'
    );

    $baslik = sanitize_text_field( $atts['baslik'] );
    $tur     = sanitize_key( $atts['tur'] );
    $icerik  = null !== $content ? $content : '';

    return sprintf(
        '<div class="ozd-bilgi ozd-bilgi--%1$s" role="note"><h3>%2$s</h3><div class="ozd-bilgi__icerik">%3$s</div></div>',
        esc_attr( $tur ),
        esc_html( $baslik ),
        wp_kses_post( $icerik )
    );
}

add_shortcode( 'ozd_bilgi', 'ozd_bilgi_kisa_kodu' );

Artık kullanım şu şekilde olabilir:

[ozd_bilgi baslik="Yedekleme Uyarısı" tur="uyari"]
İşleme başlamadan önce sitenizin dosya ve veritabanı yedeğini alın.
[/ozd_bilgi]

role="note" niteliği, kutunun yardımcı bir not olduğunu destekleyen teknolojilere bildirmeye yardımcı olur. Ancak ARIA nitelikleri yalnızca gerektiğinde kullanılmalı, doğru HTML yapısının yerine geçirilmemelidir.

Kısa Kod İçinde Başka Bir Kısa Kod Nasıl Çalıştırılır?

Bir kapsayıcı kısa kodun içine başka bir kısa kod yazılacaksa içeriğin do_shortcode() ile işlenmesi gerekir. Kullanıcının iki etiket arasına girdiği HTML sınırlandırılacaksa önce bu içerik temizlenebilir, ardından içinde bulunan kayıtlı kısa kodlar çalıştırılabilir:

$icerik = null !== $content
    ? do_shortcode( wp_kses_post( $content ) )
    : '';

Bu sıralamada önce editörün girdiği içerik izin verilen HTML öğeleriyle sınırlandırılır, ardından içindeki kayıtlı kısa kodlar çalıştırılır. do_shortcode() sonucunu sonradan bütünüyle wp_kses_post() ile süzmek her kullanım için doğru değildir; içteki kısa kodun ürettiği form veya başka özel HTML öğeleri kaldırılabilir. İç içe çalıştırılmasına izin verilen kısa kodların kendi çıktı güvenliğini sağlaması gerekir.

Örneğin:

[ozd_bilgi baslik="İletişim"]
[iletisim_formu]
[/ozd_bilgi]

Farklı kısa kodlar iç içe kullanılabilir. Ancak aynı kısa kodun kendi içinde yeniden açılması ayrıştırma sorunlarına yol açabilir. Bu nedenle bir ozd_bilgi kısa kodunun içinde ikinci bir ozd_bilgi kullanmamak gerekir.

Güvenli Kısa Kod Geliştirme

Kısa kod öznitelikleri içerik editörü tarafından değiştirilebilir. Bu nedenle kısa koddan gelen hiçbir değer, kontrol edilmeden HTML çıktısına eklenmemelidir. Güvenli geliştirmede üç farklı işlem birbirinden ayrılmalıdır.

Veriyi Temizleme

WordPress veri temizleme yaklaşımında amaç, gelen değerdeki istenmeyen karakterleri kaldırarak veriyi beklenen biçime yaklaştırmaktır:

$baslik = sanitize_text_field( $atts['baslik'] );
$tur    = sanitize_key( $atts['tur'] );
$url    = esc_url_raw( $atts['url'] );

Veriyi Doğrulama

Doğrulama, değerin izin verilen seçeneklerden biri olup olmadığını kontrol eder. Bilgi kutumuz yalnızca üç tür kabul etsin:

$izin_verilen_turler = array( 'bilgi', 'uyari', 'basari' );

if ( ! in_array( $tur, $izin_verilen_turler, true ) ) {
    $tur = 'bilgi';
}

Bu kontrol yapılmadığında kullanıcı beklenmeyen bir CSS sınıfı oluşturabilir. Sayısal değerlerde absint(), sınırlı seçeneklerde ise katı karşılaştırmalı in_array() kullanılabilir.

Çıktıyı Güvenli Hâle Getirme

WordPress’in resmî çıktı kaçırma belgesinde açıklandığı gibi, İngilizcede escaping olarak adlandırılan bu işlem değer HTML çıktısına yerleştirilirken uygulanır. Kullanım bağlamına göre farklı fonksiyonlar seçilir:

  • Düz metin için esc_html()
  • HTML niteliği için esc_attr()
  • Bağlantı adresi için esc_url()
  • Sınırlı ve güvenli HTML için wp_kses_post()

Bir değeri daha önce temizlemiş olmak, çıktı sırasında güvenli hâle getirme gereksinimini ortadan kaldırmaz. Temizleme veri alınırken, escaping işlemi ise çıktı oluşturulurken uygulanır.

Kısa kod verisinin temizleme, doğrulama ve çıktı güvenliği aşamalarından geçmesi

Güvenli ve Tam Bilgi Kutusu Kısa Kodu

Aşağıdaki örnek; başlık, kutu türü, bağlantı ve kapsayıcı içerik desteğini bir araya getirir:

function ozd_bilgi_kisa_kodu( $atts, $content = null ) {
    $atts = shortcode_atts(
        array(
            'baslik'         => 'Bilgi',
            'tur'            => 'bilgi',
            'url'            => '',
            'baglanti_metni' => 'Ayrıntıları görüntüle',
        ),
        $atts,
        'ozd_bilgi'
    );

    $baslik        = sanitize_text_field( $atts['baslik'] );
    $tur            = sanitize_key( $atts['tur'] );
    $url            = esc_url_raw( $atts['url'] );
    $baglanti_metni = sanitize_text_field( $atts['baglanti_metni'] );

    $izin_verilen_turler = array( 'bilgi', 'uyari', 'basari' );

    if ( ! in_array( $tur, $izin_verilen_turler, true ) ) {
        $tur = 'bilgi';
    }

    $icerik = null !== $content
        ? do_shortcode( wp_kses_post( $content ) )
        : '';

    $cikti  = '<section class="ozd-bilgi ozd-bilgi--' . esc_attr( $tur ) . '" aria-labelledby="ozd-bilgi-baslik">';
    $cikti .= '<h3 id="ozd-bilgi-baslik" class="ozd-bilgi__baslik">' . esc_html( $baslik ) . '</h3>';
    $cikti .= '<div class="ozd-bilgi__icerik">' . $icerik . '</div>';

    if ( ! empty( $url ) ) {
        $cikti .= '<p><a class="ozd-bilgi__baglanti" href="' . esc_url( $url ) . '">';
        $cikti .= esc_html( $baglanti_metni );
        $cikti .= '</a></p>';
    }

    $cikti .= '</section>';

    return $cikti;
}

add_shortcode( 'ozd_bilgi', 'ozd_bilgi_kisa_kodu' );

Örnek kullanım:

[ozd_bilgi baslik="Güvenlik Uyarısı" tur="uyari" url="https://ornek.com" baglanti_metni="Yedekleme rehberini incele"]
Tema veya eklenti dosyalarını değiştirmeden önce güncel bir yedek oluşturun.
[/ozd_bilgi]

Kısa kod aracılığıyla bağlantı veya çağrı düğmesi hazırlamak istiyorsanız, farklı yöntemlerin karşılaştırıldığı WordPress’te buton oluşturma rehberini de inceleyebilirsiniz.

Aynı sayfada birden fazla bilgi kutusu kullanılacaksa sabit id değeri tekrar eder. Üretim ortamında her kutu için benzersiz bir başlık kimliği oluşturmak gerekir. Aşağıdaki yöntem kullanılabilir:

$baslik_id = wp_unique_id( 'ozd-bilgi-baslik-' );

Ardından aria-labelledby ve başlık id değerlerinde aynı değişken kullanılmalıdır. Böylece aynı sayfada yinelenen kimlik oluşmaz.

Kısa Kod functions.php Dosyasına mı, Eklentiye mi Eklenmelidir?

Kısa kod örneklerinin çoğu kodu doğrudan etkin temanın functions.php dosyasına eklemeyi önerir. Bu yöntem hızlı bir test için kullanılabilir; ancak kalıcı bir işlev açısından her zaman doğru seçim değildir.

Kısa kod sitenin tasarımından bağımsız bir işlev sunuyorsa eklenti içinde tutulmalıdır. Tema değiştirildiğinde ana temanın functions.php dosyasındaki kısa kod da devre dışı kalır. İçerikte kullanılan etiketler işlenemediği için ziyaretçiler sayfalarda ham kısa kod metinleri görebilir.

Temaya özgü ve yalnızca o tasarım ile anlam taşıyan bir kısa kod, tercihen child theme içinde bulunabilir. Ürün listesi, form, hesaplama aracı veya bilgi kutusu gibi temadan bağımsız özellikler ise küçük bir özel eklentiye dönüştürülmelidir.

Kısa Kodu Bağımsız Eklentiye Dönüştürme

Bilgi kutusu kısa kodunu temadan bağımsız hâle getirmek için şu adımlar uygulanabilir:

  1. wp-content/plugins dizininde ozd-bilgi-kisa-kodu adlı klasör oluşturun.
  2. Klasörün içinde ozd-bilgi-kisa-kodu.php adlı dosya oluşturun.
  3. Aşağıdaki eklenti başlığını ve kısa kod fonksiyonunu dosyaya ekleyin.
  4. WordPress yönetim panelinden Eklentiler sayfasını açın.
  5. OZD Bilgi Kısa Kodu eklentisini etkinleştirin.
<?php
/**
 * Plugin Name: OZD Bilgi Kısa Kodu
 * Description: Yazı ve sayfalara özelleştirilebilir bilgi kutuları ekler.
 * Version: 1.0.0
 * Author: Sadık Özdoğan
 * License: GPL-2.0-or-later
 * Text Domain: ozd-bilgi-kisa-kodu
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

function ozd_bilgi_kisa_kodu( $atts, $content = null ) {
    $atts = shortcode_atts(
        array(
            'baslik' => 'Bilgi',
            'tur'     => 'bilgi',
        ),
        $atts,
        'ozd_bilgi'
    );

    $baslik = sanitize_text_field( $atts['baslik'] );
    $tur     = sanitize_key( $atts['tur'] );

    $izin_verilen_turler = array( 'bilgi', 'uyari', 'basari' );

    if ( ! in_array( $tur, $izin_verilen_turler, true ) ) {
        $tur = 'bilgi';
    }

    $icerik    = null !== $content
        ? do_shortcode( wp_kses_post( $content ) )
        : '';
    $baslik_id = wp_unique_id( 'ozd-bilgi-baslik-' );

    return sprintf(
        '<section class="ozd-bilgi ozd-bilgi--%1$s" aria-labelledby="%2$s"><h3 id="%2$s" class="ozd-bilgi__baslik">%3$s</h3><div class="ozd-bilgi__icerik">%4$s</div></section>',
        esc_attr( $tur ),
        esc_attr( $baslik_id ),
        esc_html( $baslik ),
        $icerik
    );
}

function ozd_bilgi_kisa_kodunu_kaydet() {
    add_shortcode( 'ozd_bilgi', 'ozd_bilgi_kisa_kodu' );
}

add_action( 'init', 'ozd_bilgi_kisa_kodunu_kaydet' );

Dosyanın başındaki ABSPATH kontrolü, eklenti dosyasının WordPress dışında doğrudan çalıştırılmasını engeller. Kısa kodun init kancasında kaydedilmesi ise kayıt işlemini WordPress başlatıldıktan sonra gerçekleştirir.

Hazırladığınız kısa kod eklentisini yalnızca kendi sitenizde kullanmak yerine topluluğa sunmak istiyorsanız; dosya hazırlığı, otomatik kontroller, başvuru, inceleme ve SVN aşamalarını WordPress.org’a eklenti gönderme rehberinde ayrıntılı olarak bulabilirsiniz.

Kısa Kod İçin CSS Nasıl Eklenir?

Üretim ortamında CSS kodunu PHP çıktısına satır içi stil olarak eklemek yerine ayrı bir dosyada tutmak daha düzenlidir. Eklenti klasöründe assets/css/ozd-bilgi.css dosyası oluşturabilirsiniz:

.ozd-bilgi {
    margin: 1.5rem 0;
    padding: 1rem;
    border-inline-start: 4px solid #2563eb;
    background: #eff6ff;
    color: #172033;
}

.ozd-bilgi--uyari {
    border-inline-start-color: #b45309;
    background: #fff7ed;
}

.ozd-bilgi--basari {
    border-inline-start-color: #15803d;
    background: #f0fdf4;
}

.ozd-bilgi__baslik {
    margin-block: 0 0.5rem;
    font-size: 1.125rem;
}

.ozd-bilgi__icerik > :last-child {
    margin-bottom: 0;
}

Stil dosyası eklentiye şu şekilde kaydedilebilir:

function ozd_bilgi_stilini_kaydet() {
    wp_register_style(
        'ozd-bilgi',
        plugin_dir_url( __FILE__ ) . 'assets/css/ozd-bilgi.css',
        array(),
        '1.0.0'
    );
}

add_action( 'wp_enqueue_scripts', 'ozd_bilgi_stilini_kaydet' );

Dosyanın yalnızca kısa kod kullanılan sayfalarda yüklenmesini istiyorsanız callback içinde kayıtlı stili kuyruğa ekleyebilirsiniz:

wp_enqueue_style( 'ozd-bilgi' );

Bu satır kısa kod callback fonksiyonunun başına eklenebilir. Böylece stil dosyası sitenin her sayfasında değil, kısa kodun işlendiği istekte yüklenir.

Kısa Kod İçin JavaScript Dosyası Nasıl Yüklenir?

Kısa kod açılır panel, sekme, sayaç veya kullanıcı etkileşimi gerektiriyorsa bir JavaScript dosyasına ihtiyaç duyabilir. JavaScript kodunu HTML çıktısının içine yazmak yerine ayrı bir dosyada tutmak; bakım, önbellekleme ve güvenlik açısından daha uygundur.

function ozd_bilgi_dosyalarini_kaydet() {
    wp_register_script(
        'ozd-bilgi',
        plugin_dir_url( __FILE__ ) . 'assets/js/ozd-bilgi.js',
        array(),
        '1.0.0',
        true
    );
}

add_action( 'wp_enqueue_scripts', 'ozd_bilgi_dosyalarini_kaydet' );

Son parametredeki true değeri, betiğin uygun olduğunda sayfanın alt bölümünde yüklenmesini sağlar. Callback içinde aşağıdaki satır kullanılarak betik yalnızca kısa kodun işlendiği sayfalarda kuyruğa alınabilir:

Fonksiyonun güncel parametreleri ve yükleme davranışı WordPress’in wp_enqueue_script() belgesinden kontrol edilebilir.

wp_enqueue_script( 'ozd-bilgi' );

JavaScript ile açılıp kapanan bir bilgi alanı oluşturulacaksa yalnızca fare kullanımına göre tasarım yapılmamalıdır. Kontrol gerçek bir button öğesi olmalı; klavye ile çalışmalı, erişilebilir adı bulunmalı ve açık-kapalı durumunu aria-expanded ile bildirmelidir.

Kısa Kod Çıktısında Şablon Dosyası Kullanma

Kısa kodun HTML yapısı büyüdükçe bütün etiketleri art arda metin birleştirerek üretmek okunabilirliği azaltır. Karmaşık görünümlerde çıktı ayrı bir şablon dosyasına taşınabilir. Şablon ekrana doğrudan çıktı verdiği için output buffering kullanılabilir:

function ozd_katalog_kisa_kodu( $atts ) {
    $atts = shortcode_atts(
        array(
            'adet' => 6,
        ),
        $atts,
        'ozd_katalog'
    );

    $adet = absint( $atts['adet'] );

    if ( 1 > $adet ) {
        $adet = 6;
    }

    ob_start();

    include plugin_dir_path( __FILE__ ) . 'templates/katalog.php';

    return ob_get_clean();
}

ob_start() sonrasında şablonun ürettiği çıktı geçici bellekte tutulur. ob_get_clean() bu çıktıyı alarak kısa kod fonksiyonundan döndürür. Böylece callback fonksiyonu yine doğrudan echo ile sayfaya çıktı göndermemiş olur.

Şablona aktarılan değişkenler de güvenilir kabul edilmemelidir. HTML içinde kullanıldıkları noktada çıktı bağlamına göre güvenli hâle getirilmelidir. Şablon dosyasının doğrudan erişime karşı korunması ve dosya yolunun geliştirici tarafından belirlenmesi gerekir.

WordPress Editöründe Kısa Kod Nasıl Kullanılır?

Blok Düzenleyicide Kullanım

  1. Kısa kodu eklemek istediğiniz yazı veya sayfayı açın.
  2. Blok ekleme düğmesini kullanın.
  3. Kısa Kod bloğunu arayın ve içeriğe ekleyin.
  4. Kısa kodu bloğun alanına yazın.
  5. Yazıyı önizleyerek sonucu kontrol edin.

Klasik Düzenleyicide Kullanım

Kısa kodu içerikte görünmesini istediğiniz konuma doğrudan yazabilirsiniz. Büyük bir form, katalog veya kutu oluşturuyorsa kısa kodu ayrı bir satırda kullanmak biçimlendirme sorunlarını azaltabilir.

Tema Dosyasında Kullanım

Bir kısa kodun çıktısını PHP şablonunda kullanmanız gerekiyorsa do_shortcode() çağrılabilir:

<?php echo do_shortcode( '[ozd_bilgi]Tema içinden gösterilen bilgi.[/ozd_bilgi]' ); ?>

Ancak aynı işlevi doğrudan bir PHP fonksiyonuyla çağırmak mümkünse, tema dosyasında kısa kod ayrıştırmak yerine ilgili fonksiyonu kullanmak daha temiz ve verimli olabilir.

Kısa Kodlarda Performans Nasıl Korunur?

Kısa kodun kendisi sitenizi otomatik olarak yavaşlatmaz. Performansı belirleyen, callback fonksiyonunun yaptığı işlemlerdir. Basit bir HTML kutusu çok düşük maliyetlidir; fakat her sayfa görüntülemesinde büyük bir sorgu çalıştıran veya harici API’ye bağlanan kısa kod performans sorunu oluşturabilir.

Performansı korumak için şu noktalara dikkat edilmelidir:

  • Gereksiz veritabanı sorgularından kaçının.
  • Sorgularda gösterilecek kayıt sayısını sınırlandırın.
  • Harici API sonuçlarını uygun süreyle önbelleğe alın.
  • CSS ve JavaScript dosyalarını yalnızca gerektiğinde yükleyin.
  • Kısa kod callback fonksiyonunda veri kaydetme gibi yan etkili işlemler yapmayın.
  • Aynı sayfada tekrar edilen pahalı sonuçları geçici olarak önbelleğe alın.

Kısa kodun görevi öncelikle çıktı üretmektir. Form gönderme, ayar kaydetme veya veri silme gibi işlemler ayrı ve güvenli işlem akışlarıyla yönetilmelidir.

Yazıları Listeleyen Dinamik Kısa Kod Örneği

Kısa kodların yalnızca sabit HTML üretmediğini görmek için belirli sayıdaki son yazıyı listeleyen bir örnek hazırlayabiliriz. Bu örnek sayısal doğrulama, sorgu sınırlandırma, boş sonuç yönetimi ve sorgu verilerinin sıfırlanmasını birlikte gösterir.

function ozd_son_yazilar_kisa_kodu( $atts ) {
    $atts = shortcode_atts(
        array(
            'adet'     => 5,
            'kategori' => '',
        ),
        $atts,
        'ozd_son_yazilar'
    );

    $adet = absint( $atts['adet'] );

    if ( 1 > $adet ) {
        $adet = 5;
    }

    $adet = min( $adet, 20 );

    $sorgu_argumanlari = array(
        'post_type'              => 'post',
        'post_status'            => 'publish',
        'posts_per_page'         => $adet,
        'ignore_sticky_posts'    => true,
        'no_found_rows'          => true,
        'update_post_meta_cache' => false,
        'update_post_term_cache' => false,
    );

    $kategori = sanitize_title( $atts['kategori'] );

    if ( '' !== $kategori ) {
        $sorgu_argumanlari['category_name'] = $kategori;
    }

    $son_yazilar = new WP_Query( $sorgu_argumanlari );

    if ( ! $son_yazilar->have_posts() ) {
        return '<p>Gösterilecek yazı bulunamadı.</p>';
    }

    $cikti = '<ul class="ozd-son-yazilar">';

    while ( $son_yazilar->have_posts() ) {
        $son_yazilar->the_post();

        $cikti .= sprintf(
            '<li><a href="%1$s">%2$s</a></li>',
            esc_url( get_permalink() ),
            esc_html( get_the_title() )
        );
    }

    $cikti .= '</ul>';

    wp_reset_postdata();

    return $cikti;
}

add_shortcode( 'ozd_son_yazilar', 'ozd_son_yazilar_kisa_kodu' );

Bu kısa kod aşağıdaki şekilde kullanılabilir:

[ozd_son_yazilar adet="8" kategori="wordpress"]

absint() adet değerini negatif olmayan tam sayıya dönüştürür. Ardından min() ile kullanıcı 500 gibi yüksek bir değer girse bile sorgunun en fazla 20 yazı getirmesi sağlanır. no_found_rows, sayfalama toplamına ihtiyaç olmayan bu sorguda gereksiz sayım işlemini kapatır. Başlık ve bağlantı değerleri de çıktı bağlamına göre güvenli biçimde işlenir.

Sorgu tamamlandıktan sonra wp_reset_postdata() çağrılması önemlidir. Aksi takdirde kısa koddan sonra çalışan tema kodları ana yazı yerine sorgudaki son yazının verilerini kullanabilir. Bu hata başlık, bağlantı veya öne çıkarılan görselin beklenmedik biçimde değişmesine yol açabilir.

Kısa Kod Sonuçlarını Önbelleğe Alma

Kısa kod sık değişmeyen ancak oluşturulması maliyetli bir sonuç üretiyorsa WordPress Transients API ile geçici olarak önbelleğe alınabilir. Önbellek anahtarı, sonucu değiştiren öznitelikleri içermelidir:

$onbellek_anahtari = 'ozd_son_yazilar_' . md5(
    wp_json_encode(
        array(
            'adet'     => $adet,
            'kategori' => $kategori,
        )
    )
);

$cikti = get_transient( $onbellek_anahtari );

if ( false !== $cikti ) {
    return $cikti;
}

// Sorgu ve çıktı oluşturma işlemleri burada çalışır.

set_transient( $onbellek_anahtari, $cikti, HOUR_IN_SECONDS );

Önbellek süresi içeriğin ne sıklıkta değiştiğine göre belirlenmelidir. Yeni yazı yayımlandığında eski sonuçların hemen yenilenmesi gerekiyorsa ilgili transient kayıtları yayınlama kancasında temizlenebilir. Her kısa kod için önbellek kullanmak gerekli değildir; basit işlemlerde önbellek yönetiminin maliyeti sağladığı kazançtan daha büyük olabilir.

Kısa Kod İçinde Form Kullanılacaksa Nelere Dikkat Edilmelidir?

Kısa kodla form göstermek mümkündür; ancak formu göstermek ile gönderilen veriyi işlemek farklı sorumluluklardır. Callback fonksiyonu formun güvenli HTML çıktısını döndürebilir. Form gönderme işlemi ise ayrı bir işleyicide yürütülmelidir.

Form geliştirilirken şu kontroller yapılmalıdır:

  • İşlemin aynı siteden geldiğini doğrulamak için nonce kullanılmalıdır.
  • Yönetim yetkisi gerektiren işlemlerde kullanıcı yetkisi kontrol edilmelidir.
  • Her alan beklenen veri türüne göre temizlenmeli ve doğrulanmalıdır.
  • Veritabanına kayıt, e-posta gönderme ve yönlendirme işlemleri callback çıktısından ayrılmalıdır.
  • Başarı ve hata mesajları yalnızca renkle anlatılmamalı, anlaşılır metin içermelidir.
  • Form alanlarının görünür ve programatik etiketleri bulunmalıdır.

Nonce kullanımı, kısa kod özniteliklerinin temizlenmesinin alternatifi değildir. Nonce isteğin kaynağını doğrulamaya yardımcı olur; kullanıcının yetkili olduğunu veya gönderilen verinin güvenli olduğunu tek başına kanıtlamaz.

WordPress Kısa Kod Çalışmıyorsa Neler Kontrol Edilmelidir?

Kısa Kod Ekranda Olduğu Gibi Görünüyor

WordPress etiketi tanımıyorsa kısa kod ham metin olarak görünür. Eklentinin etkin olup olmadığını, add_shortcode() satırının çalışıp çalışmadığını ve etiketi doğru yazıp yazmadığınızı kontrol edin.

Kısa Kod Hiçbir Şey Göstermiyor

Callback fonksiyonunun değer döndürdüğünden emin olun. return unutulmuşsa veya koşulların hiçbirinde çıktı döndürülmüyorsa sayfada sonuç görünmez.

Çıktı Yanlış Yerde Görünüyor

Fonksiyon içinde echo kullanılıp kullanılmadığını kontrol edin. Kısa kod çıktısı return ile döndürülmelidir.

Parametreler Çalışmıyor

Öznitelik adlarının küçük harfe dönüştürüldüğünü unutmayın. shortcode_atts() içindeki adlarla kullanım sırasında yazılan adların aynı olduğundan emin olun.

Kodu Ekledikten Sonra Kritik Hata Oluştu

Eksik noktalı virgül, kapanmayan parantez veya yinelenen fonksiyon adı PHP hatasına neden olabilir. Değişiklikleri önce yerel ya da test ortamında uygulayın ve düzenleme öncesinde yedek alın. Canlı sitede ana tema dosyasını doğrudan değiştirmekten kaçının.

Tema Değiştirildikten Sonra Kısa Kod Bozuldu

Kısa kod eski temanın functions.php dosyasında tanımlanmış olabilir. Temadan bağımsız işlevleri özel bir eklentiye taşıyarak bu sorunun yeniden oluşmasını önleyebilirsiniz.

Kısa Kod Geliştirirken Yapılan Yaygın Hatalar

  • Callback fonksiyonunda return yerine echo kullanmak
  • bilgi veya form gibi çakışmaya açık genel etiketler seçmek
  • Kullanıcıdan gelen değerleri doğrudan HTML çıktısına eklemek
  • shortcode_atts() kullanımını güvenlik kontrolü sanmak
  • Temadan bağımsız işlevi ana temanın functions.php dosyasına bağlamak
  • Her kısa kod çağrısında ağır sorgular çalıştırmak
  • CSS ve JavaScript dosyalarını gereksiz yere bütün sayfalarda yüklemek
  • Aynı adlı kısa kodu kendi içinde kullanmak
  • Sabit HTML kimliklerini aynı sayfada tekrar etmek
  • Kısa kod kaldırıldığında içerikte kalacak etiketleri hesaba katmamak

Kısa Kodun Var Olup Olmadığını Kontrol Etme

Başka bir tema veya eklenti tarafından sağlanan kısa kodu çalıştırmadan önce kayıtlı olup olmadığını denetlemek için shortcode_exists() kullanılabilir:

if ( shortcode_exists( 'ozd_bilgi' ) ) {
    $cikti = do_shortcode( '[ozd_bilgi]Örnek içerik[/ozd_bilgi]' );
}

Bu kontrol özellikle başka bir eklentiye bağlı entegrasyonlarda yararlıdır. Bağımlı olunan eklenti kapalıysa tanımsız kısa kodu çalıştırmaya uğraşmak yerine açıklayıcı bir yedek çıktı gösterilebilir.

Kayıtlı Bir Kısa Kodu Kaldırma veya Değiştirme

WordPress, kayıtlı kısa kodları kaldırmak için remove_shortcode() fonksiyonunu sunar:

remove_shortcode( 'ozd_bilgi' );

Bir eklentinin kısa kodunu kendi callback fonksiyonunuzla değiştirmek teknik olarak mümkündür. Bunun için önce mevcut kayıt kaldırılır, ardından aynı etiket yeniden kaydedilir. Ancak bu yaklaşım güncellemelerde uyumluluk sorunlarına neden olabilir. Değiştirme işlemi uygulanmadan önce eklentinin sunduğu filtreler, kancalar ve şablon özelleştirme yöntemleri araştırılmalıdır.

Kayıt sırası da önemlidir. Henüz kaydedilmemiş bir kısa kodu kaldırmaya çalışırsanız işlem sonuç vermez. Bu nedenle kaldırma işlemi, özgün kısa kodun kaydedildiği kancadan daha geç bir öncelikte çalıştırılmalıdır.

Kısa Kodlarda Çeviriye Hazır Metin Kullanımı

Dağıtılacak bir eklenti geliştiriyorsanız ziyaretçiye gösterilen sabit metinler doğrudan kodun içine çevrilemez biçimde yazılmamalıdır. Metin alanı kullanılarak çeviri fonksiyonlarından geçirilmelidir:

$varsayilan_baslik = __( 'Bilgi', 'ozd-bilgi-kisa-kodu' );
$bos_sonuc_mesaji  = __( 'Gösterilecek içerik bulunamadı.', 'ozd-bilgi-kisa-kodu' );

Metin doğrudan ekrana döndürülecekse çeviri ile çıktı güvenliğini birlikte sağlayan, bağlama uygun fonksiyonlar kullanılabilir:

return '<p>' . esc_html__( 'Gösterilecek içerik bulunamadı.', 'ozd-bilgi-kisa-kodu' ) . '</p>';

Kısa kod etiketinin kendisini çevirmek doğru değildir. İçerikte kayıtlı etiketler dil değiştiğinde bozulmamalıdır. Çevrilecek olan, kısa kodun ziyaretçiye sunduğu başlıklar, açıklamalar ve hata mesajlarıdır.

Kısa Kod Devre Dışı Bırakıldığında İçerik Nasıl Korunur?

Kısa kodların en önemli uzun vadeli sorunlarından biri bağımlılık oluşturmasıdır. Bir eklenti kaldırıldığında, ona ait etiketler onlarca yazıda ham metin olarak kalabilir. Buna shortcode lock-in adı verilen bağımlılık problemi denebilir.

Bu riski azaltmak için:

  • Kısa kod yalnızca sunum amacıyla kullanılıyorsa mümkün olduğunca anlamlı iç içerik taşımalıdır.
  • Temel metin kısa kod özniteliğinde değil, açılış ve kapanış etiketleri arasında tutulabilir.
  • Eklenti kaldırılmadan önce kısa kodun kullanıldığı içerikler tespit edilmelidir.
  • Toplu dönüştürme yapılacaksa önce veritabanı yedeği alınmalıdır.
  • Eklentinin kaldırma işlemi kullanıcı içeriklerini kendiliğinden silmemelidir.

Örneğin yalnızca [ozd_bilgi id="45"] biçiminde kullanılan bir kısa kod, eklenti kapatıldığında okuyucuya hiçbir anlamlı içerik bırakmaz. Buna karşılık açıklamanın iki etiket arasında yer aldığı kullanımda asıl metin veritabanında korunur. Kısa kod yine ham olarak görünür; fakat içerik geri kazanılabilir durumda kalır.

Kısa Kod Kullanımlarını Veritabanında Bulma

Bir kısa kodu değiştirmeden veya kaldırmadan önce hangi yazılarda kullanıldığını belirlemek gerekir. Yönetim aramasında kısa kod etiketini aramak bazı durumlarda yeterli olabilir. Geliştirici düzeyinde ise WP-CLI search-replace komutu veya dikkatli bir veritabanı sorgusu kullanılabilir.

wp search-replace '[eski_kisa_kod' '[yeni_kisa_kod' wp_posts --include-columns=post_content --dry-run

--dry-run seçeneği gerçek değişiklik yapmadan hangi kayıtların etkileneceğini gösterir. Sonuç doğrulandıktan ve yedek alındıktan sonra gerçek değiştirme işlemi planlanabilir. Kısa kod öznitelikleri karmaşıksa basit metin değiştirme yeterli olmayabilir; önce içerik yapısı dikkatle incelenmelidir.

Kısa Kod Test Kontrol Listesi

Bir kısa kodu canlı sitede kullanmadan önce yalnızca normal senaryoyu denemek yeterli değildir. Aşağıdaki kontroller yapılmalıdır:

  1. Kısa kod hiçbir öznitelik verilmeden çalışıyor mu?
  2. Geçerli öznitelikler beklenen sonucu üretiyor mu?
  3. Desteklenmeyen bir tür girildiğinde güvenli varsayılan değere dönüyor mu?
  4. Boş içerik gönderildiğinde HTML yapısı bozuluyor mu?
  5. Başlıkta tırnak, büyüktür-küçüktür işareti veya özel karakter varsa güvenli gösteriliyor mu?
  6. Aynı sayfada kısa kod birden fazla kullanıldığında kimlikler benzersiz mi?
  7. Mobil görünümde taşma veya okunabilirlik sorunu oluşuyor mu?
  8. Klavye ile kullanılabilen kontroller doğru sırada odaklanıyor mu?
  9. Ekran okuyucu başlık ve durum değişikliklerini anlamlı biçimde duyuruyor mu?
  10. Kısa kod yönetim ekranında veya editör önizlemesinde kritik hata üretiyor mu?
  11. Tema değiştirildiğinde işlev çalışmaya devam ediyor mu?
  12. Eklenti kapatıldığında içerikte ne kaldığı biliniyor mu?
  13. Önbellek etkin ve kapalı durumlarda aynı sonuç alınıyor mu?
  14. Hata ayıklama kayıtlarında uyarı veya deprecated bildirimi oluşuyor mu?

Kısa Kodlarda Hata Ayıklama

Canlı sitede ziyaretçilere PHP hatası göstermek yerine WordPress hata ayıklama kaydı kullanılmalıdır. Sistemin çalışma biçimi ve temel ayarları hakkında daha fazla bilgi için WordPress debug modu rehberini inceleyebilirsiniz. Test ortamında wp-config.php dosyasındaki geliştirme ayarları kontrollü biçimde etkinleştirilebilir:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Bu yapı, hataları ziyaretçiye göstermeden hata kaydına yazmaya yardımcı olur. Test bittikten sonra canlı ortamın güvenlik ve kayıt politikasına uygun ayarlar kullanılmalıdır.

Kısa kodun callback fonksiyonuna ulaşıp ulaşmadığını anlamak için geçici kayıtlar oluşturulabilir. Ancak kişisel veriler, parolalar, nonce değerleri veya hassas öznitelikler hata kaydına yazılmamalıdır. Sorun çözüldüğünde geçici kayıt kodları kaldırılmalıdır.

Nesne Yönelimli Yapıda Kısa Kod Kaydetme

Daha büyük eklentilerde kısa kod mantığı bir sınıf içinde tutulabilir. Bu yaklaşım tek bir basit kısa kod için zorunlu değildir; ancak çok sayıda ilişkili fonksiyonun düzenlenmesine yardımcı olur:

class OZD_Bilgi_Kisa_Kodu {
    public function kaydet() {
        add_shortcode( 'ozd_bilgi', array( $this, 'olustur' ) );
    }

    public function olustur( $atts, $content = null ) {
        $atts = shortcode_atts(
            array(
                'baslik' => __( 'Bilgi', 'ozd-bilgi-kisa-kodu' ),
            ),
            $atts,
            'ozd_bilgi'
        );

        $baslik = sanitize_text_field( $atts['baslik'] );
        $icerik = null !== $content ? wp_kses_post( $content ) : '';

        return sprintf(
            '<section class="ozd-bilgi"><h3>%1$s</h3><div>%2$s</div></section>',
            esc_html( $baslik ),
            $icerik
        );
    }
}

$ozd_bilgi = new OZD_Bilgi_Kisa_Kodu();
add_action( 'init', array( $ozd_bilgi, 'kaydet' ) );

Sınıf kullanmak kodu kendiliğinden daha güvenli veya daha hızlı yapmaz. Projenin büyüklüğüne uygun bir mimari seçmek gerekir. Yalnızca birkaç satırlık işlev için gereksiz katmanlar eklemek okunabilirliği azaltabilir.

Kısa Kodlar mı, Gutenberg Blokları mı?

Gutenberg blokları, görsel düzenleme ve daha anlaşılır bir kullanıcı deneyimi sunar. Kullanıcı ayarları doğrudan blok kenar çubuğundan değiştirebilir ve çoğu zaman sonucu editörde görebilir. Kısa kodlarda ise kullanıcı doğru etiketi ve öznitelikleri bilmek zorundadır.

Klasik kısa kod düzenleyicisi ile Gutenberg blok düzenleyicisinin karşılaştırması

Buna karşılık kısa kodlar daha küçük bir geliştirme maliyetiyle hazırlanabilir, klasik düzenleyicide kullanılabilir ve farklı içerik alanlarına kolayca yerleştirilebilir. Mevcut eklentilerle geriye dönük uyumluluk açısından da önemini korur.

Yeni ve yoğun biçimde görsel düzenleme gerektiren bir özellik geliştiriyorsanız blok oluşturmak daha doğru olabilir. Basit, metin tabanlı, geriye dönük uyumlu veya farklı alanlarda çağrılması gereken bir işlev için kısa kod hâlâ uygun bir çözümdür. Buradaki doğru soru, hangisinin daha yeni olduğu değil, kullanıcının içeriği nasıl yöneteceğidir.

Sık Sorulan Sorular

WordPress kısa kod oluşturmak için eklenti gerekir mi?

Hayır. PHP kodu yazarak kendi kısa kodunuzu oluşturabilirsiniz. Ancak kalıcı ve temadan bağımsız bir işlev geliştiriyorsanız kodun özel bir eklenti içinde tutulması daha sağlıklı olur.

Kısa kodu functions.php dosyasına eklemek güvenli midir?

Kod doğru yazılmışsa çalışabilir; fakat ana tema güncellendiğinde değişiklik kaybolabilir ve tema değiştirildiğinde kısa kod devre dışı kalır. Test amacı dışında child theme veya özel eklenti tercih edilmelidir.

Bir kısa kod içinde HTML kullanılabilir mi?

Evet. Callback fonksiyonu HTML çıktısı döndürebilir. Kullanıcıdan gelen değerler kullanılacaksa çıktı, kullanım bağlamına uygun WordPress escaping fonksiyonlarıyla güvenli hâle getirilmelidir.

Kısa kod içinde başka bir kısa kod kullanılabilir mi?

Evet. Kapsayıcı kısa kodun içeriği do_shortcode() ile işlendiğinde farklı kısa kodlar çalıştırılabilir. Ancak aynı adlı kısa kodu kendi içinde kullanmak ayrıştırma sınırlamaları nedeniyle önerilmez.

Kısa kod neden sayfada metin olarak görünüyor?

Kısa kodu tanımlayan tema veya eklenti etkin olmayabilir, etiket yanlış yazılmış olabilir ya da kayıt işlemi çalışmıyor olabilir. Bu durumlarda WordPress etiketi tanımadığı için metni olduğu gibi gösterir.

Kısa kod adı nasıl seçilmelidir?

Ad küçük harfli, açıklayıcı ve benzersiz olmalıdır. Başka eklentilerle çakışmayı önlemek için marka veya proje öneki kullanılmalıdır. Örneğin bilgi yerine ozd_bilgi daha uygun bir addır.

Kısa kod kullanmak SEO açısından zararlı mıdır?

Kısa kodun kendisi SEO açısından zararlı değildir. Arama motorları genellikle ziyaretçiye sunulan işlenmiş çıktıyı görür. Ancak kısa kod devre dışı kalırsa içerikte anlamsız etiketler görünebilir. Ayrıca yavaş çalışan veya erişilebilir olmayan bir çıktı kullanıcı deneyimini dolaylı olarak olumsuz etkileyebilir.

Kısa kodlar siteyi yavaşlatır mı?

Basit kısa kodların etkisi düşüktür. Performans sorunu kısa kod etiketinden değil, callback fonksiyonunda yapılan ağır sorgulardan, harici isteklerden ve gereksiz dosya yüklemelerinden kaynaklanır.

Sonuç

WordPress kısa kod sistemi, uzun veya tekrar eden işlevleri içerik editöründe kolayca kullanılabilen etiketlere dönüştürür. Basit bir kısa kod oluşturmak için callback fonksiyonu yazmak ve bu fonksiyonu add_shortcode() ile kaydetmek yeterlidir. Ancak sürdürülebilir bir çözüm için yalnızca çalışan kod yazmak yetmez.

Kısa kod adının benzersiz seçilmesi, callback çıktısının return ile döndürülmesi, özniteliklerin varsayılan değerlerle işlenmesi, kullanıcı girdilerinin doğrulanması ve çıktının bağlamına uygun fonksiyonlarla güvenli hâle getirilmesi gerekir. Temadan bağımsız işlevlerin özel bir eklenti içinde tutulması da tema değişikliklerinde kısa kodların bozulmasını önler.

Kısa kodlar Gutenberg bloklarının yerini bütünüyle tutmaz; Gutenberg blokları da kısa kodları her senaryoda gereksiz hâle getirmez. Doğru kullanıldığında kısa kodlar hâlâ WordPress’in en esnek ve kullanışlı geliştirme araçlarından biridir. Önemli olan, bu sistemi yalnızca kısa bir kod üretmek için değil; güvenli, erişilebilir, performanslı ve uzun süre yönetilebilir bir işlev oluşturmak için kullanmaktır.

Sadık Özdoğan

Sadık Özdoğan, 2015 yılından bu yana WordPress ve web teknolojileriyle ilgilenen bağımsız bir web geliştiricisi ve WordPress geliştiricisidir. WordPress tema ve eklenti geliştirme, SEO, web erişilebilirliği, performans optimizasyonu, teknik içerik üretimi ve dijital yayıncılık alanlarında çalışmalar yürütmektedir. Programlama Evi ve ImageFileX projelerinin kurucusudur.

Henüz oy verilmemiş. İlk oyu sen ver.

Bir yanıt yazın