WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun

3 dakika okuma.
2026-03-15
2026-06-03
2,091
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 Hazırlanması

Kod yazmaya başlamadan önce, stabil ve verimli bir yerel geliştirme ortamı oluşturmak çok önemlidir. Bu, sadece testleri güvenli bir şekilde yapmanızı sağlamakla kalmaz, aynı zamanda gerçek sunucu yapılandırmalarını da simüle eder. WordPress eklenti geliştirme için, XAMPP, MAMP veya Local by Flywheel gibi yerel sunucu yazılımlarını kullanmanızı şiddetle öneririz. Bu yazılımlar, bilgisayarınızda Apache, PHP ve MySQL içeren bir ortam kolayca kurmanıza olanak tanır.

Bundan sonra, bir kod editörüne ihtiyacınız olacak. Visual Studio Code, PhpStorm veya Sublime Text, sözdizimi vurgulama, kod önerileri ve hata ayıklama özellikleri sunan mükemmel seçeneklerdir ve geliştirme verimliliğinizi büyük ölçüde artırabilirler. Bu araçları indirip yapılandırdıktan sonra, en yeni sürümdeki WordPress çekirdek dosyalarını indirin ve bunları yerel sunucunuza yükleyin.

Ayrıca, eklenti projenizin kök dizininde bir sürüm kontrol sistemi (örneğin Git) başlatmanız önerilir.git initBu komut, yeni bir depo oluşturmanıza yardımcı olur; bu da kod değişikliklerini takip etmenizi, hataları geri almanızı ve gelecekteki ekip işbirliğini kolaylaştırır. Aynı zamanda, WordPress’in hata ayıklama modunu (debugging mode) etkinleştirmeyi de düşünebilirsiniz.wp-config.phpDosyada,WP_DEBUGSabit, olarak ayarlandı.trueBu, geliştirme sürecinde PHP hatalarını ve uyarılarını görüntüleyerek sorunların hızlı bir şekilde tespit edilmesine yardımcı olacaktır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Kendi Eklentinizi Oluşturun

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

Standart bir WordPress eklentisi, belirli bir klasör yapısına ve dosya yapısına sahiptir. Öncelikle, WordPress’in kurulum dizininin altına gidin…wp-content/pluginsKlasör: Burada, yakında geliştireceğiniz eklenti için yeni bir klasör oluşturun. Klasör adı kısa, benzersiz ve eklentinin işlevini açıklayıcı olmalıdır. Örneğin:my-first-plugin

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

Eklenti ana dosyasının yazımı

Bu klasör içinde, “” adında bir dosya oluşturun..phpEk dosya uzantılı dosyalar, genellikle bir eklentinin ana dosyası olarak kullanılır ve aynı zamanda klasörün adıyla da adlandırılır. Örneğin:my-first-plugin.phpBu dosya, bir eklentinin giriş noktasıdır ve üst kısmındaki eklenti başlık yorumları zorunludur; bu yorumlar WordPress’e eklentinin meta bilgilerini sağlar.

<?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 yorumda,Plugin NameBu, zorunlu olan tek bilgidir; diğer bilgiler ise kullanıcıların eklentinizi arka planda tanımasına yardımcı olur. Bu adımı tamamladıktan sonra, aslında etkinleştirilebilecek bir eklentiniz olmuş olur. WordPress arka paneline giriş yapın ve “Eklentiler” menüsüne gidin; orada “İlk Eklentim” adlı bir eklenti görmelisiniz, ancak şu an herhangi bir özelliği yoktur.

Plugin özelliklerinin oluşturulması ve sınıf kapsüllemesi

Kodun netliği ve sürdürülebilirliği için, kodu nesne yönelimli bir yaklaşımla düzenlemeniz önerilir. Ana dosyada veya ayrı bir dosyada, eklentinin tüm işlevlerini kapsayan bir sınıf tanımlayın.

