WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Özel İşlevler Oluşturma

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

Neden WordPress eklentisi geliştirmeyi seçtiniz?

WordPress, dünyanın en popüler içerik yönetim sistemi olarak, güçlü genişletilebilirliğini özellikle eklentilere borçludur. Özel eklentiler geliştirerek, geliştiriciler web sitelerine ihtiyaç duydukları herhangi bir özelliği ekleyebilirler ve bunu yaparken çekirdek kodu değiştirmek zorunda kalmazlar; bu da web sitelerinin güncellenmesinin güvenliğini ve işlevlerinin bağımsızlığını sağlar. İster belirli iş ihtiyaçlarını karşılamak, iş akışlarını optimize etmek isterse de geniş WordPress ekosistemi içinde yeni ürünler yaratmak için olsun, eklenti geliştirme son derece değerli bir beceridir.

Doğrudan konuyu değiştirmekle karşılaştırıldığında…functions.phpDosyalara kıyasla, eklentiler işlevsel mantığı bağımsız modüller içinde kapsar. Bu, temayı değiştirdiğinizde bile eklentinin sağladığı özelliklerin sorunsuz bir şekilde çalışmaya devam edeceği anlamına gelir. Ayrıca, iyi yapılandırılmış bir eklenti farklı siteler arasında kolayca taşınabilir ve yeniden kullanılabilir; bu da geliştirme verimliliğini büyük ölçüde artırır.

İlk eklentinizi oluşturun.

Eklenti geliştirmeye başlamanın ilk adımı, bir eklentinin en temel yapısını anlamaktır. Tüm WordPress eklentileri şu adreste saklanır:/wp-content/plugins/Dizin içinde, her eklentinin kendine ait bir klasörü vardır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan İlk Eklentinizi Oluşturun

Bir eklenti ana dosyası oluşturun.

Eklentinin çekirdeği bir PHP ana dosyasıdır. Yeni bir klasör oluşturmanız gerekiyor, örneğin…my-first-pluginVe içinde klasörle aynı adı taşıyan bir PHP dosyası oluşturun:my-first-plugin.phpBu dosyanın başlık kısmındaki yorumlar çok önemlidir; çünkü WordPress’e eklentinin meta bilgilerini sağlarlar.

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:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Bu dosyayı kaydettikten sonra, WordPress arayüzünün “Eklentiler” sayfasında bunu görebilir ve etkinleştirebilirsiniz. Şu an herhangi bir özelliği olmasa da, yasal bir eklenti çerçevesi oluşturmayı başardınız.

Eklentiye temel özellikler ekleyin.

Eklentiyi aktive ettikten sonra, ona basit özellikler eklemeye başlayabiliriz. Yaygın bir başlangıç örneği, web sitesinin alt kısmına özelleştirilmiş bir metin satırı eklemektir. Bu, şu yöntemlerle yapılabilir:wp_footerBu işlem, bir “Eylem Kancası” (Action Hook) aracılığıyla gerçekleştirilir.

Eklentinin ana dosyasına aşağıdaki kodu ekleyin:

// 在网站页脚输出自定义信息
function my_first_plugin_footer_text() {
    echo '<p style="text-align: center;">İlk eklentim tarafından sağlanan desteği kullandığınız için teşekkür ederim!</p>';
}
add_action( 'wp_footer', 'my_first_plugin_footer_text' );

Burada, bir fonksiyon tanımladık.my_first_plugin_footer_text()Ardından kullanın.add_action()Fonksiyon, bunu monte eder.wp_footerKancaya takılmış durumda. WordPress, sayfa sonu bölümüne geldiğinde otomatik olarak fonksiyonumuzu çağırır ve önceden belirlenmiş HTML içeriğini görüntüler. Bu, WordPress’in “kancalar ve geri çağrılar” (hooks and callbacks) mekanizmasının temel kullanımını göstermektedir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan İlk İşlevsel Eklentinizi Oluşturun

Derinlemesine İnceleme: Hook’lar ve Filtreler

WordPress eklenti geliştirmenin temel felsefesi, “kancalar” (Hooks) üzerine kuruludur. Kancalar iki türe ayrılır: Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks). Bunları anlamak, başlangıç seviyesinden ustalığa geçmenin anahtarıdır.

