WordPress Eklenti Geliştirme Becerilerini Kazanın: Sıfırdan Başlayarak Özel İşlevler Oluşturun

3 dakika okuma.
2026-03-15
2026-06-03
2,247
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 esas olarak eklenti mekanizmasına borçludur. Özel eklentiler geliştirerek, geliştiriciler WordPress’in temel dosyalarını değiştirmeden platforma ihtiyaç duydukları herhangi bir özelliği ekleyebilirler. Bu, kodun bağımsızlığını ve sürdürülebilirliğini sağlar; temaların güncellenmesi veya WordPress sürümlerinin yükseltilmesi sırasında eklentilerin işlevselliği stabil kalır. İster belirli iş ihtiyaçlarını karşılamak, ister web sitesinin performansını optimize etmek, isterse topluluk içinde çözümler paylaşmak için olsun, eklenti geliştirme konusunda bilgi sahibi olmak son derece değerli bir beceridir.

Standart bir WordPress eklentisi, esasen bir veya daha fazla PHP dosyasından oluşur ve WordPress’in belirli bir işlevini veya özelliğini genişletmek için kullanılır. Bu dosyalar, genellikle `wp-content/plugins` dizinine yerleştirilir./wp-content/plugins/Dosya dizininin içinde bulunur ve WordPress tarafından belirli dosya başlık yorumları (file header comments) aracılığıyla tanınır. Tema geliştirmenin görünüm ve düzen üzerine odaklanmasının aksine, eklenti geliştirmesi işlevsel mantığa odaklanır; bu sayede herhangi bir tema ile sorunsuz bir şekilde çalışabilir. Bu tür bir odak ayrımına dayanan tasarım felsefesi, sağlam ve yeniden kullanılabilir WordPress uygulamaları oluşturmanın temelidir.

İlk eklenti yapınızı oluşturun.

Eklenti geliştirmeye başlamanın ilk adımı, doğru dosya yapısını oluşturmaktır. Bu sadece kodu düzenlemek için gerekli değil, aynı zamanda WordPress’in eklentiyi tanıyıp etkinleştirebilmesi için de önkoşuldur.

Tavsiye edilen okuma WordPress eklenti geliştirme rehberi: Sıfırdan bire özel özellikler oluşturma

Ana eklenti dosyasını oluşturun.

Her eklentinin, standart eklenti bilgilerini içeren bir başlık dosyasına sahip olması gerekir. Bu dosya genellikle eklentinin adıyla adlandırılır, örneğin:my-first-plugin.phpDosya başlığındaki yorumlar, WordPress’in eklentinin adını, açıklamasını, sürümünü ve diğer bilgilerini okumasında kritik bir rol oynar.

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: 这是一个用于演示WordPress插件开发基础的自定义插件。
 * Version:     1.0.0
 * Author:      开发者名称
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 * Domain Path: /languages
 */

Yukarıdaki kodu içeren dosyayı şu yere koyun:/wp-content/plugins/my-first-plugin/Dizinin ardından, WordPress arka uçundaki “Eklentiler” sayfasında bunu görebilir ve etkinleştirebilir veya devre dışı bırakabilirsiniz.Text DomainUluslararasılaştırma için kullanılır.Domain PathDil dosyalarının saklanacağı klasör belirlendi.

Organizasyon eklenti dizinini ve dosyalarını düzenleme

Basit eklentiler için tek bir dosya yeterli olabilir. Ancak işlevleri karmaşık olan eklentiler için sağlam bir klasör yapısı çok önemlidir. Tipik bir eklenti klasörü aşağıdaki gibi görünebilir:

my-advanced-plugin/
├── my-advanced-plugin.php      // 主插件文件
├── includes/                   // 核心PHP类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                      // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                     // 前端相关文件
├── assets/                     // 静态资源(图片、图标等)
└── languages/                  // 国际化语言文件

Bu yapı, arka plan mantığını, ön uç mantığını ve kaynak dosyalarını ayrı ayrı kategorilere ayırarak kodun yönetilmesini ve ekip işbirliğini daha kolay hale getirir. Ana eklenti dosyasında genellikle şunları kullanmanız gerekir:require_onceinclude_onceBu alt kataloglardaki işlevsel dosyaları dahil etmek için…

Temel API’leri anlamak ve kullanmak: Eylemler ve Filtreler

