WorkPortfolioServicesStudioInsightsContact Start a project ↗ EN / TR
Home/ Insights/ WordPress Plugin Geliştirme Rehberi: 2026 Profesyonel Yaklaşım

WordPress Plugin Geliştirme Rehberi: 2026 Profesyonel Yaklaşım

WordPress plugin geliştirme sürecinin tüm detayları: hook sistemi, güvenlik, performans, distribution ve monetization. Stark Ajans ile özel plugin projeleri.

WordPress ekosisteminin gerçek gücü temada değil, plugin mimarisinde yatar. 60.000'den fazla ücretsiz eklenti ve 10.000'den fazla premium eklenti ile WordPress, pratik olarak her iş ihtiyacına çözüm sunabiliyor. Ancak kurumsal ihtiyaçlarda piyasada hazır çözüm bulunmadığında veya mevcut çözümler iş akışınıza %80-90 oranında uymadığında, özel WordPress plugin geliştirme devreye girer. Biz Stark Ajans olarak yıllardır müşterilerimize özel plugin geliştiriyor; muhasebe entegrasyonlarından özel kampanya motorlarına, üyelik sistemlerinden abonelik yönetimine uzanan geniş bir yelpazede çözümler üretiyoruz. Bu rehberde plugin geliştirme sürecinin tüm teknik detaylarını paylaşıyoruz.

Ne Zaman Özel Plugin Gerekir?

Her ihtiyaç için özel plugin yazılmamalıdır. Önce WordPress.org ve CodeCanyon'da araştırma şart. Özel plugin gerekliliğinin somut işaretleri: (1) Piyasadaki çözümler iş mantığınızın yalnızca bir kısmını karşılıyor, (2) Çok sayıda plugin kurup aralarında çakışma çıkıyor, (3) Performans sorunları ücretli eklentiden kaynaklanıyor, (4) Fikri mülkiyet gerekçesiyle kodun bize ait olması gerekiyor, (5) Çok spesifik entegrasyon (yerel ERP, özel ödeme sistemi) mevcut değil, (6) Müşteri deneyimini farklılaştıran core feature. Bu durumlarda özel plugin yatırım olarak anlamlıdır.

Plugin Mimarisi ve Klasör Yapısı

Profesyonel bir plugin projesi basit bir functions.php değildir. Bizim kullandığımız klasör yapısı:

stark-plugin/
|-- stark-plugin.php          // Ana dosya, header ve bootstrap
|-- composer.json             // Bağımlılıklar ve autoload
|-- readme.txt                // WordPress.org için
|-- includes/
|   |-- class-loader.php      // Autoloader
|   |-- class-activator.php   // Etkinleştirme
|   |-- class-deactivator.php // Devre dışı bırakma
|-- src/
|   |-- Admin/                // Admin panel kodları
|   |-- Frontend/             // Frontend kodları
|   |-- Api/                  // REST API endpoint'leri
|   |-- Services/             // İş mantığı servisleri
|   |-- Models/               // Veri modelleri
|-- assets/
|   |-- js/
|   |-- css/
|   |-- images/
|-- languages/                // .po .mo dosyaları
|-- templates/                // Override edilebilir şablonlar
|-- tests/                    // PHPUnit testleri

Bu yapı PSR-4 autoloading, OOP prensipler ve test edilebilirlik sağlar. Spaghetti functions.php dönemi çoktan geride kaldı.

WordPress Hook API: Actions ve Filters

WordPress plugin geliştirmenin temeli hook sistemidir. Action hook'lar bir olay gerçekleştiğinde fonksiyon çalıştırır (örn: init, wp_enqueue_scripts, save_post). Filter hook'lar bir değeri işleyip geri döndürür (örn: the_content, wp_title). İyi plugin kendi hook'larını da tanımlar ki başka pluginler ve temalar onu extend edebilsin:

// Plugin kendi filter'ını expose eder
$price = apply_filters('stark_product_price', $original_price, $product_id);

// Başka plugin bu filter'ı kullanır
add_filter('stark_product_price', function($price, $product_id) {
    if (is_member()) return $price * 0.9;
    return $price;
}, 10, 2);

REST API ve Modern Plugin Geliştirme

2026'da plugin'ler genellikle REST API endpoint'leri expose ediyor. Bunun faydaları: mobile app ve SPA entegrasyonu kolay, JavaScript-heavy admin UI'ları (React based) çalışıyor, üçüncü taraf sistemlerle sync. Örnek endpoint tanımı:

add_action('rest_api_init', function() {
    register_rest_route('stark/v1', '/orders/(?Pd+)/approve', [
        'methods' => 'POST',
        'callback' => [OrderController::class, 'approve'],
        'permission_callback' => function() {
            return current_user_can('manage_orders');
        },
        'args' => [
            'id' => ['validate_callback' => 'is_numeric']
        ]
    ]);
});

Veritabanı ve Custom Tables

