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

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

Neden kendi WordPress eklentilerinizi geliştirmelisiniz?

WordPress ekosisteminde, eklentiler web sitesinin işlevlerini genişletmenin temelini oluşturur. Piyasada binlerce eklenti bulunmasına rağmen, kendi eklentilerinizi geliştirmek benzersiz avantajlar sunar. Öncelikle, kendi ihtiyaçlarınıza tam olarak uygun özel özellikler oluşturmanıza olanak tanır; bu da genel kullanıma sunulan eklentilerin getirdiği gereksiz kod veya özelliklerden kaçınmanızı sağlar. İkincisi, kendi geliştirdiğiniz eklentileri temanınızla veya diğer özel kodlarınızla derinlemesine entegre edebilirsiniz, bu da daha yüksek uyumluluk ve performans sağlar. Ayrıca, eklentiler geliştirerek iş mantığınızı tema kodundan ayırabilirsiniz; bu, WordPress geliştirme konusunda en iyi uygulamalardan biridir. Böylece, gelecekte temanınızı değiştirdiğinizde bile temel işlevler sorunsuz bir şekilde çalışmaya devam eder ve web sitenizin bakımını kolaylaştırır.

Geliştiriciler için, eklentilerin geliştirilmesini öğrenmek, WordPress mimarisini derinlemesine anlamanın mükemmel bir yoludur. Eylem kancaları (action hooks) ile tanışacaksınız.add_actionFilter Hookadd_filterKısa kodlaradd_shortcodeBu temel kavramları öğrenmek, sadece eklentiler oluşturmanıza yardımcı olmakla kalmaz, aynı zamanda mevcut temaları ve eklentileri daha verimli bir şekilde özelleştirmenizi de sağlar.

Geliştirme öncesi ortam ayarları ve hazırlık işlemleri

İlk satır kodu yazmaya başlamadan önce, uygun bir geliştirme ortamı oluşturmak çok önemlidir. Bu sadece verimliliği artırmakla kalmaz, aynı zamanda hataları da önler.

Tavsiye edilen okuma WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Pratik Deneyimler ve Temel Teknikler Paylaşımı

Yerel geliştirme ortamını kurmak.

Yerel sunucu yazılımlarını kullanmanız önerilir; örneğin Local by Flywheel, XAMPP veya MAMP. Bu yazılımlar, bilgisayarınızda Apache, MySQL ve PHP içeren bir WordPress çalışma ortamını hızlı bir şekilde kurmanıza olanak tanır. Çevrimiçi sunuculara kıyasla, yerel geliştirme sayesinde hızlı bir şekilde test ve hata ayıklama yapabilirsiniz ve çevrimiçi web sitenizi etkileme endişesi taşımazsınız.

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

WordPress’u yerel olarak kurduktan sonra, şunları yapmanız gerekiyor:wp-content/pluginsKatalogda yeni eklentiniz için özel bir klasör oluşturun. Kısa, küçük harflerden oluşan ve boşluk içermeyen bir İngilizce isim kullanmanız önerilir; örneğin:my-first-plugin

Eklentilerin temel yapısını tanımak

En basit WordPress eklentisi, yalnızca bir ana dosyadan oluşabilir. Bu dosya, WordPress’in eklenti bilgilerini tanımasını sağlayan belirli eklenti başlık yorumlarını içermelidir. Ayrıca, genellikle doğrudan erişimi engellemek için bir güvenlik önlemine de ihtiyacınız vardır; bu, genellikle kontrol yoluyla sağlanır.ABSPATHConstantlar, belirli bir amacı gerçekleştirmek için mi tanımlanır?

Aşağıda, en basit haliyle hazırlanmış bir eklenti ana dosyası örneği bulunmaktadır; bu dosya “plugin_main.js” gibi bir isimle adlandırılabilir.my-first-plugin.phpVe az önce oluşturduğunuz klasöre yerleştirin:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习的入门级WordPress插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 */

// 防止直接访问此文件
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