WordPress eklenti geliştirmenin özü, olay tabanlı (event-driven) mimarisindedir ve bu mimari esas olarak…Hook(Sistem Uygulaması: Hook’lar) Hook’lar iki türe ayrılır: Eylem hook’ları (Action hooks)ActionVe filtre kancaları.FilterBu araçlar, eklentilerin WordPress çekirdeği, temalar ve diğer eklentilerle etkileşim kurmasını sağlayan köprülerdir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Yüksek Kaliteli WordPress Genişletmeleri Oluşturma

Eylem kancalarını kullanarak kod çalıştırın.

Eylem kancaları, WordPress’un belirli zaman noktalarında kendi kodunuzu “eklemenize” olanak tanır. Örneğin, bir makale yayınlandığında, bir kullanıcı giriş yaptığında veya yönetim paneli menüsü başlatıldığında. Bunu kullanabilirsiniz.add_action()Bu fonksiyon, özel fonksiyonunuzu belirli bir eylem kancasına (action hook) bağlar.

Örneğin, web sitenizin üst kısmında bazı özelleştirilmiş içerikler göstermek istiyorsanız, bunları oraya ekleyebilirsiniz.wp_headBu eylem:

function myplugin_add_custom_head_content() {
    echo '<meta name="my-custom-tag" content="value">';
}
add_action( 'wp_head', 'myplugin_add_custom_head_content' );

Başka bir yaygın örnek, eklenti etkinleştirildiğinde bazı başlangıç işlemlerinin gerçekleştirilmesidir; örneğin bir veritabanı tablosunun oluşturulması gibi. Bu işlem için eklentinin ilgili sistem bileşenlerine bağlanması (mount edilmesi) gerekmektedir.register_activation_hookBu özel kancayı…

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_activate() {
    // 执行创建数据表等初始化代码
}
register_activation_hook( __FILE__, 'myplugin_activate' );

Verileri filtre kancaları kullanarak değiştirme

Filtre kancaları, süreç içinde aktarılan verileri değiştirmek için kullanılır. Eylem kancalarından farklı olarak, filtre fonksiyonlarının bir girdi değeri alması ve değiştirilmiş bir değer döndürmesi gerekir.add_filter()Filtre eklemek için bir fonksiyon kullanılır.

Örneğin, makale başlığının görüntülenme içeriğini değiştirmek:

function myplugin_modify_post_title( $title ) {
    return '【推荐】' . $title;
}
add_filter( 'the_title', 'myplugin_modify_post_title' );

Filtreler, sorgu parametrelerini, menü öğelerini ve hatta eklentilerin kendi ayarlarını değiştirmek için de kullanılabilir. Eylemleri ve filtreleri anlamak ve ustaca kullanmak, esnek ve yüksek uyumluluğa sahip eklentiler geliştirmenin anahtarıdır.

Tavsiye edilen okuma Sıfırdan Bir: WordPress Eklenti Geliştirme Kapsamlı Rehberi ve En İyi Uygulamalar

Eklenti için bir arka plan yönetim arayüzü oluşturun.

Çoğu eklentinin, web sitesi yöneticilerinin seçenekleri ayarlayabilmesi için bir yapılandırma sayfasına ihtiyacı vardır. WordPress, geliştiricilerin standartlaştırılmış arayüzler hızlı bir şekilde oluşturmasına yardımcı olacak zengin bir API sunar.

Yönetim menüsü ve alt menüleri ekleyin.

Kullanın.add_menu_page()Bu fonksiyon, eklentinizin arka plan kenar çubuğuna bir üst düzey menü ekleyebilir. Sayfa başlığı, menü başlığı, yetkiler, menü takma adı, geri çağırma fonksiyonu gibi parametreler sağlamanız gerekmektedir.

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' );

İlgili geri çağırma fonksiyonu (callback function)myplugin_settings_page()HTML içeriğini renderleme ayarlarını yönetmekle sorumlusunuz. Daha karmaşık eklentiler için ise muhtemelen başka araçlar veya yöntemler de kullanmanız gerekecektir.add_submenu_page()Alt menü eklemek için…

Yapılandırmayı ayar API’si kullanarak kaydedin.

Form gönderimlerini ve seçeneklerin kaydedilmesini manuel olarak işlemek hem zahmetli hem de güvensizdir. WordPress’in Ayarlar API’si (Settings API), ayarları, alanları ve bölümleri kaydetmek için güvenli ve standartlaştırılmış bir yöntem sunar.

