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

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

Bir WordPress eklentisi geliştirmek istiyorsanız, öncelikle WordPress’in kurulum dizininde gerekli dosyaları oluşturmanız gerekmektedir. wp-content/plugins Klasörün içinde özel bir klasör oluşturun. Bu klasörün adı, eklentinizin temel işlevi veya adıyla ilgili olmalı ve küçük harfler ile tire (-) kullanmak en iyisidir; örneğin: my-first-plugin

Bundan sonra, bu klasör içinde ana eklenti dosyasını oluşturmanız gerekiyor. Bu dosya genellikle eklentinin adıyla adlandırılır, örneğin… my-first-plugin.phpBu dosya bir eklentinin giriş noktasıdır ve üst kısmında WordPress standartlarına uygun bir eklenti başlık yorumu bulunmalıdır. Bu yorum bloğu, WordPress sisteminine eklentinin temel bilgilerini sağlamak için kullanılır ve eklentinin tanınması ve etkinleştirilmesi için kritik öneme sahiptir.

Tipik bir eklenti başlık yorumu aşağıdaki gibidir:

Tavsiye edilen okuma Sıfırdan başlayarak WordPress eklenti geliştirmeye ustalaşmak: Kapsamlı bir rehber ve uygulamalı çalışmalar.

<?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
 */

Bu dosyayı oluşturup doldurduktan sonra, WordPress arayüzündeki “Eklentiler” sayfasında kendi eklentinizi görebilecek ve onu etkinleştirebileceksiniz. Bu, eklenti geliştirme yolculuğunuzun resmi olarak başladığını gösterir.

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

Eklentilerin temel yapısını anlamak

İyi yapılandırılmış bir WordPress eklentisi, hem kendinizin bakımını kolaylaştırır hem de diğer geliştiricilerin anlamasını sağlar. Standart organizasyon yöntemlerine uymak, kodunuzu daha net ve daha profesyonel hale getirir.

Çekirdek dosyaların ve dizinlerin düzenlenme şekli

Ana eklenti dosyasının yanı sıra, işlevsel olarak tam bir eklenti genellikle birçok klasör ve dosya içerir. Örneğin,includes/ Katalog, temel PHP sınıfı veya fonksiyon dosyalarını saklamak için kullanılır;admin/ Katalog, arka plan yönetim arayüzüyle ilgili kodları içerir.public/frontend/ Katalog, web sitesi ziyaretçileri için hazırlanan kodları içerir.assets/ Katalog, JavaScript, CSS ve resimler gibi statik kaynakların saklanması için kullanılır.

Ayrıca, muhtemelen şunlara da ihtiyaç duyulacaktır: languages/ Katalog, uluslararası çeviri dosyalarını (%.po/%.mo) ve bir başka dosyayı içermektedir. uninstall.php Bu dosya, eklentiler silindiğinde temizlik işlemlerinin yapılmasını sağlar. Mantıklı bir klasör yapısı, bakımı ve genişletilmesi kolay eklentiler oluşturmanın temelidir.

Eklenti Yaşam Döngüsü ve Standart Kancalar (Plugin Lifecycle and Standard Hooks)

WordPress eklentileri, çeşitli “kancalar” (Hooks) aracılığıyla çekirdek sistemle etkileşim kurar. Eklentilerin yaşam döngüsünü anlamanın anahtarı, bu kancaların hangi sırayla çalıştırıldığını bilmektir. WordPress bir istek işlediğinde, önce çekirdek dosyaları, ardından temaları ve aktif olan eklentileri sırayla yükler.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Gerçek Uygulamalara Kadar Detaylı Anlatım

Eklenti geliştiricileri bunlardan yararlanabilir. register_activation_hook Eklenti etkinleştirildiğinde, tek seferlik görevler gerçekleştirilir; örneğin bir veritabanı tablosu oluşturulur. Aynı şekilde…register_deactivation_hook Eklentilerin devre dışı bırakılması durumunda yapılacak işlemleri yönetmek için kullanılır (Unutmayın, bu bir silme işlemi değildir). register_uninstall_hook Veya bağımsız bir… uninstall.php Dosyalar, eklentinin WordPress’ten kaldırılması durumunda verilerin temizlenmesi için kullanılır.

