WordPress eklenti geliştirme eksiksiz rehberi: sıfırdan ileri düzey uygulama eğitimine kadar.

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

İster web sitenize belirli özellikler eklemek istersiniz, ister fikirlerinizi paylaşılabilir ürünlere dönüştürmek isteyin; WordPress eklenti geliştirme öğrenmek son derece değerli bir beceridir. Kendi eklentilerinizi geliştirerek web sitesi işlevlerinin tam kontrolünü elde edebilir, temaların sınırlarını aşabilir ve sonunda geniş WordPress ekosistemine katkıda bulunabilirsiniz. Bu rehber, geliştirme ortamını kurmaktan ileri düzey eklentileri yayınlamaya kadar olan tüm süreci adım adım size gösterecek ve güçlü, güvenli ve bakımı kolay eklentiler oluşturmak için ihtiyacınız olan tüm bilgileri öğrenmenizi sağlayacaktır.

Geliştirme ortamının kurulması ve projenin başlatılması

İlk satır kodu yazmadan önce, verimli bir geliştirme ortamı oluşturmak çok önemli bir ilk adımdır. Doğru şekilde yapılandırılmış bir ortam, geliştirme verimliliğinizi ve hata ayıklama deneyiminizi büyük ölçüde artırabilir.

Yerel Geliştirme Ortamı Ayarları

Yerel sunucu ortamı için Local by Flywheel, XAMPP veya Laragon gibi yazılım paketlerinin kullanılmasını öneririz. Bu araçlar, PHP, MySQL ve web sunucusunu (genellikle Apache veya Nginx) tek tıklamayla kurmanıza olanak tanır. Kullandığınız PHP sürümünün resmi olarak önerilen sürümlerle uyumlu olduğundan emin olun; WordPress çekirdek ekibi genellikle stabil PHP sürümlerinin kullanılmasını tavsiye eder.

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

Bundan sonra, bir kod editörüne ihtiyacınız olacak. Visual Studio Code ve PhpStorm, geliştiriciler arasında popüler seçeneklerdir. VS Code hafif ve genişletilebilir özelliklere sahiptir; PHP Intelephense, WordPress kod parçaları gibi eklentileri yükleyerek neredeyse bir IDE (Geliştirici Ortamı) deneyimi elde edebilirsiniz. PhpStorm ise daha güçlü kod analizi, hata ayıklama ve yeniden yapılandırma araçları sunar.

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

İlk eklentinin temel yapısını oluşturma

Bir WordPress eklentisi esasen, WordPress yazılımının kendisinin dışında bulunan bir uygulamadır. wp-content/plugins/ Katalogda, en az bir PHP ana dosyası içeren klasörler bulunmaktadır. En basit eklentiyi oluşturarak başlayalım.

Öncelikle, yerel WordPress kurulumunuzdaki eklentiler dizininin altında yeni bir klasör oluşturun, örneğin… my-first-pluginBu klasör içinde, genellikle klasör adıyla aynı olan bir ana PHP dosyası oluşturun:my-first-plugin.php

Her eklenti, standart bir Eklenti Başlık Bilgisi (Plugin Header) ile başlamalıdır; bu, WordPress’in eklentinin temel bilgilerini tanımasının bir yoludur. Açın… my-first-plugin.php Aşağıdaki kodu da ekleyin:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习的简单示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Dosyayı kaydettikten sonra, WordPress arayüzüne giriş yapın ve “Eklentiler” menüsüne gidin. “İlk Eklentim” adlı eklentinin eklenti listesinde yer aldığını görmelisiniz. Henüz herhangi bir özelliği olmasa da, etkili bir WordPress eklentisi oluşturmayı başardınız.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Ticari Sınıf Eklentiler Oluşturma

Eklenti Çekirdek Yapısı ve Hook Mekanizması

WordPress’in “Kancalar” (Hooks) sistemini anlamak, eklenti geliştirmenin temel taşlarından biridir. Kancalar, kodunuzun belirli zaman noktalarında WordPress’in çekirdek işlemlerine dahil edilmesine olanak tanır; böylece işlevler değiştirilebilir veya yeni işlevler eklenir.

Action Hook’lar ve Filter Hook’lar

WordPress, iki ana türde hook (düğüm) sunar: Eylemler (Actions) ve Filtreler (Filters).

Eylem kancaları, belirli olaylar meydana geldiğinde kod çalıştırmanıza olanak tanır; örneğin bir makale yayınlamak, bir kullanıcının giriş yapması veya yönetim arayüzünün yüklenmesi gibi. Geri dönüş değeri beklenmez; sadece belirli bir işlemi gerçekleştirmek için kullanılır. add_action() Bu fonksiyon, kendi fonksiyonunuzu bir eylem kancasına (action hook) bağlamak için kullanılı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

