WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Özelleştirilmiş İşlevler Oluşturmak İçin Kapsamlı Bir Rehber

3 dakika okuma.
2026-03-14
2026-06-03
2,432
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 Ortamının Kurulması

Kod yazmaya başlamadan önce, stabil ve profesyonel bir geliştirme ortamı başarının ilk adımıdır. Bu, sadece kodlama verimliliğinizi artırmakla kalmaz, aynı zamanda eklentilerin farklı ortamlarda uyumluluğunu da sağlar. Temel gereklilik, yerel bir WordPress çalıştırma ortamı kurmaktır; XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları kullanabilirsiniz. Bu araçlar, PHP, MySQL ve Apache/Nginx sunucularını tek bir tıklamayla kolayca yapılandırmanıza yardımcı olur.

Bir sonraki adım, kod editörünün seçimidir. Herhangi bir metin editörüyle kod yazılabilir; ancak geliştirme için özel olarak tasarlanmış editörler veya entegre geliştirme ortamları (IDE’ler) kullanmak işleri çok daha kolay hale getirir. Visual Studio Code, PhpStorm veya Sublime Text gibi araçlar mükemmel seçeneklerdir. Bu editörler, kod vurgulama, akıllı ipuçları, hata ayıklama gibi özellikler sunar ve sözdizimi hatalarını önemli ölçüde azaltır.

Çok önemli bir uygulama, WordPress’in hata ayıklama modunun etkinleştirilmesidir. Bu sayede geliştirme sürecinde hataları, uyarıları ve bildirimleri gerçek zamanlı olarak görebilirsiniz; yerine boş bir sayfa ile karşılaşmazsınız. Bunun için web sitenizin ayarlarını değiştirmeniz gerekecektir.wp-config.phpYapılandırmalar dosyada gerçekleştirilir. Tanımı bulun.WP_DEBUG“Constant” satırı için, bunu şu şekilde ayarlayın:true

Tavsiye edilen okuma Başlangıçtan Uzmanlığa: WordPress Eklenti Geliştirme Kapsamlı Rehberi

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_DISPLAY', false ); // 不建议在页面上直接显示错误

Ayrıca, eklenti projeniz için bir sürüm kontrol sistemi (örneğin Git) deposu oluşturmak da en iyi uygulamalardan biridir. Bu, kod değişikliklerini takip etmenize, geri dönüş yapmanıza ve takım çalışmalarınızı kolaylaştırmanıza yardımcı olur.

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%).

Eklentinin temel yapısını anlamak.

En temel bir WordPress eklentisi yalnızca bir dosyadan oluşabilir; ancak sürdürülebilirlik ve netlik açısından genellikle yapılandırılmış bir katalog kullanırız. Eklentinin giriş dosyası zorunludur ve bu dosyanın adı, eklentinizin ana dosyasının adıyla aynıdır. Örneğin:my-awesome-plugin.phpBu dosyanın en üst kısmında, WordPress’in eklentinizi tanımasını sağlayan standart bir eklenti bilgi başlık yorumu bulunmalıdır.

<?php
/**
 * Plugin Name:       我的超棒插件
 * Plugin URI:        https://example.com/my-awesome-plugin
 * Description:       这是一个为WordPress添加定制化功能的插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-awesome-plugin
 * Domain Path:       /languages
 */

Bu başlık yorumunun ardından, eklentinin temel işlevlerini yazmaya başlayabilirsiniz. Basit eklentiler için tüm kod bu dosyada yazılabilir. Ancak karmaşık eklentiler için, kodu modüler hale getirip farklı alt klasörlere ayırmak daha mantıklı bir yaklaşımdır./includesÇekirdek sınıf kütüphanelerini ve fonksiyonları barındırmak için kullanılır./adminArka plan yönetim arayüzü için kullanılan kod./publicÖn uç mantığı için kullanılır./assetsJavaScript, CSS ve resim kaynaklarını saklamak için kullanılır.

Temel Kavramlar: Eylemler, Filtreler ve Kısa Kodlar