Bu dosyayı içeren klasörü şuraya koyun:wp-content/pluginsDizinin ardından, WordPress arayüzündeki “Eklentiler” sayfasında bu eklentiyi görebilir ve etkinleştirebilirsiniz.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Özel İşlevler Oluşturma ve Eklenti Geliştirme

İlk temel özelliği oluşturun.

Şimdi, eklentiye bazı gerçek işlevler ekleyelim. Basit bir işlev oluşturacağız: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyecek.

Makale içeriğini filtreler kullanarak değiştirin.

WordPress, verilerin veritabanına kaydedilmesinden veya tarayıcıya gönderilmesinden önce değiştirilmesine olanak tanıyan birçok filtre kancası (Filter Hook) sunar. Makale içeriğini değiştirmek için bunları kullanabiliriz.the_contentFiltreler.

Ana eklenti dosyanızda, etkinleştirme işlemi tamamlandıktan sonra aşağıdaki fonksiyonu ve ilgili çağrıları ekleyin:

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 my_first_plugin_add_text_to_content( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $additional_text = '<p><em>Bu makaleyi okuduğunuz için teşekkür ederiz! Bu makale, “My First Plugin” tarafından desteklenmektedir.</em></p>';
        $content .= $additional_text;
    }
    return $content;
}
// 将函数挂载到‘the_content’过滤器上
add_filter( 'the_content', 'my_first_plugin_add_text_to_content' );

Bu fonksiyon öncelikle bir dizi koşul kontrolü yapar; eklenen metnin yalnızca belirli makale sayfalarında görünmesini sağlar ve ana sayfayı, arşiv sayfalarını veya diğer sayfaları etkilemez. Daha sonra, özelleştirilmiş bir HTML paragrafını orijinal içeriğin sonuna ekler.$contentDeğişkenin ardından, değiştirilmiş içeriği geri döndürür.

Basit bir yönetim ayarları sayfası oluşturun.

Kullanıcıların eklemek istedikleri metni özelleştirebilmeleri için onlara bir ayar seçeneği sunmamız gerekiyor. Bu, WordPress yönetim paneline bir menü öğesi ve ayar sayfası eklemeyi içerir.

Öncelikle, kullanın.add_actionKancalar, yönetici menüsüne bir alt menü sayfası ekler:

Tavsiye edilen okuma WordPress Eklenti Geliştirme Becerilerini Kazanın: Sıfırdan Başlayarak İlk Özel Eklentinizi Oluşturun

// 创建管理菜单
function my_first_plugin_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 所需权限
        'my-first-plugin',    // 菜单slug
        'my_first_plugin_settings_page' // 显示页面的回调函数
    );
}
add_action( 'admin_menu', 'my_first_plugin_add_admin_menu' );

Daha sonra, gösterim ayarları sayfasını görüntüleyen geri çağırma fonksiyonunu tanımlayın.my_first_plugin_settings_pageVe formun kaydetme mantığını da işleyin:

// 设置页面的HTML内容
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h2>İlk eklentim için yapılan ayarlar</h2>
        <form method="post" action="/tr/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_first_plugin_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