Filtre kancaları, verileri değiştirmek için kullanılır. Veriler kullanılmadan önce (örneğin, veritabanına kaydedilmeden veya bir sayfada gösterilmeden önce) onları değiştirmenize olanak tanır. Filtre fonksiyonunun değiştirilmiş değeri döndürmesi gerekir. add_filter() Bu fonksiyon, kendi fonksiyonunuzu bir filtre kancasına (filter hook) bağlamak için kullanılır.

Basit bir işlevi gerçekleştirin.

Hadi, eklentiye ilk gerçek özelliği ekleyelim: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyelim. Bunun için şu yöntemi kullanacağız… the_content Bu filtre hook’u.

Senin… my-first-plugin.php Dosya başlığındaki yorum bloğunun ardından aşağıdaki kodu ekleyin:

Tavsiye edilen okuma Sıfırdan WordPress Eklentisi Geliştirmeyi Öğrenmek: İlk Özel Özelliğinizi Oluşturmak

// 在文章内容后添加自定义文本
function myfp_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<p><em>Okuduğunuz için teşekkür ederiz! Bu makale, 【Benim İlk Eklentim】 tarafından desteklenmektedir.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter( 'the_content', 'myfp_add_text_to_content' );

Bu kod, bir fonksiyon tanımlamaktadır. myfp_add_text_to_contentMakalenin içeriğini alır $content Bir parametre olarak kullanılır. Fonksiyonun içindeki koşul kontrolü, bu metnin yalnızca ön taraftaki tek bir makale sayfasının ana döngüsünde görüntülenmesini sağlar. Daha sonra, özelleştirilmiş metni orijinal içeriğin sonuna ekleriz ve değiştirilmiş içeriği geri döndürürüz. Son satırda… add_filter Bu fonksiyonu şu yere monte edin: the_content Filtre üzerinde.

Dosyayı kaydedin ve bir blog makalesi sayfasını yenileyin; eklenen metni makalenin sonunda görebileceksiniz.

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.

Yönetim menüsü ve ayar sayfaları oluşturun.

Mükemmel bir eklenti genellikle kullanıcılara yapılandırma seçenekleri sunmalıdır. Bu, WordPress yönetim panelinde menüler ve ayar sayfaları oluşturmayı gerektirir.

Sayfayı yönetim menüsüne ekleyin.

WordPress, yönetim kenar çubuğuna üst düzey menüler veya alt menüler eklemek için gerekli fonksiyonları sağlar. Basit bir ayar sayfası oluşturacağız. Öncelikle, add_action() Kancalar… admin_menu Bu eyleme, menüyü kaydetmek için kullanılan bir fonksiyon bağlanmıştır.

Eklentinin ana dosyasına aşağıdaki kodu ekleyin:

// 创建管理菜单
function myfp_create_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'myfp-settings',        // 菜单 Slug
        'myfp_settings_page_html', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 菜单图标(Dashicon)
        80                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myfp_create_admin_menu' );

Yapılandırma ayarları sayfası içeriğini oluşturma

Şimdi, yukarıdaki geri çağırma fonksiyonunu tanımlamamız gerekiyor. myfp_settings_page_html HTML içeriğini renderleme ayarları sayfası için getirin.