WordPress eklenti geliştirmenin temeli, olay tabanlı mimarisini anlamaktır; bu mimari esas olarak Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks) aracılığıyla gerçekleştirilir. Bunlar, WordPress eklentilerinin çekirdek ile etkileşim kurmasını sağlayan araçlardır.

Action Hook’ları Derinlemesine Anlama

Eylem kancaları (action hooks), WordPress’in belirli zaman noktalarında kendi kodunuzu “enjekte” etmenize olanak tanır. Belirli bir kancaya özel bir fonksiyon “bağlayabilir”siniz ve WordPress bu noktaya ulaştığında, sizin yazdığınız fonksiyon otomatik olarak çalıştırılır. Örneğin, bir e-posta gönderme işlemi sırasında kullanıcı bilgilerini işlemek için bir fonksiyon ekleyebilirsiniz.wp_headEylemler, web sayfasında yer almaktadır.<head>Bazı işlemler, çıktı hemen hazırlandığında tetiklenir.admin_menuEylem, arka plan yönetim menüsü oluşturulurken tetiklenir.

Tavsiye edilen okuma WordPress Eklenti Geliştirmeye Sıfırdan Başlayın: Gelişmiş Özelliklerin Uygulanması ve En İyi Uygulamalar Rehberi

Kullanın.add_action()Bu fonksiyon, kendi fonksiyonunuzu monte etmek için kullanılır. Temel sözdizimi şu şekildedir:add_action( $hook_name, $callback_function, $priority, $accepted_args );Aşağıda, makale sayfasının başlığının ardına özel bir metin parçası eklenen basit bir örnek bulunmaktadır.

function myplugin_add_subtitle( $title ) {
    if ( is_single() ) {
        $title .= ' - 欢迎阅读!';
    }
    return $title;
}
add_action( 'the_title', 'myplugin_add_subtitle' );

Filtre hook’larının kullanımını öğrenin.

Filtre kancaları, eylem kancalarına benzer; ancak amacı farklıdır: Verileri değiştirmek için kullanılırlar. WordPress, belirli bir veriyi (örneğin makale içeriği, başlık, özet) kullanmaya hazırlanırken, bu veri önce bir filtreden geçer. Eklentiniz bu veriyi “filtreleyebilir”, değiştirebilir ve ardından yeni değeri geri gönderebilir. Örneğin…the_contentFiltreler, makale içeriğini değiştirmenize olanak tanır.