Hareket kancalarını anlamak.

Eylem kancaları, WordPress’in belirli zaman noktalarında kendi kodunuzu eklemenize olanak tanır. Yukarıdaki örnekte de gösterildiği gibi…wp_footerBu, sayfa altı HTML’si oluşturulurken tetiklenir. Başka bir yaygın olarak kullanılan eylem kancası ise…initWordPress temel yüklemesini tamamladıktan ve istekleri işlemeden önce çalışır; genellikle eklentilerin ayarlarını başlatmak, özel makale türlerini kaydetmek gibi işlemler için kullanılır.

// 在初始化时执行一些操作
function my_plugin_init_action() {
    // 例如,在这里可以注册一个自定义文章类型
    // if ( ! post_type_exists( 'book' ) ) { ... }
}
add_action( 'init', '_plugin_init_action' );

Filtre kancalarını (filter hooks) öğrenmek.

Eylem kancalarının aksine, filtre kancaları verileri değiştirmek için kullanılır. Bir değer alır, bu değeri değiştirmenize izin verir ve ardından işlenmiş değeri döndürür. Tipik bir örnek…the_contentFiltre, makalelerin veya sayfaların ana içeriğini değiştirmenize olanak tanır.

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
// 在文章内容末尾自动添加一段提示文字
function my_plugin_content_filter( $content ) {
    if ( is_single() ) {
        $extra_text = '<div class="my-plugin-note">Bu metnin içeriği, benim eklentim tarafından filtrelenerek oluşturulmuştur.</div>';
        $content .= $extra_text;
    }
    return $content;
}
add_filter( 'the_content', 'my_plugin_content_filter' );

Bu örnekte, fonksiyon…my_plugin_content_filter()Orijinalini alın.$contentÖnce sayfanın tek bir makale sayfası olup olmadığını kontrol edin; ardından bunun ardına bir HTML parçası ekleyin. Son olarak, değiştirilmiş içeriği geri gönderin. WordPress, bu geri gönderilen değeri orijinal içeriğin yerine kullanarak sayfayı görüntüleyecektir.

Konfigüre edilebilir bir eklenti oluşturma

Profesyonel bir eklenti genellikle, kullanıcıların ayarlamalar yapmasına olanak tanıyan bir yönetim arayüzü sağlamalıdır. Bu, WordPress arayüzünde ayar sayfaları oluşturmayı, form verilerini işlemeyi ve bu verileri güvenli bir şekilde saklamayı içerir.

Yönetim menüsü ve sayfaları oluşturun.

Kullanın.add_menu_page()add_options_page()Bu fonksiyon, eklentiniz için arka planda bir menü öğesi ve ayar sayfası ekleyebilir. Bu genellikle…admin_menuEylem, eylem kancaları (action hooks) aracılığıyla tamamlandı.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan Başlayarak Özelleştirilmiş İşlevler Oluşturma

// 添加插件管理菜单
function my_plugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'my-plugin-settings',   // 菜单slug
        'my_plugin_settings_page' // 显示页面的回调函数
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

// 设置页面的HTML内容
function my_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Eklenti ayarlarım.</h1>
        <form method="post" action="/tr/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_plugin_settings_group' );
            do_settings_sections( 'my-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Kayıt Ayarları, Alanlar ve Güvenlik İşlemleri

Daha sonra, WordPress Ayarları API’sini kullanarak ayarları ve alanları kaydetmeniz ve veri kaydını işlemeniz gerekecek. Bu işlem, veri doğrulaması, yetki kontrolü ve verilerin güvenli bir şekilde serileştirilerek saklanmasını sağlar.

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个新的设置项到“my_plugin_settings_group”
    register_setting( 'my_plugin_settings_group', 'my_plugin_options' );

// 在设置页面添加一个区域
    add_settings_section(
        'my_plugin_section_id',
        '基础配置',
        null,
        'my-plugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'my_plugin_text_field',
        '提示文本',
        'my_plugin_text_field_render',
        'my-plugin-settings',
        'my_plugin_section_id'
    );
}
add_action( 'admin_init', 'my_plugin_settings_init' );