// 设置页面的 HTML 结构
function myfp_settings_page_html() {
    // 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <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
            // 输出安全字段(如 nonce)、设置节和字段
            settings_fields( 'myfp_options' );
            do_settings_sections( 'myfp-settings' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Ayarları depolamak ve doğrulamak için WordPress Settings API’sini kullanmamız gerekiyor. Bu, ayarların kaydedilmesini, ayar bölümlerinin (section) ve alanlarının (field) eklenmesini içerir. Bu ayarları başka bir fonksiyonda başlatalım ve ardından sisteme bağlayalım. admin_init Hareket açısından.

// 初始化设置
function myfp_settings_init() {
    // 注册一个设置项
    register_setting( 'myfp_options', 'myfp_options', 'myfp_options_validate' );

// 添加一个设置区域
    add_settings_section(
        'myfp_section_general',
        '常规设置',
        'myfp_section_general_html',
        'myfp-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'myfp_field_custom_text',
        '自定义显示文本',
        'myfp_field_custom_text_html',
        'myfp-settings',
        'myfp_section_general',
        [ 'label_for' =&gt; 'myfp_field_custom_text' ]
    );
}
add_action( 'admin_init', 'myfp_settings_init' );

// 设置区域的描述文本
function myfp_section_general_html() {
    echo '<p>Eklentinin temel davranışlarını yapılandırın.</p>';
}

// 文本字段的 HTML 输出
function myfp_field_custom_text_html() {
    $options = get_option( 'myfp_options' );
    $value = $options['custom_text'] ?? ''; // 使用空值合并运算符
    ?&gt;
    <input type="text" id="myfp_field_custom_text" name="myfp_options[custom_text]" value="<?php echo esc_attr( $value ); ?>" class="regular-text">
    <p class="description">Buraya girilen metin, makalenin sonunda görüntülenecektir.</p>
    &lt;?php
}

// 简单的设置验证
function myfp_options_validate( $input ) {
    $new_input = [];
    if ( isset( $input[&#039;custom_text&#039;] ) ) {
        $new_input[&#039;custom_text&#039;] = sanitize_text_field( $input[&#039;custom_text&#039;] );
    }
    return $new_input;
}

Son olarak, daha önce oluşturduğumuz şeyleri değiştirmeyi unutmayın. myfp_add_text_to_content Fonksiyonu, bu yeni ayar öğesini kullanacak şekilde ayarlayın.

function myfp_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $options = get_option( 'myfp_options' );
        $custom_text = $options['custom_text'] ?? '感谢阅读!';
        // 确保有内容才添加
        if ( ! empty( $custom_text ) ) {
            $content .= '<p><em>'`. esc_html($custom_text)`.'</em></p>';
        }
    }
    return $content;
}

Şimdi, eklentinin ayar sayfasında makalenin sonunda görüntülenen metni istediğiniz gibi değiştirebilirsiniz.

İleri Seviye Geliştirme ve En İyi Uygulamalar

Eklentilerin işlevleri giderek karmaşıklaştıkça, iyi geliştirme uygulamalarına uyulması kodun sürdürülebilirliğini, güvenliğini ve performansını sağlar.

Nesne Yönelimli Programlama ve Güvenlik

Karmaşık eklentiler için nesne yönelimli (OOP – Object-Oriented Programming) sınıf yapısını kullanmak daha iyi bir seçenektir. Bu, kodu düzenlemeye, fonksiyon adı çakışmalarını önlemeye ve yeniden kullanılabilirliği artırmaya yardımcı olur.

Basit bir sınıf yapısı örneği aşağıdaki gibidir:

class MyFirstPlugin {
    public function __construct() {
        add_action( 'init', [ $this, 'load_textdomain' ] );
        add_action( 'admin_menu', [ $this, 'create_admin_menu' ] );
        add_filter( 'the_content', [ $this, 'add_text_to_content' ] );
    }

public function load_textdomain() {
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
    }

// ... 其他方法(如前面定义的函数可以移到这里成为类的方法)...
}

// 安全地初始化插件类
if ( class_exists( 'MyFirstPlugin' ) ) {
    $myFirstPlugin = new MyFirstPlugin();
}

Güvenlik, WordPress geliştirmesinde en önemli önceliklerden biridir. Kullanıcı girdilerini her zaman doğrulayın (Validation) ve temizleyin (Sanitization), çıktıları ise uygun şekilde işleyin (Escaping). Böylece sitenizin güvenliğini artırabilirsiniz. sanitize_text_field(), esc_html(), wp_kses_post()wp_nonce_field() Bu tür WordPress yerleşik fonksiyonları…

Uluslararasılaştırma ve Performans Optimizasyonu

Eklentinizin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n – Internationalization) şarttır. Bu, belirli dil ayarlarının desteklenmesi ve içeriğin farklı dillere çevrilmesi gerektiği anlamına gelir. __()_e() Tüm kullanıcı tarafından görülebilen string’leri kapsamak için `str()` gibi fonksiyonları kullanıyoruz. Bunu sınıfın yapıcı metodunda (constructor method) zaten gerçekleştirdik. load_textdomain Bu fonksiyon, belirli bir işlemi gerçekleştirecek ve sonuçları döndürecek. init Eylem sırasında çeviri dosyası yükleniyor. Poedit gibi bir araç kullanarak çeviri dosyasını oluşturmanız gerekiyor. .pot Şablon dosyasını sağlayın ve çevirmenin bunu oluşturmasını isteyin. .mo Çeviri dosyası.

Performans açısından, eklenti kaynaklarının (örneğin CSS ve JS dosyaları) yalnızca gerekli olduğunda yüklenmesine dikkat edin. wp_enqueue_script()wp_enqueue_style() Fonksiyonlar ve doğru kancaların (hook’ların) kullanımıyla… wp_enqueue_scripts Ön yüz (frontend) için kullanılır.admin_enqueue_scripts Arka planda kullanılır. Veritabanı sorguları için, mümkün olduğunca WordPress’in önbellek API’sini (örneğin) kullanın. wp_cache_get()wp_cache_set()Zaman alıcı işlemlerin sonuçlarını önbelleğe almak için kullanılır.

Özetle.

WordPress eklenti geliştirme yolculuğu, basit bir PHP dosyasıyla başlar. Eklentilerdeki “kancalar” (Actions ve Filters) mekanizmalarını öğrenerek, WordPress’in temel işlevlerini değiştirme ve genişletme yeteneğine sahip olursunuz. Yönetim arayüzleri oluşturmak, Settings API’sini kullanarak kullanıcı ayarlarını işlemek, nesne yönelimli programlama tekniklerini uygulamak ve sıkı güvenlik önlemleri almak gibi adımlar, eklentilerinizin profesyonelliğini ve güvenilirliğini artırır. Unutmayın ki, mükemmel bir eklentinin sadece güçlü özelliklere sahip olması yeterli değildir; aynı zamanda uluslararası standartlara uygun olması, performansının optimize edilmiş olması ve kodunun düzenli bir şekilde organize edilmiş olması da gereklidir. Sürekli pratik yaparak, karmaşık ihtiyaçları karşılayan ve tüm dünyadaki WordPress topluluğu tarafından kullanılan yüksek kaliteli eklentiler geliştirebilirsiniz.

Sıkça Sorulan Sorular.

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

PHP programlama dilinin temel sözdizimini öğrenmeniz, HTML, CSS ve JavaScript’in ön uç etkileşimindeki rollerini anlamanız gerekmektedir. WordPress’in temel kavramlarına aşina olmanız – makaleler, sayfalar, kullanıcı rolleri ve veritabanı yapısı – eklentilerin sisteme nasıl entegre edildiğini anlamanız açısından çok faydalı olacaktır. HTTP istekleri ve yanıtları hakkında temel bilgilere sahip olmanız da formların ve API çağrılarının işlenmesinde yardımcı olacaktır.

Hook’lardaki (Kancalar) eylemler (Actions) ve filtreler (Filters) arasındaki fark nedir?

Eylem kancaları, belirli bir olay meydana geldiğinde kodunuzu çalıştırmak için kullanılır ve herhangi bir değer döndürmezler; amacı yalnızca “bir şey yapmaktır” (örneğin, bir e-posta göndermek veya bir günlük kaydı yapmak). Filtre kancaları ise kendilerine iletilen verileri değiştirmek için kullanılır ve fonksiyonunuz değiştirilmiş değeri döndürmelidir. Bu değişiklikler içerik, metin veya diğer değişkenlerde olabilir; örneğin, bir makale başlığını veya bir araç çubuğu içeriğini değiştirmek gibi.

Geliştirdiğim eklentinin diğer eklentilerle çakışmasını nasıl önleyebilirim?

Tüm fonksiyonlarınıza, sınıflarınıza, değişkenlerinize ve sabitlerinize benzersiz bir önek eklemek, isim çakışmalarını önlemenin en etkili yoludur. Genel isimler kullanmaktan kaçının ve eklentinizi veya şirketinizi temsil eden kısaltmaları önek olarak kullanın. Nesne yönelimli programlama kullanarak kodu sınıflar içinde paketleyin; bu, etki alanlarını da etkili bir şekilde ayırmaya yardımcı olur. Ayrıca, eklentiyi bir sayfaya bağlarken (mount hook) koşul kontrollerinin doğru olduğundan emin olun ve kodunuzun gereksiz yere yüklenmesini önleyin.

WordPress eklentimizi nasıl hata ayıklamalıyız?

Öncelikle, 'den emin olun. wp-config.php Dosyada etkinleştirildi. WP_DEBUGWP_DEBUG_LOGBu, PHP hatalarını, bildirimlerini ve uyarılarını kaydedecektir. wp-content/debug.log Dosyada. Kullanın. error_log() Fonksiyonların çıkardığı değişken değerlerini kullanarak hataları ayıklamak önemlidir. Tarayıcı geliştirici araçlarının konsolu ve ağ paneli, JavaScript ve AJAX isteklerinin hatalarının giderilmesi için çok önemlidir. Karmaşık sorunlar için Xdebug gibi profesyonel hata ayıklama araçlarını kullanmak verimliliği büyük ölçüde artırabilir.

Geliştirme işlemi tamamlandıktan sonra, eklentimi resmi kataloga nasıl yayınlayabilirim?

WordPress’in resmi geliştirici platformuna erişmeniz ve bir hesap oluşturmanız gerekiyor. “Eklenti Geliştirici Kılavuzu”nu dikkatlice okuyun ve eklentinizin tüm gereksinimleri karşıladığından emin olun; bu gereksinimler arasında kod standartları, güvenlik ve lisans (GPL ile uyumlu olması) yer alır. Eklentinizin kullanım kılavuzunu, ekran görüntülerini ve README dosyasını hazırlayın. Daha sonra, kodunuzu size atanmış resmi kod deposuna Subversion (SVN) aracılığıyla gönderin; bu işlemi yaptıktan sonra eklentinizi ilgili katalogda görebileceksiniz.