// 注册设置、区域和字段
function my_first_plugin_settings_init() {
    register_setting( &#039;my_first_plugin_settings_group&#039;, &#039;my_first_plugin_custom_text&#039; );

add_settings_section(
        &#039;my_first_plugin_section&#039;,
        &#039;自定义文本设置&#039;,
        null,
        &#039;my-first-plugin&#039;
    );

add_settings_field(
        &#039;my_first_plugin_text_field&#039;,
        &#039;要在文末添加的文本&#039;,
        &#039;my_first_plugin_text_field_render&#039;,
        &#039;my-first-plugin&#039;,
        &#039;my_first_plugin_section&#039;
    );
}
add_action( &#039;admin_init&#039;, &#039;my_first_plugin_settings_init&#039; );

// 渲染文本输入字段
function my_first_plugin_text_field_render() {
    $option = get_option( &#039;my_first_plugin_custom_text&#039;, &#039;感谢您阅读这篇文章!本文由“我的第一个插件”提供支持。&#039; );
    echo &#039;<textarea name="my_first_plugin_custom_text" rows="3" cols="50">' . esc_textarea( $option ) . '</textarea>';
}

Son olarak, önceki metni ekleme işlemini yapan fonksiyonu değiştirin; böylece bu işlem bir seçenekten (option) yapılacaktır.my_first_plugin_custom_textİçeriği şuradan okuyun:

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_first_plugin_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = get_option( 'my_first_plugin_custom_text', '' );
        if ( ! empty( $custom_text ) ) {
            $additional_text = '<p><em>'`. wp_kses_post($custom_text)`.'</em></p>';
            $content .= $additional_text;
        }
    }
    return $content;
}

Eklenti güvenliği, optimizasyonu ve dağıtımı için hazırlıklar

Bir eklentinin nitelikli olması için sadece düzgün çalışması yeterli değildir; aynı zamanda güvenli, verimli ve bakımı kolay olması da gerekmektedir.

Veri Doğrulama, Kod Kurtarma ve Güvenlik

Güvenlik, eklenti geliştirmenin can damarındır. Kullanıcı girdilerine veya doğrudan veritabanından alınan verilere asla güvenmeyin. Verileri sayfaya çıkardığınızda, mutlaka onları işlemelisiniz (örneğin, escape işlemi yapmalısınız). Önceki kodumuzda bunu yapmıştık.esc_textarea()Yönetim sayfasında çıktıyı escape edin ve bunu kullanın.wp_kses_post()Makale sayfalarında HTML içeriğini filtrelerken, yalnızca güvenli gönderi içerik etiketlerinin geçmesine izin verilmelidir. Form işlemleri için ise WordPress tarafından sağlanan doğrulama mekanizmaları, yetki kontrolü gibi özellikler kullanılmalıdır.sanitize_text_field()Veri temizliği için `filter`, `map`, `reduce` gibi fonksiyonlar kullanılır.

Kod Düzeni ve Performans Optimizasyonu

Eklentilerin işlevleri arttıkça, tüm kodu tek bir ana dosyada tutmak yönetimi zorlaştırır. İyi bir uygulama, kodu işlevlere göre farklı dosyalara ayırmaktır. Örneğin, şunları yapabilirsiniz:includes/admin/Katalog, tüm yönetim arayüzüyle ilgili kodları içerir.includes/public/Katalog, ön uç (front-end) işlevsel kodlarını içerir.includes/class-*.phpSınıf tanımlarının saklandığı yer.

Performans açısından, hook’ları dikkatli bir şekilde kullanmalısınız. Hook’lar içindeki fonksiyonların yalnızca gerekli olduğunda (örneğin koşullu ifadeler aracılığıyla) çalıştırıldığından emin olun. Veritabanından okunması gereken seçenek değerleri için, özellikle ön uçta birden fazla kez kullanılacaksa, bunları global değişkenlerde saklayabilir veya nesne önbelleği kullanarak tekrarlanan veritabanı sorgularından kaçınabilirsiniz.

Eklentinizi yayınlamaya hazırlanıyorsunuz.

Eğer eklentiyi WordPress resmi eklenti dizinine yayınlamayı veya daha fazla kişinin kullanımına sunmayı planlıyorsanız, birkaç noktayı geliştirmeniz gerekecek. Öncelikle, eklentinin başlık kısmındaki açıklama bilgilerinin tam ve doğru olduğundan emin olun. İkincisi, açık ve anlaşılır bir dokümantasyon yazın.readme.txtDosya, WordPress’in resmi format gereksinimlerine uygun olarak hazırlanmalıdır. Dosyada eklentinin özellikleri, kurulum adımları, sık karşılaşılan sorunlar vb. bilgiler yer almalıdır. Son olarak, farklı PHP sürümleri, farklı WordPress sürümleri ve çeşitli temalar ile diğer popüler eklentilerle birlikte kullanıldığında uyumluluk testleri yapılmalıdır.

Özetle.

Bu kılavuz sayesinde, sıfırdan başlayarak tam özellikli ve bir yönetim arayüzüne sahip bir WordPress eklentisi oluşturma sürecini tamamladık. Eklentilerin temel yapısını, eylemleri ve filtre kancalarını kullanarak WordPress çekirdeğiyle nasıl etkileşime geçeceğimizi, yönetim sayfalarının nasıl oluşturulacağını öğrendik ve ayrıca eklenti güvenliği ile organizasyonunun önemini de kavradık. Eklenti geliştirmenin özü, WordPress’in olay tabanlı mimarisini anlamak ve özel kodunuzu doğru zamanda yerleştirmeyi öğrenmektir. Bu temel üzerine, özel makale türleri, meta veriler, REST API uç noktaları, veritabanı tabloları oluşturma gibi daha ileri seviye konuları keşfedebilir ve zamanla güçlü, profesyonel seviyede 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, nesne yönelimli programlama kavramlarını öğrenmeniz ve HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. WordPress’in temel işlemleriyle ve makaleler, sayfalar, kategoriler gibi temel kavramlarıyla aşina olmanız oldukça faydalı olacaktır. En önemlisi, WordPress’in eklentilerin WordPress ile etkileşim kurmasını sağlayan ana mekanizması olan “Eylemler (Actions) ve Filtreler (Filters)” sistemini anlamanızdır.

Eklentilerin ve temaların işlevleri arasında ne fark var ve hangisini seçmeliyim?

Temalar, web sitesinin görünümünü ve düzenini esas olarak kontrol ederken, eklentiler (plugins) yeni özellikler eklemek için kullanılır. İyi bir ilke şudur: Bir özellik görsel sunumla yakından ilgiliyse, temanın içinde yer alması daha uygundur; ancak bağımsız özellikler (örneğin iletişim formları, SEO optimizasyonu, e-ticaret) için eklentiler kullanılmalıdır. Özelliklerin eklentiler olarak geliştirilmesi, temayı değiştirdiğinizde bu özelliklerin kaybolmamasını sağlar ve bu, WordPress geliştirme sürecindeki en iyi uygulamalardan biridir.

Bir eklentide birden fazla PHP dosyası oluşturabilir miyim?

Kesinlikle mümkün; üstelik karmaşık eklentiler için bu, önerilen bir yaklaşımdır. Farklı işlevsel modülleri farklı dosyalara ayırabilir ve ardından ana eklenti dosyası aracılığıyla bunları bir araya getirebilirsiniz.require_onceinclude_onceİyi bir dosya yapısı, kodun düzenlenmesine ve takım çalışmasına yardımcı olur.

Kendi geliştirdiğim eklentiyi nasıl hata ayıklarım?

WordPress geliştirme sürecinde sıkça kullanılan hata ayıklama yöntemi, geliştirme modunun (debug mode) etkinleştirilmesidir.WP_DEBUGSitenin ilgili bölümünde bunu yapabilirsiniz.wp-config.phpDosyada,define( 'WP_DEBUG', true );Bu, PHP hatalarını, uyarılarını ve bildirimlerini ekranda gösterecektir. Daha güvenli bir yöntem, her ikisini de aynı anda ayarlamaktır.WP_DEBUG_LOGtrueHataları kaydedin.wp-content/debug.logDosyada bulunuyor. Ayrıca, tarayıcı geliştirici araçlarını ve sorgu izleyicisi (Query Monitor) gibi hata ayıklama eklentilerini kullanmak da verimliliği büyük ölçüde artırabilir.

Eklentimin çok eski WordPress sürümleriyle de uyumlu olması gerekiyor.

Bu, hedef kullanıcılara bağlıdır. Genellikle, en azından mevcut ana sürümün ilk iki sürümüyle uyumlu olmanız önerilir. Sürüm dağılımını öğrenmek için WordPress’in resmi istatistiklerine bakabilirsiniz. Kodda, koşullu ifadeler kullanabilirsiniz.function_exists()Bir fonksiyonun veya sınıfın kullanılabilir olup olmadığını kontrol ederek geriye dönük uyumluluk sağlanır. Eklentide…readme.txtDosyada, testten geçen WordPress sürümünün açıkça belirtilmesi gerekmektedir.