Günlük işleyiş sırasında en sık kullanılan iki hook türü Action (Eylem) ve Filter (Filtre)’dir. Action, belirli bir zamanda (örneğin…) bir şey yapmanıza olanak tanır. initKod ekleyerek bir işlevi gerçekleştirebilirsiniz; filtreler ise diğer fonksiyonlara aktarılan verileri değiştirmenize olanak tanır (örneğin…). the_content)。

Çekirdek işlevleri ve güvenlik etkileşimlerini gerçekleştirme

Eklentiler geliştirmenin temel amacı, WordPress’e yeni özellikler eklemektir. İster bir kısayol eklemek, ister küçük bir araç oluşturmak, isterse form verilerini işlemek olsun, tüm bu işlemler WordPress’in güvenlik ve etkileşim kurallarına uygun olarak yapılmalıdı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

İçeriği çıkarmak için kısa bir kod oluşturun.

Kısa kodlar (Shortcodes), kullanıcıların makalelerde veya sayfalarda basit bir etiket aracılığıyla dinamik içerik eklemesine olanak tanıyan güçlü bir araçtır. Kullanabilirsiniz. add_shortcode Kendi kısa kodlarınızı kaydetmek için bir fonksiyon kullanın.

Örneğin, aşağıdaki kod “” adında bir nesneyi kaydeder. greet Kısa kodu, bir parametre alır. name Öznitelikleri belirtin ve kullanıcıya merhaba deyin:

function myplugin_greet_shortcode( $atts ) {
    // 使用 shortcode_atts 函数设置默认值并合并用户属性,确保安全性
    $atts = shortcode_atts( array(
        'name' =&gt; '访客',
    ), $atts, 'greet' );

// 在输出前对用户输入进行转义
    $name = esc_html( $atts['name'] );
    return '<p>Merhaba, '.$name.'! Bu web sitesine hoş geldiniz.</p>'add_shortcode( 'greet', 'myplugin_greet_shortcode' );

Kullanıcılar, makale düzenleyicisine metin girebilirler. [greet name=“小明”]Ön uçta “Merhaba, Xiao Ming! Bu web sitesine hoş geldiniz.” mesajı görüntülenecektir. Unutmayın ki, kullanıcıdan alınan tüm verilerin çıktıya verilmeden önce uygun şekilde dönüştürülmesi veya doğrulanması gerekmektedir; yukarıdaki örnekte de bunun yapıldığını görebilirsiniz. esc_html

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

Eklentiye ayar sayfası ekleyin.

Kullanıcı tarafından yapılandırılması gereken eklentiler için, bir arka uç seçenek sayfası oluşturmak standart bir uygulamadır. WordPress’in “Ayarlar API’sini” kullanarak sayfaları ve alanları güvenli ve kolay bir şekilde ekleyebilirsiniz; bu API, güvenlik doğrulamalarını (nonce) ve veri depolamayı otomatik olarak yönetir.

Öncelikle, kullanın. add_options_pageadd_menu_page Bu fonksiyonlar için yönetim arayüzünde bir menü öğesi ve sayfa ekleyin. Daha sonra, bunları kullanın. register_settingadd_settings_sectionadd_settings_field Ayar seçeneklerinizi tanımlamak için `wait` gibi fonksiyonları kullanın.

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.

Aşağıda, basit bir ayar sayfası oluşturmak için kullanılan bir çerçeve kodu bulunmaktadır:

function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限
        'myplugin-settings',     // 菜单 Slug
        'myplugin_settings_page' // 用于渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

function myplugin_settings_init() {
    register_setting( 'myplugin_settings_page', 'myplugin_settings' );
    add_settings_section( 'myplugin_section', '基础设置', null, 'myplugin_settings_page' );
    add_settings_field(
        'api_key',
        'API 密钥',
        'myplugin_api_key_field_render', // 渲染输入字段的函数
        'myplugin_settings_page',
        'myplugin_section'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_api_key_field_render() {
    $options = get_option( 'myplugin_settings' );
    $value = isset( $options['api_key'] ) ? esc_attr( $options['api_key'] ) : '';
    echo '<input type="text" name="myplugin_settings[api_key]" value="' . $value . '" />';
}

function myplugin_settings_page() {
    ?&gt;
    <form action='/tr/options.php/' method='post' data-trp-original-action="options.php">
        <h2>Eklenti ayarlarım.</h2>
        <?php
        settings_fields( 'myplugin_settings_page' );
        do_settings_sections( 'myplugin_settings_page' );
        submit_button();
        ?>
    <input type="hidden" name="trp-form-language" value="tr"/></form>
    &lt;?php
}

Ayar API’sini kullanarak, eklenti seçeneklerinizin güvenli bir şekilde kaydedildiğinden emin olabilirsiniz. wp_options Tabloda bulunmakta ve yönetim arayüzü WordPress tarzına uygundur.

Geliştirme en iyi uygulamalarına uyun.

Uzun vadede stabil bir şekilde çalışan, kolayca bakımı yapılabilen ve diğer eklentilerle uyumlu bir eklenti yazmak için bazı temel en iyi uygulamalara uyulması gerekmektedir.

Kodun güvenliğini sağlamak

Güvenlik, eklenti geliştirmede en önemli hususlardan biridir. Tüm kullanıcı girdileri (URL’lerden, formlardan, çerezlerden ve veritabanlarından gelen veriler dahil) doğrulanmalı, temizlenmeli ve uygun şekilde işlenmelidir. WordPress tarafından sağlanan bir dizi fonksiyon kullanarak bu işlemleri kolayca gerçekleştirebilirsiniz. esc_htmlesc_urlsanitize_text_field Çıktıyı işlemek için kullanın. wp_verify_noncecheck_admin_referer İsteklerin geçerliliğini doğrulamak ve çapraz sitelik istek sahteciliği (CSRF) saldırılarını önlemek için.

Veritabanı sorguları yaparken, mutlaka uygun araçları ve yöntemleri kullanmalısınız. $wpdb Sınıf tarafından sağlanan metotlar (örneğin…) prepareSQL enjeksiyon saldırılarını önlemek için kullanılır. Kullanıcı girdilerini asla doğrudan SQL sorgularına eklemeyin.

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

Eklentinizin tüm dünyadaki WordPress kullanıcıları tarafından kullanılabilmesi için uluslararasılaştırma (i18n) şarttır. Bu, kullanıcıya yönelik tüm metinlerin WordPress’in çeviri fonksiyonları kullanılarak işlenmesi gerektiği anlamına gelir.

Eklentinizin baş kısmındaki yorumlarda bunu tanımlayın. Text Domain(Örneğin) my-first-plugin) ve Domain PathKodda, çevrilmesi gereken tüm metinler için aşağıdaki yaklaşımı kullanın: __() Tabii ki, lütfen metni bana verin. Ne çevirmemi istediğinizi belirtin ve çeviriyi alın. _e() Tabii ki! Lütfen metni bana verin ve çevirisini yapayım. _n() Tekil ve çoğul formları işleme.

Örnek:$text = __(‘Hello World’, ‘my-first-plugin’);Daha sonra, Poedit gibi araçları kullanarak bunu oluşturabilirsiniz. .pot Şablon dosyası, çevirmenlerin kullanımı için hazırlanmıştır. .po.mo Dosya: Çeviri dosyasını eklentinin kök dizinine koyun. /languages Klasörü seçtiğinizde, WordPress web sitesinin diline göre ilgili çevirileri otomatik olarak yükler.

Kod optimizasyonu ve performans değerlendirmesi yapmak

Performansı düşük eklentiler, tüm web sitesinin yavaşlamasına neden olabilir. Her sayfa yüklendiğinde gereksiz miktarda kodun çalıştırılmasından kaçınılmalıdır. Yalnızca arka planda kullanılacak betikler ve stiller, koşullu ifadeler aracılığıyla (örneğin…) yüklenmelidir. is_admin()Yalnızca arka planda yüklenir; ön uç kaynakları ise şu yolla sağlanır: wp_enqueue_script()wp_enqueue_style() Uygun kancalarda (örneğin…) wp_enqueue_scriptsYüklemek için sıraya girin.

Zaman alıcı işlemler veya harici API çağrıları için, WordPress’in Transients API’sini kullanmayı düşünebilirsiniz.set_transientget_transientBu işlem, verilerin önbelleğe alınmasını sağlar. Aynı zamanda, eklentinin devre dışı bırakıldığında veya silindiğinde gerekli işlemlerin yapılabilmesini de garanti eder. uninstall.php Kendi oluşturduğunuz veritabanı tablolarını ve seçeneklerini temizleyin; ancak bu işlemi dikkatli bir şekilde yapın ve kullanıcılara verilerin silinip silinmeyeceği konusunda bir seçenek sunun.

Hata Ayıklama, Test Etme ve Yayınlama

Eklentinizi kullanıcılara teslim etmeden önce, kapsamlı bir şekilde hata ayıklama, test etme ve hazırlık yapmak başarının anahtar adımlarıdır.

WordPress Ayarlar Sayfası > Geliştirme > Hata Ayıklama Araçları

Geliştirme aşamasında, WordPress’in hata ayıklama (debugging) modunun açılması şiddetle tavsiye edilir. wp-config.php Dosyada ayarlar yapılmıştır. define(‘WP_DEBUG’, true);Bu, tüm PHP hatalarının, uyarılarının ve bildirimlerinin görüntülenmesini sağlayacak ve sorunları hızlı bir şekilde tespit etmenize yardımcı olacaktır. Ayrıca bunları aynı anda etkinleştirebilirsiniz. WP_DEBUG_LOG Hataları bir günlük dosyasına kaydedin veya bunu etkinleştirin. SCRIPT_DEBUG Sıkıştırılmamış JavaScript ve CSS dosyalarını yükleyerek hata ayıklamayı kolaylaştırın.

Eklentinin yayınlanmasıyla ilgili bilgileri hazırlıyorum.

Eğer eklentiyi resmi WordPress.org eklenti dizinine göndermeyi planlıyorsanız, bir dizi belge hazırlamanız gerekecektir. Bunlar arasında ayrıntılı bir… readme.txt Dosyanın formatı WordPress’in gereksinimlerine uygun olmalı; dosyada açıklama, kurulum adımları, sık karşılaşılan sorunlar, güncelleme kayıtları gibi bilgiler bulunmalıdır. Ayrıca yüksek kaliteli afiş ve ikon resimleri sağlamanız ve eklentinin SVN deposu için bir açıklama yazmanız gerekmektedir.

Kod seviyesinde, uluslararasılaştırma hazırlıklarınızın tamamlandığından emin olun ve tüm kodun WordPress kodlama standartlarına uygun olup olmadığını dikkatlice kontrol edin. Bu kontrolü, yerel olarak PHP_CodeSniffer aracını ve WordPress kodlama standartları kurallarını kullanarak yapabilirsiniz.

Çapraz ortam uyumluluk testleri yapmak

Yayınlamadan önce, eklentinizi çeşitli ortamlarda test etmeniz gerekmektedir. Bu, farklı sürümlerdeki WordPress’leri (özellikle mevcut sürüm ve bir önceki ana sürüm), farklı PHP sürümlerini (örneğin PHP 7.4, 8.0, 8.1), farklı veritabanı sürümlerini (MySQL/MariaDB) ve popüler temalarla ve diğer eklentilerle olan uyumluluğu içerir. Eklentinizin etkinleştirilme, devre dışı bırakılma, ayarlama ve kullanım aşamalarında herhangi bir hata veya uyarı vermemesini sağlayın.

Özetle.

WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştürme ve bunları geniş bir ekosisteme entegre etme sürecidir. Standartlara uygun bir ana dosya oluşturarak başlayın, ardından net bir dosya dizini yapısı oluşturun ve eylem (action) ile filtre (filter) hook’larının temel etkileşim mekanizmalarını derinlemesine anlayın. Kısa kodlar (shortcodes), ayar sayfaları gibi belirli özellikleri gerçekleştirirken, güvenliği (doğrulama, kod dönüştürme, saldırılara karşı koruma) ve uluslararasılaştırmayı (internationalization) kodlama alışkanlıklarınızın bir parçası haline getirmelisiniz. Performansı optimize etmek, kaynakları doğru bir şekilde yönetmek ve hata ayıklama araçlarını kullanmak gibi en iyi uygulamalara (best practices) uyun. Son olarak, kapsamlı çaplı testler ve eksiksiz bir yayın hazırlığı sayesinde, oluşturduğunuz eklenti dünya genelindeki WordPress kullanıcılarına stabil ve güvenli bir şekilde hizmet verebilir. Resmi kılavuzları ve topluluk kaynaklarını sürekli öğrenmek, eklenti geliştirme becerilerinizi sürekli geliştirmenin anahtarıdır.

Sıkça Sorulan Sorular.

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

Sağlam bir PHP programlama temeline sahip olmanız gerekiyor; çünkü eklentinin temel mantığı esas olarak PHP ile yazılmıştır. Ayrıca, kullanıcı arayüzlerini ve etkileşimlerini oluşturmak için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. En önemlisi, WordPress’in temel yapısına aşina olmanız gerekmektedir; bu yapı içinde eklentilerin nasıl çalıştığına dair kavramlar (eylemler ve filtreler), tema döngüleri, veritabanı yapısı ve çeşitli temel fonksiyonlar ile sınıfların kullanımı yer almaktadır.

Eklentimin diğer eklentilerle çakışmasını nasıl önleyebilirim?

Tüm fonksiyonlarınız, sınıflarınız, sabitleriniz, eylem/filtre etiketleriniz ve seçenek adlarınıza benzersiz bir önek eklemek, çakışmaları önlemenin en etkili yoludur. Genel adlar kullanmayın, örneğin… add_user()$countAksine, eklentinizle ilgili bir önek kullanmalısınız, örneğin… myplugin_add_user()$myplugin_countKodunuzu sınıflar veya ad alanları içinde kapsamlı bir şekilde paketlemek de iyi bir uygulamadır. Ayrıca, kuyruk işleme betiklerinde ve stil ayarlarında benzersiz tanımlayıcılar (handleler) kullanın ve kaynakların ihtiyaç duyulduğunda yüklenmesini sağlayın.

Plugin verilerini nerede saklamalıyım?

Basit yapılandırma seçenekleri için, WordPress’in Options API’sini kullanabilirsiniz.add_option, get_option, update_optionVerileri şu şekilde saklayın: wp_options Tablo, en basit ve en standart yöntemdir. Eğer büyük miktarda yapılandırılmış özel veriyi (örneğin ürünler, siparişler vb.) saklamaya ihtiyacınız varsa, özel bir veritabanı tablosu oluşturmalısınız. $wpdb Nesne ve eklenti etkinleştirildiğinde bunu kullanarak… dbDelta() Fonksiyonlar, tablo yapılarını oluşturmak ve güncellemek için kullanılır; bu da farklı veritabanı sürümleri arasında uyumluluğu sağlar.

Eklenti silindikten sonra, tarafından oluşturulan verileri nasıl temizleyebilirim?

WordPress, iki ana yöntem sunmaktadır. İlk yöntem, bunları kullanmaktır. register_uninstall_hook() Fonksiyon, bir kaldırma işlemi için bir “hook” (düğüm) kaydeder. İkinci ve daha önerilen yöntem ise, eklentinin ana dizininde bağımsız bir dosya oluşturmaktır. uninstall.php Dosya. Bu dosyada, WordPress içinden bir çağrı yapıldığını kontrol etmeniz gerekiyor. WP_UNINSTALL_PLUGIN Önce sabit değerler belirlenir, ardından özel seçeneklerin silinmesi işlemi gerçekleştirilir (kullanılarak). delete_optionTemizleme işlemleri arasında veritabanı tablolarının silinmesi, özel veritabanı yapılarının temizlenmesi ve benzeri işlemler bulunmaktadır. Lütfen unutmayın ki, eklentinin açıklamasında kullanıcılara hangi verilerin silineceğinin mutlaka belirtilmesi gerekmektedir.