Plugin'ler genellikle wp_options, post meta veya user meta kullanır. Ancak yüksek hacimli veri (ör: milyonlarca log, sipariş, işlem) için custom table oluşturmak daha doğrudur:

// Aktivasyonda tablo oluşturma
function stark_create_tables() {
    global $wpdb;
    $charset = $wpdb->get_charset_collate();
    $sql = "CREATE TABLE {$wpdb->prefix}stark_logs (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id bigint(20) UNSIGNED,
        action varchar(100) NOT NULL,
        metadata longtext,
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        KEY idx_user (user_id),
        KEY idx_action (action),
        KEY idx_created (created_at)
    ) $charset;";
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'stark_create_tables');

Güvenlik: Plugin Güvenlik Checklist'i

Saldırı TipiSavunma Yöntemi
SQL Injection$wpdb->prepare() her zaman kullan
XSS (Cross-Site Scripting)esc_html, esc_attr, esc_url, wp_kses
CSRFwp_nonce_field() ve check_admin_referer()
Path Traversalrealpath() ve dizin whitelist
Authorizationcurrent_user_can() her admin action'da
Direct File Accessdefined('ABSPATH') || exit;
Sensitive Datawp_options yerine encrypt, .env kullan

Performans Optimizasyonu

Kötü plugin, sitenin katili olur. Performans için şu kuralları uyguluyoruz: (a) Her sayfada değil sadece gerekli yerde asset enqueue et, (b) Transient cache ile pahalı sorguları önbelleğe al, (c) Database sorgusunda JOIN ve indeks kullan, (d) Heavy işleri queue'ya at (Action Scheduler, WP Cron), (e) autoload = no ile büyük option'ları belirt, (f) REST API yanıtlarını cache'le, (g) Admin sayfası olmayan kod admin'de yüklenmesin. İyi plugin, aktive edildikten sonra site hızında fark edilir düşüş yaratmamalıdır.

Lokalizasyon ve Çeviri

Uluslararası kullanım için __(), _e(), _n() fonksiyonlarıyla string'leri sarmalayın. Text domain tanımlaması, .pot dosyası üretimi (WP-CLI: wp i18n make-pot) ve Poedit ile çeviri standarttır. Türkçe dahil 10 dile çevrilmiş plugin'ler uluslararası pazarda premium fiyat alır.

Plugin Dağıtımı ve Monetization

Özel plugin ürünleştirilecekse dağıtım kanalları: (1) WordPress.org (ücretsiz, freemium model), (2) CodeCanyon/Envato (tek seferlik satış), (3) Freemius (SaaS benzeri abonelik, lisans yönetimi), (4) Gumroad/Lemon Squeezy (direkt satış), (5) Kendi siteniz + EDD Software Licensing. Premium plugin'ler için update sunucusu, lisans kontrolü ve müşteri desteği altyapısı gereklidir. Biz Freemius'u lisans yönetimi kolaylığı nedeniyle sık öneriyoruz.

2026 Fiyat Aralıkları

  • Basit özel plugin (tek amaç, az ekran): 40.000-90.000 TL
  • Orta karmaşıklık (custom table, ayar paneli, REST API): 100.000-220.000 TL
  • Karmaşık iş mantığı (entegrasyon, webhook, queue): 250.000-500.000 TL
  • SaaS-ready plugin (lisans, multi-site, freemium): 400.000 TL+
  • Aylık bakım: 5.000-15.000 TL

Sıkça Sorulan Sorular

Plugin mi tema functions.php mi? Her fonksiyonellik plugin olarak yazılmalı ki tema değiştirince fonksiyon kaybolmasın. Sadece tema-spesifik stil/şablon override'ları functions.php'de kalır.

Plugin çakışmalarını nasıl önlerim? Tüm sınıf isimlerini namespace veya prefix ile koru (Stark_ önek), hook önceliklerini dikkatli kullan, global değişkenlerden kaçın.

Plugin test nasıl yapılır? PHPUnit + WP_UnitTestCase ile unit testler; WP-Browser ile acceptance testler. CI/CD pipeline'da otomatik test şart.

Multisite destek gerekli mi? B2B müşteri kitlesi büyük ağlara (üniversite, medya grubu) hitap ediyorsa evet. Sıradan e-ticaret için opsiyonel.

Stark Ajans ile Özel Plugin Geliştirme

Biz Stark Ajans olarak özel WordPress plugin projelerinde mimari tasarım, kod yazımı, test otomasyonu, dokümantasyon ve dağıtım desteği sunuyoruz. OOP mimari, PSR standartları, PHPUnit testleri ve detaylı dokümantasyonla uzun ömürlü plugin'ler üretiyoruz. İhtiyacınızı görüşmek için bizimle iletişime geçin.

NEXT POST
Health Clinic SEO Turkey: 2026 International Patient Playbook
JUNE 11, 2026 · STARK AJANS

Got a brief or a topic to talk through?

A senior partner replies in person within 24 hours.

Start a project