Öncelikle, kullanın.register_setting()Bir dizi ayarı kaydedin ve doğrulama işlemleri için gerekli geri çağırma fonksiyonlarını (validation callbacks) tanımlayın.

function myplugin_register_settings() {
    register_setting(
        'myplugin_settings_group', // 设置组名,需与 settings_fields() 调用一致
        'myplugin_option_name',    // 存储在 wp_options 表中的选项名
        array( 'sanitize_callback' => 'myplugin_sanitize_input' ) // 清理回调
    );

// 添加一个设置区块
    add_settings_section(
        'myplugin_main_section',   // 区块ID
        '主要设置',                // 区块标题
        'myplugin_section_callback', // 区块介绍文本的回调函数
        'myplugin-settings'        // 所属页面的别名
    );

// 在区块中添加一个字段
    add_settings_field(
        'myplugin_text_field',     // 字段ID
        '示例文本输入',            // 字段标签
        'myplugin_text_field_callback', // 渲染字段HTML的回调
        'myplugin-settings',       // 页面别名
        'myplugin_main_section'    // 所属区块ID
    );
}
add_action( 'admin_init', 'myplugin_register_settings' );

Daha sonra, ayar sayfasındaki geri çağırma fonksiyonunda bunu kullanın.settings_fields()do_settings_sections()submit_button()Formu çıkarmak için `echo`, `print` gibi fonksiyonlar kullanılır.

Eklentinin güvenliğini ve sürdürülebilirliğini sağlayın.

Bir eklenti geliştirmek sadece işlevleri yerine getirmekle kalmaz; daha da önemlisi, güvenli, verimli ve uzun vadede kolayca sürdürülebilir olmasını sağlamaktır.

Veri Doğrulama, Temizleme ve Kaçınma (Data Validation, Cleaning, and Escaping)

Bu, eklenti güvenliğinin ilk savunma hattıdır. Kullanıcılardan veya harici kaynaklardan gelen tüm veriler (örneğin…)$_POST$_GET$_COOKIEVeritabanına girilmeden önce veya sayfaya çıkarılmadan önce, her şeyin işlenmesi gerekmektedir.

  • Doğrulama: Verilerin beklenen biçimlere, türlere veya aralıklara uygun olup olmadığını kontrol edin. Aşağıdaki gibi fonksiyonları kullanın:filter_var()is_email()Veya özelleştirilmiş bir düzenleme (regular expression) kullanın.
  • Temizleme (Sanitasyon): Verilerdeki yasadışı veya tehlikeli karakterleri temizleyerek onları güvenli hale getirir. Farklı veri türleri için WordPress, aşağıdakiler gibi zengin temizleme fonksiyonları sunar:sanitize_text_field()(Kullanım alanı: Metinlerde)sanitize_email()sanitize_key()vs.
  • Kaçış (Escaping): Verileri HTML, JavaScript, URL veya özelliklere çıktı olarak verirken, cross-site scripting saldırılarını önlemek için verileri kaçıştırmak gerekir. Bunun için , , gibi fonksiyonlar kullanılır.esc_html()esc_js()esc_url()esc_attr()

Altın bir kural şudur: Mümkün olan en kısa sürede temizleyin ve her zaman karakterleri escape edin (yani özel anlamlarını ortadan kaldırın).

Uluslararasılaştırma ve Yerelleştirme (Internationalization and Localization)

Eklentinizin tüm dünyadaki kullanıcılar tarafından kullanılabilmesi için çok dilli destek şarttır. Bu, WordPress’in uluslararasılaştırma (internationalization) çerçevesi aracılığıyla sağlanır.

Öncelikle, çevrilmesi gereken tüm metin parçalarının etrafına şu şekilde bir yapı kullanın:__()(Yeniden dönen değer için kullanılır) veya_e()(Directly echoed) Fonksiyon ve eklentinin baş kısmında tanımlanan değer belirtilmiştir.Text Domain

$greeting = __( ‘Hello, world!’, ‘my-first-plugin’ );
_e( ‘Settings saved successfully!’, ‘my-first-plugin’ );

Daha sonra, Poedit gibi bir araç kullanarak eklenti kodunu tarayın ve bir çıktı oluşturun..pot(Template) Dosyası. Çevirmenler, bu dosyaya dayanarak ilgili dildeki içeriği oluşturabilirler..poVe derlenen.moDosyayı eklenti dizinine koyun./languages/Klasörde. Son olarak, kullanın.load_plugin_textdomain()İşlev, eklenti başlatıldığında dil paketini yükler.