if ( ! class_exists( 'My_First_Plugin' ) ) {
    class My_First_Plugin {
        public function __construct() {
            // 构造函数,用于初始化动作和过滤器
            add_action( 'init', array( $this, 'init' ) );
        }

public function init() {
            // 插件初始化时执行的操作
            // 例如:注册短代码、自定义文章类型等
        }
    }

// 实例化插件类
    new My_First_Plugin();
}

Bu yapı, işlevlerinizi bağımsız bir ad alanı içinde düzenler ve diğer eklentilerin veya temaların fonksiyon adlarıyla çakışmaları önler.

Tavsiye edilen okuma WordPress Eklenti Geliştirme: Sıfırdan Başlayarak Özel İşlev Modülleri Oluşturma

Çekirdek işlevin gerçekleştirilmesi: Eylemler ve filtreler

WordPress eklentilerinin güçlü yanı, Etkileşim Noktaları (Hooks) sistemi olup, bu sistem Eylemler (Actions) ve Filtreler (Filters)’den oluşmaktadır. Bunları anlamak ve kullanabilmek, eklenti geliştirmenin temelidir.

Eylem kancalarını kullanarak işlevler ekleyin.

Eylem kancaları, WordPress’in belirli noktalarında kendi kodunuzu eklemenize olanak tanır. Örneğin, bir makalenin içeriğinin ardından otomatik olarak bir metin parçası eklemek istiyorsanız bunu kullanabilirsiniz.the_contentFiltre (bu özel bir “eylemdir”). Daha tipik eylemler ise…wp_footerSayfa sonuna içerik eklemek için kullanılır.

public function __construct() {
    add_action( 'wp_footer', array( $this, 'add_custom_footer_text' ) );
}

public function add_custom_footer_text() {
    echo '<p style="text-align: center;">Okuduğunuz için teşekkür ederim! Bu içerik, ilk eklentim tarafından oluşturulmuştur.</p>';
}

Bu örnekte,add_custom_footer_textBu yöntem, her sayfanın alt kısmında (footer’da) çağrılacak ve özelleştirilmiş bir metin parçası çıktısı verecektir.

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

Verileri filtre kancaları kullanarak değiştirme

Filtre kancaları, verilerin veritabanına veya tarayıcıya gönderilmeden önce değiştirilmesi için kullanılır. Yaygın bir örnek, makale başlıklarının değiştirilmesidir. Bunu yapmak için filtre kancalarından yararlanabiliriz.the_titleFiltreler.

public function __construct() {
    add_filter( 'the_title', array( $this, 'customize_title' ) );
}

public function customize_title( $title ) {
    // 只在主循环中且不是后台管理界面时修改
    if ( ! is_admin() && in_the_loop() ) {
        return '📖 ' . $title;
    }
    return $title;
}

Bu filtre fonksiyonu, orijinal başlığı bir parametre olarak alır ve değiştirilmiş başlığı geri döndürür. Buradaki mantık, ön tarafta gösterilen makale başlıklarının önüne bir kitap emojisi eklemektir.

Eklentilerin uluslararasılaştırılması ve yapılandırılabilir seçenekler

Eklentinin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) adımı kaçınılmazdır. Aynı zamanda, kullanıcılara eklentinin davranışlarını ayarlamaları için bir arka plan ayar sayfası sunmak, eklentinin profesyonelliğini büyük ölçüde artırabilir.

Tavsiye edilen okuma WordPress eklenti geliştirmeye yeni başlayanlar için bir rehber: ilk işlevsel eklentinizi sıfırdan oluşturma.

Metin çevirme özelliğinin desteklenmesini sağlayın.

WordPress, uluslararasılaştırma (internationalization) işlemlerini GNU gettext teknolojisi kullanarak gerçekleştirir. Eklentilerin ön yüzünde (frontend) veya arka planda (backend) kullanıcılara gösterilen tüm metinlerin, belirli fonksiyonlar kullanılarak sarılması gerekmektedir.