Kullanın.add_filter()Filtre eklemek için bir fonksiyon kullanılır. Sözdizimi şu şekildedir:add_action()Aynı. Aşağıdaki örnek, tüm makale içeriklerinin sonuna otomatik olarak bir telif hakkı beyanı ekler.

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 myplugin_add_copyright( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $content .= '<p class="copyright">Bu metnin telif hakkı bu sitede saklıdır.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

Kısa kodlar oluşturmak ve kullanmak

Kısa kodlar (Shortcodes), kullanıcıların makalelerine veya sayfalara eklentiler aracılığıyla dinamik içerikleri kolayca eklemesini sağlayan güçlü bir araçtır. Basit parantez etiketleri kullanılarak oluşturulurlar, örneğin:[my_gallery]Kullanabilirsiniz.add_shortcode()Bir kısa kodu kaydetmek için bir fonksiyon kullanılır.

Bu fonksiyon, iki parametre alır: kısa kod etiket adı (parantezler olmadan) ve ilgili geri çağırma (callback) fonksiyonu. Geri çağırma fonksiyonu, öznitelikler (attributes) ve içerik (enclosed content) parametrelerini alabilir. Aşağıda, mevcut zamanı gösteren bir kısa kod oluşturulmuştur.

function myplugin_current_time_shortcode( $atts, $content = null ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $atts = shortcode_atts( array(
        'format' => 'Y-m-d H:i:s',
    ), $atts, 'current_time' );

// 返回处理后的内容
    return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myplugin_current_time_shortcode' );

Kullanıcılar editörde bir şeyler yazabilirler.[current_time format="F j, Y"]Zamanı belirtilen formatta gösterin.

Tavsiye edilen okuma WooCommerce eklenti geliştirme rehberi: özel e-ticaret eklentileri oluşturmanın temellerinden ileri düzeye kadar.

Eklenti arka plan yönetim arayüzünü oluşturma

Eklentiniz için net ve kullanıcı dostu bir arka plan ayarları sayfası oluşturmak, profesyonel bir kullanıcı deneyimi sunmanın anahtarıdır. WordPress, bu süreci kolaylaştırmak için zengin bir API sunar.

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

Eklentiniz için ayrı bir arka plan menü sayfası oluşturmak istiyorsanız, şunları kullanmanız gerekecektir:add_menu_page()Fonksiyon. Bu fonksiyon genellikle…admin_menuEylem kancasında çağrılır. Menünün başlığını, yetkilerini, benzersiz URL’sini, görüntülenen geri çağırma fonksiyonunu ve simgesini tanımlar.

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.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 所需权限(管理员)
        'myplugin-settings',      // 菜单slug
        'myplugin_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                        // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Bundan sonra, yukarıdaki geri çağırma fonksiyonunu tanımlamanız gerekiyor.myplugin_settings_pageBu fonksiyon, ayar sayfasının HTML kodunu oluşturmakla sorumludur.

Ayar API’sini kullanarak seçenek sayfası oluşturun.

Form gönderimlerini ve doğrulamalarını manuel olarak işlemek hem zahmetli hem de güvensizdir. WordPress’in Ayarlar API’si (Settings API), ce olmayan alanlar, yetki kontrolü ve veri depolama gibi işlemleri otomatik hale getirir.

Ayar sayfasını oluşturmak genellikle dört adımdan oluşur: Ayarların kaydedilmesi, ayar bloklarının eklenmesi, bloklar içinde alanların kaydedilmesi ve son olarak formun sayfa geri çağırma fonksiyonunda render edilmesi. Öncelikle,admin_initAyarlarınızı kancaya (hook) kaydedin.

function myplugin_settings_init() {
    // 1. 注册一个新设置(选项组名, 选项名, 清理回调)
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 添加一个设置区块
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        'myplugin_section_basic_callback',
        'myplugin-settings' // 页面slug
    );

// 3. 在区块内添加字段
    add_settings_field(
        'myplugin_field_api_key',
        'API密钥',
        'myplugin_field_api_key_callback',
        'myplugin-settings',
        'myplugin_section_basic'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Daha sonra, alanların geri çağırma (callback) fonksiyonlarını tanımlamanız gerekiyor.myplugin_field_api_key_callbackGerçek giriş kutusunu renderlemek için ve bundan sonra…myplugin_optionsDiziden kaydedilmiş değeri alın.

function myplugin_field_api_key_callback() {
    $options = get_option( 'myplugin_options' );
    $value = isset( $options['api_key'] ) ? $options['api_key'] : '';
    echo '<input type="text" name="myplugin_options[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

Son olarak, sayfa geri çağırma fonksiyonunda bunu kullanın.settings_fields()do_settings_sections()Lütfen tam formu çıkarın.

Eklenti Güvenliği, Optimizasyonu ve Yayınlanması

Geliştirme işleminin tamamlanması, projenin sona erdiği anlamına gelmez; eklentinin güvenli ve verimli olmasını sağlamak ve yayınlamaya hazır hale getirmek de aynı derecede önemlidir.

Güvenlik en iyi uygulamalarını hayata geçirin.

Güvenlik, eklenti geliştirmenin can damarındır. En önemli ilke şudur: Kullanıcı girdilerine asla güvenmeyin. Kullanıcıdan veya harici kaynaklardan gelen tüm verilere karşı dikkatli olun.$_GET$_POST$_REQUESTDoğrulama, temizleme ve escape işlemleri yapılır.

  • Doğrulama: Verilerin beklenen biçim, tür veya aralığa uygun olup olmadığını kontrol edin (örneğin, bir e-posta adresi olup olmadığı, bir sayı olup olmadığı). Bunun için aşağıdakileri kullanabilirsiniz:filter_var()preg_match()İşlev.
  • Temizleme (Sanitization): Verileri veritabanına kaydetmeden önce, içlerindeki güvenli olmayan karakterleri kaldırır. WordPress, çok sayıda temizleme fonksiyonu sunar, bunlar arasındasanitize_text_field()sanitize_email()sanitize_key()
  • Kaçış (Escaping): Verileri veritabanından tarayıcıya çıkarırken, XSS saldırılarını engellemek için HTML gibi özel karakterlerin güvenli bir şekilde kodlandığından emin olun. Aşağıdaki gibi fonksiyonlar kullanın:esc_html()esc_attr()esc_url()wp_kses_post()

Ayrıca, yetkileri işlerken her zaman…current_user_can()WordPress tarafından tanımlanan standart izinlerle (örneğin…)manage_optionsedit_postsMevcut kullanıcının belirli bir işlemi gerçekleştirme hakkına sahip olup olmadığını kontrol etmek için bu yöntemler kullanılır. Veritabanı sorguları söz konusu olduğunda, WordPress’in kendi sunduğu fonksiyonlar tercih edilmelidir (örneğin…).WP_Queryget_postsEğer orijinal SQL kullanmak zorundaysanız, lütfen bunu mutlaka yapın.$wpdb->prepare()SQL enjeksiyonunu önlemek için parametreleri hazırlayın.

Performans optimizasyonu yapmak

Verimsiz eklentiler tüm web sitesinin yavaşlamasına neden olabilir. Optimizasyon, birkaç farklı açıdan başlatılabilir: Her sayfa yüklendiğinde çok sayıda sorgunun veya karmaşık hesaplamaların çalıştırılmasından kaçınmak, geçici verileri depolamak için WordPress’in Transients API’sini mantıklı bir şekilde kullanmak.set_transient()get_transient()Zaman alıcı işlemlerin sonuçları kolayca önbelleğe alınabilir.

JavaScript ve CSS dosyalarınızın yalnızca ihtiyaç duyulan sayfalarda yüklendiğinden emin olun. Kayıt işlemleri sırasında ve betikleri dahil ederken bunu göz önünde bulundurun.wp_enqueue_script()wp_enqueue_style()Ve bağımlılıkları ile yükleme koşullarını doğru bir şekilde ayarlayın. Arka plan betikleri için, bunları uygun bir yere monte edebilirsiniz.admin_enqueue_scriptsKancalar; ön uç betikleri için, betiklere monte edilirler.wp_enqueue_scriptsKanca.

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

Eğer eklentiyi WordPress.org’un resmi eklenti dizinine göndermek istiyorsanız, bazı gereksinimleri karşılamanız gerekiyor. Kodunuzun WordPress kodlama standartlarına uygun olduğundan emin olun; bunu kontrol etmek için PHP_CodeSniffer aracını kullanabilirsiniz. Eklentinize kapsamlı uluslararasılaştırma (internationalization) desteği ekleyin.__()_e()Bu fonksiyonlar, tüm kullanıcılar tarafından görülebilen tüm metinleri kapsar ve bunları doğru bir şekilde ayarlar.Text DomainDomain Path

Ayrıntılı bir tane oluşturun.readme.txtDosyanın formatı WordPress’in gereksinimlerine uygun olmalıdır; içinde eklentinin açıklaması, kurulum adımları, sık karşılaşılan sorunlar, güncelleme kayıtları vb. bilgiler bulunmalıdır. Bu, kullanıcıların eklenti dizininde gördükleri temel belgedir. Son olarak, eklentinizi kapsamlı bir şekilde test edin; farklı PHP sürümleri, farklı WordPress sürümleri ve farklı temaların yanı sıra diğer eklentilerin etkin olduğu ortamlarda uyumluluk testleri yapın.

Özetle.

WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştürme sürecidir ve bu süreç, WordPress’in temel yapısını anlamaya dayanır. Profesyonel bir yerel geliştirme ortamı kurarak başlarsınız; eylem kancaları (action hooks), filtre kancaları (filter hooks) ve kısa kodlar (shortcodes) gibi üç temel etkileşim mekanizmasını öğrenerek WordPress’i esnek bir şekilde genişletebilirsiniz. Daha ileri giderek, ayar API’sini kullanarak profesyonel ve güvenli bir eklenti yönetim arayüzü oluşturabilirsiniz. Güvenlik en iyi uygulamalarını benimseyerek, performansı optimize ederek ve yayın standartlarına uyarak, kişisel projeniz geniş bir WordPress kullanıcı kitlesine hizmet verebilen güvenilir bir ürüne dönüşecektir. Sürekli öğrenmek, WordPress’in temel kodlarını ve kaliteli eklentilerin kaynak kodlarını incelemek, geliştirme becerilerinizi artırmanın en iyi yoludur.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?

HTML, CSS, PHP ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. Bunlar arasında PHP en önemlisidir, çünkü WordPress kendisi PHP ile yazılmıştır. Ayrıca MySQL veritabanı hakkında temel bilgilere sahip olmanız ve WordPress’in temel kavramlarına (makaleler, sayfalar, kategoriler, kullanıcı rolleri vb.) aşina olmanız oldukça faydalı olacaktır.

WordPress eklentimizi nasıl hata ayıklarız?

En etkili yöntem, WP_DEBUG özelliğini etkinleştirmektir. Makalede de belirtildiği gibi,wp-config.phpAyarlar bölümünde…define(‘WP_DEBUG’, true);Hata mesajları ekranda görüntülenecek veya kaydedilecektir.debug.logDosyada bulunmaktadır. Ayrıca, kullanılabilir.error_log()Fonksiyonlar, özelleştirilmiş hata ayıklama bilgileri çıkarabilir veya Xdebug gibi profesyonel hata ayıklama araçları ile IDE birlikte kullanılarak kesme noktaları aracılığıyla hata ayıklaması yapılabilir.

Eklentim, temalar ve diğer eklentilerle nasıl uyumlu çalışır?

Maksimum uyumluluk sağlamak için eklentiniz, WordPress kodlama standartlarına ve en iyi uygulamalara mümkün olduğunca uymalıdır. Çatışmalara neden olabilecek genel değişkenlerden veya fonksiyon adlarından kaçının (sınıflar veya benzersiz önekler kullanılması önerilir). Özellikler eklemek için standart hook’ları (düğümleri) kullanın; çekirdek dosyaları doğrudan değiştirmeyin. Mümkün olduğunda, diğer geliştiricilerin eklentinizin çıktısını veya davranışını değiştirmesine izin veren filtreler (filters) sağlayın.

Eklentiye çok dilli destek nasıl ekleyebilirim?

Eklentilere uluslararasılaştırma (i18n) desteği eklemek için WordPress’in çeviri fonksiyonlarını kullanmanız gerekir. Öncelikle,__()_e()`wait` fonksiyonu, tüm kullanıcı tarafından görülebilen metinleri kapsar. Daha sonra, bu metinler eklentinin ana dosyasının baş kısmında doğru bir şekilde ayarlanır.Text DomainDomain PathSon olarak, Poedit gibi bir araç kullanarak içeriği dönüştürün..potŞablon dosyaları; çevirmenler, bu dosyalara dayanarak farklı dillerde içerikler oluşturabilirler..po.moDosya.

Eklentilerin WordPress.org’a gönderilmesi sırasında reddedilmesinin yaygın nedenleri nelerdir?

Yaygın nedenler arasında şunlar bulunmaktadır: Güvenlik açıkları (doğrulanmamış ve escape işlemi yapılmamış kullanıcı girdileri), eklenti katalogu kurallarının ihlali (ödeme bağlantıları veya şifreli kodların bulunması), düşük kod kalitesi (çok sayıda hata veya uyarı), mevcut eklentilerle tamamen aynı işlevleri yerine getiren ve herhangi bir iyileştirme sunmayan eklentiler.readme.txtDosya standartlara uymuyor veya eklenti, izin verilmeyen bir lisans kullanıyor. Göndermeden önce, lütfen resmi kılavuzları dikkatlice okuyun ve dosyayı kapsamlı bir şekilde kontrol edin.