WordPress eklenti geliştirme: Temel tekniklerden ileri düzeye kadar kapsamlı bir rehber.

2 dakika okuma.
2026-03-16
2026-06-03
2,146
Aşağıdaki bağlantılar üzerinden alışveriş yaptığınızda, sizin için ek bir maliyet olmadan komisyon kazanıyorum.

WordPress Eklenti Geliştirme Temelleri ve Ortam Kurulumu

WordPress eklentileri, WordPress’in temel işlevlerini genişleten bağımsız kod paketleridir. Geliştirmeye başlamak için öncelikle profesyonel bir yerel geliştirme ortamı oluşturmanız gerekir. Bu genellikle, bir yerel sunucu yazılımı (örneğin XAMPP, MAMP veya Local by Flywheel), bir kod editörü (örneğin VS Code veya PhpStorm) ve test amacıyla kullanılacak bir WordPress kurulumunu içerir. Yerel ortam kullanmak, çevrimiçi bir web sitesinde yapılan deneysel geliştirmelerin beraberinde getirebileceği riskleri önler.

Hazırlıklar tamamlandıktan sonra, ilk eklentiyi oluşturmak çok basittir. Sadece WordPress’te gerekli adımları izlemeniz yeterlidir.wp-content/pluginsDizin içinde yeni bir klasör oluşturun, örneğin…my-first-pluginDaha sonra bu klasör içinde bir ana PHP dosyası oluşturun; dosya adı genellikle klasör adıyla aynı olur. Bu ana dosyanın başında, WordPress’in eklentileri tanımasında kilit rol oynayan standart eklenti başlık yorumları bulunmalıdır.

Eklenti ana dosyasının zorunlu yapısı

Eklentinin ana dosyası, eklentinin giriş noktasıdır ve üst kısmındaki yorum bloğu bir dizi meta veriyi içerir.Plugin NameBu, zorunlu olan tek alandır ve WordPress arka planındaki eklentiler listesinde görüntülenecektir. En temel bir eklenti, herhangi bir gerçek çalışan kod içermeyen yalnızca bu başlık bilgisini içerebilir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Pratik Bir Eğitim Kitabı

Aşağıda, en basit bir eklenti (plugin) dosyasının örnek kodu bulunmaktadır:

UltaHost WordPress Sunucusu
30 gün iade garantisi, sınırsız bant genişliği ve veritabanı kullanımı, ücretsiz DDoS koruması; 3 yıllık abonelikte indirim (50%).
<?php
/**
 * Plugin Name: 我的第一个插件
 * Description: 这是一个用于学习的简单WordPress插件。
 * Version: 1.0.0
 * Author: 你的名字
 * License: GPL v2 or later
 * Text Domain: my-first-plugin
 */

Yukarıdaki kodu kaydettikten sonra, WordPress arayüzünün “Eklentiler” sayfasına giriş yapın. Orada bu yeni eklentiyi görecek ve etkinleştirebileceksiniz. Şu an için herhangi bir işlev gerçekleştirmese de, bu geliştirme sürecinin resmi olarak başladığını göstermektedir.

Çekirdek Mekanizma: Eylem Hook’ları ve Filtreler

WordPress eklenti geliştirmenin temel felsefesi “Kancalar” (Hooks)dır; bu sayede kodunuz belirli anlarda veya belirli veriler için WordPress’in temel işleyiş sürecine entegre edilebilir. Kancalar esas olarak iki kategoriye ayrılır: Eylemler (Actions) ve Filtreler (Filters).

Eylem kancaları, belirli bir olay meydana geldiğinde özel fonksiyonunuzu çalıştırır; örneğin bir makale yayınlandığında veya sayfa başlığına betik yüklendiğinde gibi. Bunlar “bir şey yapmak” için kullanılır.add_action()Bu fonksiyon, kendi fonksiyonunuzu belirtilen eylem kancasına (action hook) bağlayabilir.

Eylem kancalarını kullanarak işlevler ekleyin.

Örneğin, web sitenizin alt kısmına özel bir metin eklemek istiyorsanız, bunu yapmak için bazı yöntemler kullanabilirsiniz.wp_footerBu eylem hook’u için öncelikle ana eklenti dosyanızda özel bir fonksiyon yazmanız gerekiyor, ardından bunu kullanabilirsiniz.add_action()Bunu bir kancaya bağlayın.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Becerilerini Kazanın: Sıfırdan Başlayarak İlk Özel Eklentinizi Oluşturun

Aşağıda bir uygulama örneği bulunmaktadır:

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Bu web sitesini kullandığınız için teşekkür ederiz!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

WordPress çalıştırıldığında…wp_footerKancayı taktığınızda, otomatik olarak çağrılır.myplugin_add_footer_text()Function: Çıkardığınız metni yazdırın.

Verileri filtre kancaları kullanarak değiştirme