// 渲染文本框字段
function my_plugin_text_field_render() {
    $options = get_option( 'my_plugin_options' );
    ?&gt;
    <input type='text' name='my_plugin_options[text_field]' value='<?php echo esc_attr( $options['text_field'] ?? '' ); ?>'>
    <p class="description">Buraya girilen metin, web sitesinin ön yüzünde ( frontend) görüntülenecektir.</p>
    &lt;?php
}

Bu yöntemle, kullanıcıların ön tarafta girdiği veriler WordPress’in yerleşik güvenlik işlemlerinden (non-cescape kodlaması, doğrulama vb.) geçtikten sonra bir dizi (array) şeklinde saklanır.wp_optionsTabloda. Eklenti kodunuz buradan kullanılabilir.get_option( ‘my_plugin_options’ )Bu değerleri güvenli bir şekilde elde edin.

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.

En iyi uygulamalara uyarak ve yayın hazırlıklarını tamamlayarak…

Yüksek kaliteli, bakımı kolay ve güvenli bir eklenti geliştirmek için bir dizi en iyi uygulamaya uyulması gerekmektedir.

Kod Düzeni ve Güvenliği

Kullanıcıların girdiğine asla güvenmeyin. Tüm girdileri şüpheyle değerlendirin.$_GET$_POSTAlınan veriler veya veritabanından okunup çıktı için hazırlanan veriler, WordPress tarafından sağlanan fonksiyonlar kullanılarak dönüştürülür veya doğrulanır.esc_html()esc_attr()sanitize_text_field()wp_kses()Vb. Kullanın.wp_enqueue_script()wp_enqueue_style()Scriptleri ve stilleri doğru bir şekilde yüklemek, bağımlılıkları ve sürüm kontrolünü yönetmek önemlidir. Karmaşık eklentiler için, kodu organize etmek ve işlevleri sınıflar içinde kapsüllemek amacıyla nesne yönelimli programlama (OOP) kullanmayı düşünebilirsiniz. Bu sayede kodun modülerliği ve yeniden kullanılabilirliği artırılabilir.

Uluslararasılaştırma ve Yerelleştirme

Eklentinizin tüm dünyadaki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n – Internationalization) şarttır. Bu, çeşitli dil seçeneklerini desteklemeniz gerektiği anlamına gelir.__()_e()Bu fonksiyonlar, kullanıcıya yönelik tüm metinleri (stringleri) kapsar. Bunlar, eklentinin baş kısmındaki yorumlarda tanımlanmıştır.Text Domain(Örneğin)my-first-pluginBurada kullanılan metin alanıyla uyumlu olmalıdır.

// 错误示例
echo “Settings Saved”;

// 正确示例
echo esc_html__( 'Settings Saved', 'my-first-plugin' );

Daha sonra, Poedit gibi bir araç kullanarak bu metin parçalarını çıkarıp bir dosya oluşturabilirsiniz..potŞablon dosyası; çevirmenler bu dosyaya dayanarak farklı dillerde (örneğin…) içerikler oluşturabilirler.zh_CN.poBu metinlerin çeviri dosyalarını hazırlamak için lütfen bana ilgili metinleri sağlayın. Metinlerin içeriğine göre, çeviri işlemini gerçekleştirebilirim..moDerlenmiş dosyalar, eklenti dizininin içinde bulunmaktadır./languages/Klasörün içinde bulunan dosyalar sayesinde, WordPress site diline göre otomatik olarak ilgili çevirileri yükler.

Resmi kataloga yayınlamak için hazırlanıyor.

Eğer eklentiyi WordPress.org’un resmi eklenti kataloğuna göndermeyi planlıyorsanız, kodunuzun belirli standartlara uygun olduğundan emin olmanız gerekiyor. Bu, ayrıntılı bir dokümantasyon oluşturmayı da içerir.readme.txtDosya, eklentiyi, ekran görüntülerini, kurulum adımlarını, sık sorulan soruları (FAQ) ve güncelleme kayıtlarını belirli bir formatta içermektedir. Dosya, GPL lisansı kapsamında yayınlanmaktadır ve kodlar resmi Subversion (SVN) deposu aracılığıyla gönderilmektedir. Yayınlamadan önce, eklentinizin farklı sürümlerdeki WordPress, PHP, popüler temalar ve diğer eklentilerle uyumluluğunu kapsamlı bir şekilde test edin.