Öncelikle, ana dosyanın eklenti başlığında zaten tanımlamış bulunuyoruz.Text DomainDomain PathDaha sonra, başlatma fonksiyonunda metin alanını yükleyin.

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.
public function init() {
    load_plugin_textdomain(
        'my-first-plugin',
        false,
        dirname( plugin_basename( __FILE__ ) ) . '/languages/'
    );
}

Daha sonra, kodda çıktı metninin olacağı yerlerde çeviri fonksiyonunu kullanın. Örneğin, önceki sayfa altı metninde:

`echo '`'<p style="text-align: center;">' . esc_html__( '感谢阅读!本内容由我的第一个插件生成。', 'my-first-plugin' ) . '</p>';

esc_html__()Bu fonksiyon, metni çevirir ve güvenliği sağlamak için HTML escape işlemleri uygular. Çevirmenler bu fonksiyonu kullanabilirler..po.moDosyalar, eklentinizin farklı dil sürümlerini sağlamak için kullanılır.

Arka plan ayarları sayfası oluşturun.

WordPress’in Settings API’sini kullanarak eklentiniz için standart ve güvenli bir ayar sayfası oluşturabilirsiniz. Bu işlem genellikle birkaç adımdan oluşur: Ayarların kaydedilmesi, ayar bölümlerinin ve alanlarının eklenmesi, ve menü sayfalarının oluşturulması.

public function __construct() {
    add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
    add_action( 'admin_init', array( $this, 'settings_init' ) );
}

public function add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件', // 菜单标题
        'manage_options', // 权限
        'my-first-plugin', // 菜单slug
        array( $this, 'settings_page_html' ) // 回调函数,用于输出页面HTML
    );
}

public function settings_init() {
    register_setting( 'my_first_plugin_settings', 'my_first_plugin_options' ); // 注册一组设置

add_settings_section(
        'my_first_plugin_section',
        __( '基本设置', 'my-first-plugin' ),
        null,
        'my-first-plugin'
    );

add_settings_field(
        'footer_text',
        __( '自定义页脚文本', 'my-first-plugin' ),
        array( $this, 'footer_text_field_html' ),
        'my-first-plugin',
        'my_first_plugin_section'
    );
}

public function footer_text_field_html() {
    $options = get_option( 'my_first_plugin_options' );
    ?&gt;
    <input type='text' name='my_first_plugin_options[footer_text]' value='<?php echo esc_attr( $options['footer_text'] ?? '' ); ?>'>
    <?php
}

public function settings_page_html() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?>
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form action="/tr/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_first_plugin_settings' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Şimdi, kullanıcılar “Ayarlar” -> “Benim Eklentilerim” sayfasında sayfa altı metnini yapılandırabiliyorlar.add_custom_footer_textBu yöntem, eklentinin yapılandırılabilir hale gelmesi için bu seçenekten değer alacak şekilde değiştirilebilir.

Özetle.

Bu kılavuz aracılığıyla, WordPress eklenti geliştirmenin temel adımlarını inceledik: Yerel bir ortam kurmaktan, temel dosya yapısını oluşturmaya; nesne yönelimli yöntemler kullanarak kodu düzenlemeye kadar. WordPress’in temel genişletme mekanizmaları olan eylemler (actions) ve filtreler (filters) hakkında ayrıntılı bilgi edindik ve sayfa sonuna içerik eklemek ile makale başlıklarını değiştirmek gibi pratik işlevler gerçekleştirdik. Son olarak, eklentinin profesyonelliğini ve kullanım kolaylığını artırdık; uluslararasılaştırma (internationalization) sayesinde dünya genelindeki kullanıcılara ulaşma imkanı sağladık ve Settings API’sini kullanarak güvenli bir arka plan yapılandırma arayüzü oluşturduk. Eklenti geliştirme, sürekli öğrenme ve iyileştirme gerektiren bir süreçtir. Bu temel bilgileri öğrendikten sonra, özel makale türleri (custom article types), AJAX etkileşimleri (AJAX interactions), REST API entegrasyonları gibi daha ileri seviye konuları keşfedebilir ve işlevsel, kod açısından zarif WordPress eklentileri geliştirebilirsiniz.

