WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – İlk Özel Eklentinizi Nasıl Oluşturacağınızı Adım Adım Öğrenin

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

Neden WordPress eklenti geliştirmeyi öğrenmeliyiz?

WordPress’in dünyanın en popüler içerik yönetim sistemi olmasının arkasında, onun güçlü genişletilebilirliği yatmaktadır. Bu genişletilebilirliğin temelini ise eklentiler oluşturmaktadır. Özel eklentiler geliştirerek, WordPress’in çekirdek kodunu değiştirmeye gerek kalmadan web sitenize hayal edebileceğiniz her türlü özelliği ekleyebilirsiniz. Bu durum, sadece çekirdek güncellemelerin güvenliğini sağlamakla kalmaz; aynı zamanda özelliklerinizin modüler hale gelmesini ve yönetilmesini, ayrıca başka bir sisteme taşınmasını da kolaylaştırır.

Eklenti geliştirme öğrenmek, sizi WordPress’te bir “kullanıcıdan” bir “yaratıcıya” dönüştürebilir. İster müşteriler için özel özellikler tasarlayın, ister belirli iş ihtiyaçlarını çözün, isterse fikirlerinizi ürün haline getirip piyasada satın; bu beceriyi elde etmek size sınırsız olanaklar sunar. Daha da önemlisi, eklenti geliştirme sürecini anlamak, diğer eklentileri kullanırken daha iyi hata ayıklama ve yeniden geliştirme yapmanıza olanak tanır.

Standart bir WordPress eklentisi, ana PHP dosyasını içeren bir klasör olarak yapılandırılmıştır. Bu ana dosya, belirli yorum satırları aracılığıyla WordPress sisteminin kendisinin varlığını bilmesini sağlar. Tüm iş mantığı – ister yeni bir araç eklemek, ister özel bir makale türü oluşturmak, ister form verilerini işlemek olsun – WordPress tarafından sağlanan çeşitli “kancalar” (hooks) aracılığıyla gerçekleştirilir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Kendi Özel Özelliklerinizi Oluşturmayı Adım Adım Öğrenin

İlk eklenti projenizi oluşturun.

Geliştirmeye başlamadan önce, yerel bir geliştirme ortamına ihtiyacınız olacak. PHP, MySQL ve Apache/Nginx içeren bir yerel sunucu kurmak için XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları kullanmanızı öneririz. WordPress’i yerel bilgisayarınıza kurarak geliştirme yapmak, çevrimiçi web sitenizi etkilemesini önleyecektir.

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

Bir eklenti (plugin) oluştururken temel dosya yapısını şu şekilde oluşturabilirsiniz:

En basit eklenti yalnızca bir dosya içerebilir. WordPress kurulum dizininize gidin ve… wp-content/plugins Klasör: Yeni bir klasör oluşturun, örneğin… my-first-pluginDaha sonra, bu klasör içinde bir ana PHP dosyası oluşturun. Dosya adı genellikle klasör adıyla aynı olur. my-first-plugin.php

Bir eklentinin meta bilgilerini içeren başlık bölümünü yazın.

Eklentinin ana dosyasında, dosyanın en üstündeki yorum bloğu çok önemlidir. Bu blok, WordPress’e eklentinin adını, açıklamasını, sürümünü, yazarını ve diğer bilgilerini bildirir. Standart bir başlık bloğu aşağıdaki gibidir:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习 WordPress 插件开发的自定义插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Dosyayı kaydettikten sonra, WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim” adlı eklentinin eklenti listesinde yer aldığını göreceksiniz ve onu etkinleştirebilirsiniz. Böylece, hiçbir özelliği olmayan ancak yapısal olarak doğru bir eklentimiz oluşturulmuş olur.

WordPress’ın Temel Mekanizmalarını Keşfedin: Hook’lar ve Filtreler

WordPress eklenti geliştirmenin temeli, “kancalar” (hooks) sistemini anlamak ve kullanmaktır. Kancalar iki türe ayrılır: Eylem kancaları (action hooks) ve filtre kancaları (filter hooks). Bunlar, WordPress’in belirli zaman noktalarında özel kodlar eklemenize veya verileri değiştirmenize olanak tanıyan mekanizmalardır.

Tavsiye edilen okuma WordPress eklenti geliştirmeye başlama kılavuzu: İlk işlevsel uzantınızı sıfırdan oluşturun.

Action hook’ların nasıl çalıştığını anlamak.