Özetle.

WordPress eklenti geliştirme, basit işlevlerin paketlenmesinden karmaşık uygulamaların oluşturulmasına kadar ilerleyen bir süreçtir. Bu süreç, doğru başlık yorumlarını içeren bir PHP dosyasıyla başlar ve temelinde, WordPress çekirdeğiyle etkileşim kurmak için eylem kancaları (action hooks) ve filtre kancaları (filter hooks)ın ustaca kullanılması yatar. Ayarlar API’si (Settings API) aracılığıyla arka plan yönetim arayüzleri oluşturularak eklentilerin kullanıcı dostu hale getirilmesi mümkündür. Güvenlik en iyi uygulamalarına uyulması, uluslararasılaştırma (internationalization) işlemlerinin yapılması ve kodun düzenli bir şekilde organize edilmesi ise profesyonel seviyede eklentiler geliştirmenin temel taşlarıdır. İster kişisel projelerinizin ihtiyaçlarını karşılamak için isterse açık kaynak topluluklarına katkıda bulunmak istiyorsanız, bu geliştirme sürecini öğrenmek size güçlü özelleştirme yeteneklerine ulaşmanın kapısını açacaktır.

Sıkça Sorulan Sorular.

Bir eklenti geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?

Temel PHP programlama bilgisine sahip olmanız gerekmektedir; HTML ve CSS’yi bilmeli ve WordPress’in temel işlemleri ile kavramlarına (makaleler, sayfalar, eklentiler vb.) aşina olmalısınız. MySQL veritabanının temel kavramlarına aşina olmanız da faydalı olacaktır, ancak bu zorunlu değildir, çünkü WordPress kolay veritabanı işlemleri için gerekli fonksiyonları sağlamaktadır.WP_QuerywpdbSınıf (Class).

Eklentilerin (plugins) ve temaların (themes) functions.php dosyaları arasındaki temel farklar nelerdir?

Kodu konunun içine koyun.functions.phpDosyada, özelliklerin hızlı bir şekilde eklenebilmesi için bir yöntem bulunmaktadır; ancak bu özellikler belirli bir temaya bağlıdır. Temayı değiştirdiğinizde, bu özellikler de kaybolur. Eklentiler ise temadan bağımsız modüllerdir ve hangi tema kullanılırsa kullanılsın, eklenti etkinleştirildiği sürece özellikleri devam eder. Uzun vadede kullanılması planlanan veya birden fazla sitede tekrar kullanılması gereken özellikler için, bunları eklenti olarak geliştirmek daha iyi bir seçenektir.

Eklenti kodumu nasıl hata ayıklarım?

WordPress, çeşitli hata ayıklama araçları sunar. Öncelikle,wp-config.phpDosyada etkinleştirildi.WP_DEBUG“Mod”, “Mode”…define( 'WP_DEBUG', true );Bu, tüm PHP hatalarını, uyarılarını ve bildirimlerini ekranda gösterecektir. Daha güvenli bir yöntem, her ikisini de aynı anda ayarlamaktır.WP_DEBUG_LOGtrueHataları kaydedin./wp-content/debug.logDosyada. Ayrıca, kullanın.error_log()Query Monitor gibi profesyonel hata ayıklama eklentilerini kullanmak, değişkenleri ve veritabanı sorgularını daha verimli bir şekilde izlemenizi sağlar.

Eklentim yüksek sürüm PHP ile nasıl uyumlu olabilir?

Eklentinin gelecekteki PHP sürümlerinde de sorunsuz bir şekilde çalışmasını sağlamak için, artık kullanılmayan veya kaldırılan fonksiyonlardan ve sözdizimlerinden kaçınmalısınız. Yerel geliştirme ortamınızda, gelecekteki hedef sürümlerle (örneğin PHP 8.x) uyumlu bir ortam kullanarak testler yapın. WordPress ve PHP’nin resmi güncelleme duyurularını sürekli olarak takip edin ve eklentinin güncelleme kayıtlarında desteklenen PHP sürüm aralığını belirtin; bu, kullanıcıların uygun geliştirme ortamını seçmelerine yardımcı olacaktır.