Özetle.

WordPress eklenti geliştirme, yaratıcılığı işlevselliklere dönüştürme sürecidir ve bu süreç, WordPress’in temel yapısına derin bir anlayışa dayanır. Standart dosya başlıkları içeren bir ana dosya oluşturmakla başlayarak, güçlü eylem (action) ve filtre (filter) sistemlerini kullanarak platformla derinlemesine entegrasyon sağlamaya, ardından da ayar API’siyle güvenli bir arka uç yönetim arayüzü oluşturmaya kadar her adım, WordPress’in en iyi uygulamalarına uygun olarak gerçekleştirilir. Aynı zamanda, güvenlik (doğrulama, temizleme, escape işlemleri) ve uluslararasılaştırma (internationalization) geliştirmenin temel gereksinimleri olarak kabul edilir ve profesyonel, güvenilir ve geniş bir kullanım yelpazesine sahip eklentiler oluşturmanın anahtarıdır. Bu ilkeleri ve adımları takip ederek, geliştiriciler çeşitli ihtiyaçları karşılayabilecek yüksek kaliteli WordPress eklentileri geliştirebilirler.

Sıkça Sorulan Sorular.

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

WordPress eklentisi geliştirmek için PHP programlama diline dair temel bilgilere sahip olmak gerekmektedir; çünkü eklentiler çoğunlukla PHP ile yazılır. Aynı zamanda, ön uç görünümünü ve etkileşimini yönetebilmek için HTML, CSS ve JavaScript konularında temel bir bilgiye sahip olmak önemlidir. En önemlisi, WordPress’in temel yapısını, örneğin temaları, eklentileri, kancaları (Hooks) ve döngülerin çalışma prensiplerini anlamak gerekir. Eklentilerin verilerini işlemek için MySQL veritabanıyla ilgili temel işlemleri bilmek de oldukça faydalıdır.

Geliştirilmekte olan bir WordPress eklentisini nasıl hata ayıklarsınız?

EtkinleştirWP_DEBUGBu, hata ayıklama eklentisinin ilk adımıdır.wp-config.phpDosyada,define( ‘WP_DEBUG’, true );Ayarları yapın.trueBu, sayfada PHP hatalarını, uyarılarını ve bildirimlerini gösterecektir. Aynı zamanda, bunları kullanmak da mümkündür.error_log()Bu fonksiyon, özelleştirilmiş hata ayıklama bilgilerini sunucunun hata günlüğüne yazar. Daha karmaşık hata ayıklama işlemleri için, özel hata ayıklama eklentileri kullanmayı veya IDE’nin hata ayıklama araçlarıyla entegrasyon yapmayı düşünebilirsiniz.

Eklentiler geliştirirken diğer eklentilerle çakışmaları nasıl önleyebiliriz?

Çakışmaları önlemek için, eklenti kodunuzun iyi bir şekilde kapsüllenmiş olmasına dikkat etmelisiniz. Tüm fonksiyonlara, sınıflara, değişkenlere ve seçenek adlarına benzersiz bir önek ekleyin; örneğin, eklentinin kısaltmasını veya adını kullanabilirsiniz. Kodu sınıflar içinde nesne yönelimli programlama (OOP) teknikleriyle kapsüllenerek, genel alan adlarının kirlenmesini etkili bir şekilde azaltabilirsiniz. Genel değişkenleri dikkatli kullanın ve hook (davet) geri çağırma fonksiyonlarınızın açık bir önceliğe sahip olduğundan emin olun. Yayınlamadan önce, birçok popüler eklentiyi içeren bir ortamda kapsamlı testler yapın.

Geliştirilen bir eklentiyi resmi eklenti kataloğuna nasıl gönderebilirsiniz?

Öncelikle, eklentinizin WordPress’in resmi eklenti geliştirme standartlarına ve kılavuzlarına tam olarak uyduğundan emin olmanız gerekiyor. Daha sonra, WordPress.org’da bir hesap oluşturun ve eklentinizin sıkıştırılmış dosyasını “Geliştiriciler” sayfası üzerinden gönderin. Gönderimden sonra, eklenti inceleme ekibi kod kalitesini, güvenliğini ve lisans anlaşmasını (GPL ile uyumlu olması gerekiyor) inceleyecektir. İncelemeden geçtikten sonra, eklentiniz resmi kataloga eklenecek ve kodunuzu ve güncellemelerinizi yönetmek için bir SVN deposu alacaksınız.