Eylem kancaları, WordPress’ün işlem akışının belirli anlarında fonksiyonlarınızı çalıştırmanıza olanak tanır. Örneğin, sayfa yüklendiğinde veya bir makale yayınlandığında. add_action() Bir fonksiyon, özel olarak oluşturduğunuz fonksiyonu bir “hook”a (bağlantı noktasına) bağlayabilir. Temel sözdizimi şu şekildedir:add_action( ‘hook_name’, ‘your_function_name’ );

Hadi bir özellik gerçekleştirelim: Web sitesinin ön yüzündeki sayfaların alt kısmında özelleştirilmiş bir mesaj gösterelim. Bunun için şunları kullanacağız: wp_footer Bu eylem hook’u.

function my_custom_footer_message() {
    echo '<p style="text-align: center; color: #666;">Bu web sitesini ziyaret ettiğiniz için teşekkür ederiz! Bu, özel bir eklenti tarafından eklenen bir alt bilgi (footer) bölümüdür.</p>';
}
add_action( 'wp_footer’, 'my_custom_footer_message’ );

Bu kodu eklentinizin ana dosyasına ekleyin. my-first-plugin.php Web sitesinin ön yüz sayfasını kaydedip yenilediğinizde, sayfanın alt kısmında bu satırı göreceksiniz.

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

Varsayılan içeriği filtreler kullanarak değiştirin.

Filtre kancaları, WordPress’in işleme sürecinde oluşturduğu verileri değiştirmek için kullanılır. Eylem kancalarından farklı olarak, filtre fonksiyonlarının bir değer döndürmesi gerekir. add_filter() Bir fonksiyon, filtreleri monte etmek için kullanılır. Örneğin, makale başlıklarının varsayılan içeriğini değiştirmek için:

function modify_post_title( $title ) {
    if ( is_single() ) {
        return '【精选】’ . $title;
    }
    return $title;
}
add_filter( ‘the_title’, 'modify_post_title’ );

Bu fonksiyon, makalelerin tek sayfa başlıklarının önüne “【Seçkin】” ön eki ekler; diğer sayfaların (örneğin ana sayfa, liste sayfaları) başlıkları ise değişmeden kalır. Eylemleri ve filtreleri birleştirerek WordPress’in neredeyse her özelliğini kontrol edebilirsiniz.

Pratik bir arka uç yönetim sayfası oluşturun.

Eklentileri kullanan kullanıcıların seçenekleri yapılandırabilmesi için, genellikle onlar için bir arka uç yönetim sayfası oluşturmamız gerekmektedir. Bu, WordPress’in yönetim menüsü API’sini kullanmayı içerir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Yüksek Özelleştirilebilir İşlev Modülleri Oluşturmak İçin Kapsamlı Bir Rehber

Yeni bir yönetim menü öğesi ekleyin.

Kullanın. add_menu_page()add_options_page() `add_page` gibi fonksiyonlar, yeni bir sayfayı WordPress arayüzünün sol menüsüne eklemenizi sağlar. “Ayarlar” (Settings) alt menüsüne bir sayfa eklemeyi örnek alalım.

Öncelikle, yönetim sayfasının HTML içeriğini renderlamak için bir fonksiyon oluşturun.

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 my_plugin_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
            // 输出设置字段和安全字段
            settings_fields( ‘my_plugin_settings’ );
            do_settings_sections( ‘my_plugin_settings’ );
            submit_button( ‘保存设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Kayıt ayarları, bloklar ve alanlar

WordPress, birçok özellik ve araç sunar. Bunlardan bazıları şunlardır: register_setting(), add_settings_section()add_settings_field() Bu API seti, ayarların standart bir şekilde işlenmesini sağlar. Güvenlik doğrulaması (Nonce) ve seçeneklerin kaydedilmesi/yüklenmesi işlemlerini otomatik olarak gerçekleştirir.

Daha sonra, bu ayarları başlatmak için bir fonksiyona ihtiyacımız var. Bu fonksiyon, belirli bir yere (modüle veya sisteme) monte edilmelidir. admin_init Kancada.

function my_plugin_settings_init() {
    // 注册一个新的设置选项组
    register_setting( ‘my_plugin_settings’, ‘my_plugin_options’ );

// 在页面中添加一个新的区块
    add_settings_section(
        ‘my_plugin_section_1’,
        ‘基础设置’,
        null, // 回调函数,用于输出区块描述,可为空
        ‘my_plugin_settings’
    );

// 在区块内添加一个字段
    add_settings_field(
        ‘my_plugin_field_text’,
        ‘欢迎语’,
        ‘my_plugin_field_text_cb’,
        ‘my_plugin_settings’,
        ‘my_plugin_section_1’,
        [
            ‘label_for’ =&gt; ‘my_plugin_field_text’,
            ‘class’ =&gt; ‘my_plugin_row’,
        ]
    );
}
add_action( ‘admin_init’, ‘my_plugin_settings_init’ );

// 字段的回调函数,用于输出字段的 HTML
function my_plugin_field_text_cb( $args ) {
    $options = get_option( ‘my_plugin_options’ );
    ?&gt;
    <input type="text" id="<?php echo esc_attr( $args[‘label_for’] ); ?>"
           name="my_plugin_options[<?php echo esc_attr( $args[‘label_for’] ); ?>]"
           value="<?php echo esc_attr( $options[ $args[‘label_for’] ] ?? ‘’ ); ?>">
    <p class="“description”">Bu metin, web sitesinin ana sayfasında görüntülenecektir.</p>
    &lt;?php
}

Sayfa bağlantısını menüye ekleyin.

Son olarak, kullanın. add_options_page() Bu sayfayı “Ayarlar” menüsüne ekleyin.

function my_plugin_add_settings_page() {
    add_options_page(
        ‘我的插件设置’, // 页面标题
        ‘我的插件’, // 菜单标题
        ‘manage_options’, // 所需能力
        ‘my-plugin-settings’, // 菜单别名
        ‘my_plugin_settings_page_html’ // 渲染页面的回调函数
    );
}
add_action( ‘admin_menu’, ‘my_plugin_add_settings_page’ );

Şimdi, eklentiyi aktive ettikten sonra, WordPress arayüzündeki “Ayarlar” menüsünde “Eklentilerim” seçeneğini bulabilirsiniz. Buna tıkladığınızda, bir metin alanı içeren bir ayar sayfası açılacaktır. Buraya hoş geldiniz mesajınızı girip kaydedebilirsiniz. Daha sonra, bu ayarları istediğiniz zaman değiştirebilirsiniz. get_option( ‘my_plugin_options’ ) Bu değeri ön taraftan alın ve kullanın.

Eklentinin ön yüz (kullanıcı arayüzü) işlevlerinin gerçekleştirilmesi ve güvenlik önlemlerinin alınması

Eklentilerde ön uç (frontend) işlevlerini gerçekleştirirken güvenlik en önemli faktördür. Kullanıcıların girdiği verilere asla güvenmeyin; bu verilerin doğrulanması, temizlenmesi ve uygun şekilde işlenmesi gerekir.

Diyelim ki, arka planda yapılan ayarlamalarda saklanan “karşılama mesajını” kullanmak ve bunu web sitesinin ana sayfasının üst kısmında göstermek istiyoruz. Öncelikle, bu seçeneği veritabanından almalıyız ve ardından güvenli bir şekilde ekrana yazdırmalıyız.

function display_frontend_greeting() {
    // 1. 获取数据
    $options = get_option( ‘my_plugin_options’ );
    $greeting = $options[‘my_plugin_field_text’] ?? ‘’;

// 2. 如果内容为空,则不输出任何东西
    if ( empty( $greeting ) ) {
        return;
    }

// 3. 在输出前进行清理和转义
    $safe_greeting = esc_html( $greeting );

// 4. 输出到前端(这里假设只在首页显示)
    if ( is_front_page() ) {
        echo ‘<div class="“my-plugin-greeting”"><p>’. $safe_greeting . ‘</p></div>’;
    }
}
add_action( ‘wp_body_open’, ‘display_frontend_greeting’ );

Burada biz şunu kullandık: esc_html() Bir fonksiyon, HTML karakterlerini escape ederek çapraz sitelik betik saldırılarını (XSS) önler. Ayrıca verilerin boş olup olmadığını kontrol ediyoruz ve koşullu etiketler (conditional tags) kullanıyoruz. is_front_page() Çıktının yerini kontrol etmek için. Fonksiyonu şu yere monte edin: wp_body_open Kancalar, içeriğin sayfa body etiketinin başladığı anda hemen görüntülenmesini sağlar.

Ayrıca, eklenti geliştirme sürecinde uluslararasılaştırma (internationalization) da önemli bir uygulamadır. Bunu gerçekleştirmek için… __()_e() Çeviri fonksiyonlarını kullanmak ve eklentinin metin alanını (Text Domain) doğru bir şekilde ayarlamak, eklentinizin herhangi bir dile çevrilmesini sağlar. Daha önceki eklenti başlık meta bilgilerinde bunu zaten tanımlamıştık. Text Domain: my-first-pluginKodda bunu şu şekilde kullanmalısınız:

echo esc_html__( ‘Hello, World!’, ‘my-first-plugin’ );

Özetle.

Bu makalenin uygulamaları sayesinde, basit ancak tam bir WordPress eklenti geliştirme sürecini tamamladık. Eklentinin temel dosya yapısını ve meta bilgilerini oluşturarak başladık ve ardından WordPress’in temel mekanizmalarından biri olan “kancalar sistemi”ne (hook system) derinlemesine girdik. Eylemler (actions) ve filtreler (filters) kullanarak program akışını kontrol ettik ve verileri değiştirdik. Daha sonra, kullanıcıların eklenti ayarlarını yapılandırabilmesi için özel alanlar içeren bir arka uç yönetim sayfası oluşturduk ve bu ayarları web sitesinin ön yüzüne güvenli bir şekilde aktardık.

Bu süreç, eklenti geliştirmenin birkaç kritik yönünü kapsamaktadır: dosya organizasyonu, hook’ların kullanımı, arka plan arayüzlerinin oluşturulması, seçenek yönetimi ve ön uç veri güvenliğinin sağlanması. Unutmayın ki, mükemmel bir eklenti sadece güçlü özelliklere sahip olmakla kalmamalı; aynı zamanda güvenli, verimli ve kolayca bakımı yapılabilir olmalıdır. Ardından, eklentinize daha fazla özellik eklemeyi deneyebilirsiniz; örneğin özelleştirilmiş makale türleri, kısa kodlar, araçlar veya REST API uç noktaları gibi. Bu sayede WordPress eklenti geliştirme konusundaki bilgilerinizi sürekli derinleştirebilirsiniz.

Sıkça Sorulan Sorular.

Bir eklenti yalnızca bir PHP dosyası içerebilir mi?

Evet, en basit WordPress eklentileri yalnızca bir PHP dosyasından oluşabilir; yeter ki bu dosya doğru eklenti başlık bilgilerini (plugin header comments) içersin. Ancak daha karmaşık işlevlere sahip eklentiler için, kodun okunabilirliğini ve sürdürülebilirliğini artırmak amacıyla kodun farklı dosyalarda organize edilmesi önerilir. Örneğin, arka plan işlevleri (backend functions), ön yüz işlevleri (frontend functions) ve ortak fonksiyonlar (common functions) ayrı ayrı dosyalarda tutulabilir.

Kendi geliştirdiğiniz eklentiyi nasıl hata ayıklarsınız?

WordPress’ın hata ayıklama (debugging) modunun açılmasını öneririz. Bu mod, sitenizin kök dizininde bulunan bir dosya ile etkinleştirilir. wp-config.php Dosyada, WP_DEBUG Sabit, olarak ayarlandı. trueBöylece, PHP hataları, uyarıları ve bildirimleri hepsi görüntülenecektir. Aynı zamanda, bunları bir arada kullanmak da mümkündür. error_log() Fonksiyon, hata ayıklama bilgilerini sunucunun hata günlüğüne yazar veya JavaScript hata ayıklaması için tarayıcı geliştirici araçlarının konsolunu kullanır.

Eklentiler geliştirirken, uyulması gereken bazı güvenlik kuralları vardır. Bunlar şunlardır:

Öncelikli kural şudur: Hiçbir zaman kullanıcı tarafından girilen verilere güvenmeyin. Tüm gelen verileri şüpheyle değerlendirin. $_GET$_POST$_COOKIE Alınan verileri doğrulayın ve temizleyin. Verileri HTML formatında çıkışa dökerken bunu kullanın. esc_html()esc_attr()esc_url() Bu fonksiyonlar kullanılarak karakterler escape edilmelidir. Veritabanı sorguları oluşturulurken mutlaka bunları kullanın. $wpdb->prepare() SQL enjeksiyonu saldırılarını önlemek için çeşitli yöntemler bulunmaktadır. Ayrıca, mevcut kullanıcının yetkilerini de kontrol etmek önemlidir (örneğin: current_user_can()Bu da kesinlikle atlanmaması gereken bir adımdır.

WordPress’in resmi eklenti dizinine eklentimi nasıl gönderebilirim?

Öncelikle, eklentinizin WordPress’in kodlama standartlarına ve GPL lisansına tam olarak uyduğundan emin olun. WordPress.org adresini ziyaret edip bir hesap oluşturmanız gerekiyor; ardından eklentinizin sıkıştırılmış dosyasını eklenti gönderim sayfasından yükleyin. Resmi ekip, kod kalitesini, güvenliğini, dokümantasyonunu ve uygunluğunu manuel olarak inceleyecektir. İnceleme başarılı olduktan sonra, eklentiniz resmi kataloga eklenir, otomatik güncelleme desteği alır ve dünya genelindeki kullanıcılar tarafından aranıp yüklenebilir hale gelir.