Filtre hook’ları, verileri değiştirmek için kullanılır. Veriler kullanılmadan önce (örneğin veritabanına kaydedilmeden veya tarayıcıya gönderilmeden önce) onlarla işlem yapılır. Bunlar, “bir şeyi değiştirmek” amacıyla kullanılır.add_filter()Fonksiyonlar, filtrelerin uygulanmasında kullanılır. Örneğin, tüm makale başlıklarını değiştirmek istiyorsanız, bunların görüntülenmeden önce önüne bir önek ekleyebilirsiniz.

hosting.com Paylaşımlı Barındırma
AMD EPYC CPU'lar, NVMe SSD depolama ve LiteSpeed ile yüksek performans, 7/24, 7x7 uzman şirket içi destek, SSL, kaba kuvvet, kötü amaçlı yazılım ve DDoS koruması dahil gelişmiş güvenlik önlemleri, 73%'ye kadar tasarruf

Aşağıdaki kod, tüm makale başlıklarına “[Tavsiye Edilir]” ön ekini nasıl ekleyeceğinizi göstermektedir:

function myplugin_modify_title( $title ) {
    if ( is_single() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Eklenti arka plan yönetim sayfası oluşturun.

Birçok eklenti, kullanıcılara yapılandırma seçenekleri sunmayı gerektirir; bu da WordPress arayüzünün arka planında yönetim menüleri ve ayar sayfaları oluşturulmasını gerektirir. WordPress, üst düzey menüler veya alt menü öğeleri eklemek için bir dizi fonksiyon sağlar.

Üst düzey yönetim menüsü ekleyin.

Kullanabilirsiniz.add_menu_page()Bu fonksiyon, eklentiniz için bağımsız bir arka plan menüsü oluşturur. Bu fonksiyonun, sayfa başlığı, menü başlığı, kullanıcı yetkileri, menü takma adı, sayfa içeriğini oluşturan geri çağırma fonksiyonu gibi birçok parametreye ihtiyacı vardır.

Tavsiye edilen okuma Sıfırdan başlayarak WordPress eklenti geliştirmeyi öğrenmenize yardımcı olacak adım adım bir rehber.

Burada, geri çağırma fonksiyonu (callback function).myplugin_settings_page_htmlHTML içeriğini çıkış ayar sayfası için oluşturmaktan sorumludur.

Menü eklemek için kullanılan kod genellikle belirli bir yere eklenmelidir.admin_menuBu eylem, yönetim arayüzü başlatıldığında gerçekleştirilmesini sağlamak için bir “kancaya” (hook) bağlanmıştır.

InterServer Paylaşımlı Barındırma
Paylaşımlı hosting aylık $2.50 USD, ilk ay $0.1 USD promosyon kodu tryinterserver, 461 bulut uygulaması komut dosyası, tek tıklamayla yükleme.

Oluşturma ayarları sayfası ve güvenlik formu

Ayarlar sayfasındaki geri çağırma fonksiyonunda, bir formu çıktı olarak göstermeniz ve formun gönderilmesini işlemeniz gerekir. WordPress, bu süreci kolaylaştırmak için bir ayar API’si sunar; bu API, seçeneklerin kaydedilmesini, saklanmasını ve görüntülenmesini güvenli bir şekilde gerçekleştirebilir. Ancak temel prensipleri anlamak için, önce form gönderimini manuel olarak işleyen basit bir örnek inceleyebiliriz.

Aşağıdaki kod, giriş kutuları içeren basit bir ayar sayfasının nasıl oluşturulacağını ve verilerin güvenli bir şekilde nasıl kaydedileceğini göstermektedir:

function myplugin_settings_page_html() {
    // 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    // 处理表单提交
    if ( isset( $_POST['myplugin_option'] ) ) {
        // 安全检查:验证随机数
        check_admin_referer( 'myplugin_save_settings' );
        // 清理并保存数据
        $option_value = sanitize_text_field( $_POST['myplugin_option'] );
        update_option( 'myplugin_custom_option', $option_value );
        echo '<div class="notice notice-success"><p>Ayarlar kaydedildi!</p></div>';
    }
    // 获取已保存的值
    $saved_value = get_option( 'myplugin_custom_option', '默认值' );
    ?&gt;
    <div class="wrap">
        <h1>Eklenti ayarlarım.</h1>
        <form method="post" action="">
            <?php wp_nonce_field( 'myplugin_save_settings' ); ?>
            <label for="myplugin_option">Seçenekler:</label>
            <input type="text" id="myplugin_option" name="myplugin_option" value="<?php echo esc_attr( $saved_value ); ?>" />
            <?php submit_button( '保存更改' ); ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

İleri Seviye Geliştirme ve Eklenti Yayınlama

Eklentilerin işlevleri karmaşıklaştıkça, iyi bir kod organizasyonu hayati önem kazanır. Nesne yönelimli programlama (OOP) yaklaşımını kullanmanız önerilir; böylece eklentinin işlevleri sınıflar içinde kapsüllenir. Bu, fonksiyon adı çakışmalarını önlemeye ve kod yapısını daha net, daha kolay bakım yapılabilir hale getirmeye yardımcı olur.

Eklentilerin uluslararasılaştırılması, dünyaya açılmanın anahtarıdır. Kullanın.__()_e()Bu fonksiyonlar, kullanıcıya yönelik tüm metinleri kapsar ve bunları belirli bir yolla ileterek...load_plugin_textdomain()Fonksiyon, çeviri dosyasını yükler. Eklentinin başlık kısmındaki yorumlarda bunu doğru bir şekilde ayarlayın.Text DomainBu da kesinlikle gereklidir.

Eklentinin yayınlanmasından önce yapılması gereken hazırlık işlemleri

Eklentiyi resmi kataloga göndermeden veya dağıtmadan önce kapsamlı bir test yapılması gerekmektedir. Bu, farklı PHP sürümleri, WordPress sürümleri ve çeşitli temalar ile eklentilerin kombinasyonları altında uyumluluk testlerini içerir. Kod, WordPress kodlama standartlarına uygun olmalı ve güvenlik önlemleri alınmalıdır; tüm kullanıcı girdileri doğrulanmalı, temizlenmeli ve escape işlemine tabi tutulmalıdır.

Eklenti için net bir kod yazın.README.txtDosyada, dosyanın işlevi, kurulum yöntemi, sık karşılaşılan sorunlar vb. bilgiler yer almalıdır. Son olarak, kodu bir ZIP dosyası olarak sıkıştırın ve bu dosyayı WordPress.org eklenti dizinine gönderin veya kendi web sitenizde dağıtın.

Özetle.

WordPress eklenti geliştirme, temel hook (düğüm) mekanizmalarını anlamaktan başlayarak, yönetim arayüzlerinin oluşturulmasına, kod yapısının düzenlenmesine ve sonunda güvenli bir şekilde eklentilerin yayınlanmasına kadar ilerleyen bir süreçtir. Action (eylem) ve Filter (filtre) hook’larının kullanımını öğrenmek temeldir; bunlar WordPress ile etkileşim kurmanın temel araçlarıdır. İster basit bir özellik ekleyin ister karmaşık bir ticari eklenti geliştirin, güvenli kodlama standartlarına uymak, kapsamlı testler yapmak ve uluslararasılaştırmayı göz önünde bulundurmak başarının anahtarıdır. Sürekli pratik yaparak, güçlü, stabil ve popüler WordPress eklentileri oluşturabilirsiniz.

Sıkça Sorulan Sorular.

Eklenti geliştirmeden önce PHP öğrenmek zorunda mıyım?

Evet, sağlam bir PHP temel bilgisine sahip olmak, WordPress eklenti geliştirmek için gereklidir. Çünkü WordPress’in kendisi ve çoğu eklentisi PHP ile yazılmıştır. Eklenti kodlarını etkili bir şekilde yazıp hata ayıklayabilmek için PHP’nin sözdizimini, fonksiyonlarını, değişkenlerini, dizilerini, nesne yönelimli programlamayı ve benzeri kavramları anlamanız gerekir.

Eklentimdeki fonksiyon adlarının diğer eklentilerle çakışmasını nasıl önleyebilirim?

Fonksiyon adı çakışmalarından kaçınmanın en iyi yolu, nesne yönelimli programlama kullanmaktır; tüm fonksiyonlarınızı bir sınıfın metotları içinde kapsayın. Eğer prosedürel programlama kullanıyorsanız, tüm fonksiyon adlarına benzersiz bir önek eklemelisiniz; bu önek genellikle eklentinizin adı veya kısaltmasıyla ilgili olmalıdır.myplugin_mp_Bu, isim çatışmalarının olasılığını büyük ölçüde azaltabilir.

Neden eklenti ayarlarımı kaydettikten sonra sayfayı yenilediğimde kayboluyor?

Bu genellikle, form gönderiminde kullanılan rastgele sayı doğrulamasının doğru bir şekilde işlenmemesinden kaynaklanır. Form verilerini kaydetmeden önce, mutlaka bu doğrulama işleminin yapılması gerekir.check_admin_referer()wp_verify_nonce()Rastgele sayıları doğrulamak için bir fonksiyon kullanılır; bu sayede isteklerin doğru kaynaktan geldiği teyit edilir ve çapraz sitelik istek sahteciliği (Cross-Site Request Forgery – XSS) saldırıları önlenir. Doğrulama başarısız olursa, WordPress verilerin kaydedilmesini engeller.

Eklentimdeki metnin diğer dillere çevrilmesini nasıl sağlayabilirim?

Plugin’deki tüm kullanıcıya yönelik metinleri uluslararasılaştırmalısınız. Bunun için uygun araçları kullanın.__()Fonksiyon, bir dizenin çevirisini alır veya kullanır._e()Fonksiyon doğrudan çıktı verir. Ayrıca, eklentinin başlatılması sırasında (örneğin, bir yere monte edilirken) da bu işlemin yapılması gerekmektedir.plugins_loaded(Köprü) çağrısıload_plugin_textdomain()Bu fonksiyon, ilgili dil dosyasını yüklemek için kullanılır. Poedit gibi araçlar, dil dosyalarını oluşturmanıza yardımcı olabilir..potŞablon dosyaları ve….po/.moÇeviri dosyası.