Sıkça Sorulan Sorular.

Eklentiler geliştirirken nesne yönelimli programlama kullanılması zorunlu mu?

Zorunlu değil, ancak şiddetle tavsiye edilir. Süreç tabanlı programlama (bir dizi fonksiyon kullanarak) işlevleri hızlı bir şekilde gerçekleştirebilir; ancak eklentilerin sayısı arttıkça kod yönetimi ve bakımı zorlaşır ve fonksiyon adları diğer eklentilerle çakışabilir. Nesne yönelimli programlama ise kodu sınıflar aracılığıyla paketler ve bu sayede daha kolay yönetilir ve bakımı yapılır.$thisDeğişkenler ve ad alanları (daha yeni PHP sürümlerinde), kodun daha iyi organize edilmesini sağlar ve orta ve büyük ölçekli eklentiler geliştirmede endüstri tarafından kabul edilen en iyi uygulamalardır.

Kullanıcı girdilerini veya veritabanından gelen verileri nasıl güvenli bir şekilde işleyebiliriz?

Sayfada bir değişkeni herhangi bir zamanda görüntülerken, mutlaka escape (kaçırma) işlemi yapılmalıdır. WordPress, bu işlem için bir dizi yardımcı fonksiyon sunar. Farklı durumlara göre farklı fonksiyonlar kullanılmalıdır: Değişken, HTML etiketlerinin içinde veya özelliklerinde görüntülenecekse belirli fonksiyonlar kullanılmalıdır.esc_html()esc_attr()JavaScript değişkeninde çıktı vermek için, alert kullanılır.wp_json_encode()esc_js()URL'de çıktı vermek için, kullanın.esc_url()Kullanıcı tarafından girilen verilere veya işlenmemiş verilere asla güvenmeyin; escape (kaçırma) işlemleri, çapraz sitelik betik (XSS) saldırılarını önlemenin anahtarıdır.

Eklentilerin WordPress resmi kataloğuna gönderilmesi için hangi şartları karşılaması gerekmektedir?

WordPress.org eklenti dizinine gönderilen eklentiler, bir dizi katı kurala uymak zorundadır. Bunlara aşağıdakiler dahildir: Eklenti kodu, GPL lisansı ile uyumlu olmalıdır; herhangi bir ücretli duvar, kod şifrelemesi veya karıştırma içermemelidir; eksiksiz uluslararası destek içermelidir; WordPress kodlama standartlarına ve belgeleme kurallarına uymalıdır; telefon numarası doğrulama, kripto para madenciliği gibi kötü niyetli eylemlerde bulunmamalıdır. Ayrıca, eklentinizin ana dosyası standart eklenti başlık bilgilerini içermelidir ve eksiksiz bir çeviri sağlamalıdır.readme.txtDosya.

Eklenti kodumu nasıl hata ayıklamalıyım?

Öncelikle, geliştirme ortamında bu özelliğin etkinleştirildiğinden emin olun.WP_DEBUGDaha karmaşık hataları ayıklamak için şunlar kullanılabilir:error_log()Fonksiyon, bilgileri sunucunun hata günlüğüne kaydeder veya başka bir yöntem kullanır.var_dump()wp_die()Değişkenlerin değerlerini kontrol etmek için (yalnızca geliştirme ortamında kullanılır). Daha verimli bir yöntem, entegre geliştirme ortamları (örneğin PhpStorm) içindeki Xdebug aracını kullanarak adım adım hata ayıklaması yapmaktır. Ayrıca, WordPress’in…WP_DEBUG_LOGWP_DEBUG_DISPLAYConstantlar, hataların log dosyasına kaydedilip kaydedilmeyeceğini veya ekranda görüntülenip görüntülenmeyeceğini kontrol edebilir.