WordPress Eklenti Geliştirmeyi Sıfırdan Nasıl Öğrenirsiniz: Kapsamlı Rehber ve Pratik Eğitim Kursu

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

WordPress eklentilerinin temel yapısını anlamak

Geliştirmeye başlamadan önce, WordPress eklentilerinin temel kavramlarını ve çalışma şeklini anlamak zorundasınız. Bir eklenti, esasen WordPress’in temel işlevlerini genişletebilen PHP dosyalarından oluşan bir koleksiyondur ve genellikle açıklamalar, yürütülen kod, kaynak dosyalar vb. içerir. Çalışması tamamen WordPress tarafından sağlanan “Hook” (Kancalar) sisteminine bağlıdır.

Eklenti standart dosya yapısını keşfedin.

Standart bir WordPress eklentisi genellikle belirli bir klasör yapısına uyar. Ana eklenti dosyası, örneğin… my-first-plugin.phpMutlaka şu yere yerleştirilmelidir: /wp-content/plugins/ Bu dosya, kataloğun içinde veya alt kataloğlarında bulunmaktadır. Çok önemlidir çünkü eklenti başlık bilgilerini içermekte ve bu bilgiler, WordPress sisteminin eklentinizi tanımasını sağlar.

Tipik bir eklenti dizini aşağıdaki bölümleri içerebilir: Ana eklenti dosyası, JavaScript ve CSS gibi statik kaynakların saklanması için kullanılan dosyalar… assets/ Klasörler, PHP sınıf dosyaları için kullanılır. includes/ Dizinler, kullanıcı arayüzleri için kullanılır. admin/public/ Klasörler ve çeviri dosyaları için kullanılan araçlar. languages/ İçindekiler. İyi bir yapı, özellikle eklentilerin işlevleri karmaşıklaştığında, kodun düzenlenmesine ve sürdürülmesine yardımcı olur.

Tavsiye edilen okuma WordPress eklenti geliştirmeye başlamak için bir rehber: özel işlevler oluşturmanın kapsamlı bir rehberi

Temel eklenti dosyalarının başlık bilgilerini tanımak

Her eklentinin, PHP yorum bloklarında yer alan belirli meta bilgiler (Header) ile başlaması gerekmektedir. Bu bilgiler, WordPress’in eklentiyi tanımasında kritik bir rol oynar. Temel format aşağıdaki gibidir:

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%).
<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://www.example.com/my-first-plugin
 * Description: 这是一个简短描述,介绍插件功能的句子。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://www.example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 * Domain Path: /languages
 */

Bunlar arasında,Plugin Name Zorunludur; diğer bilgiler isteğe bağlıdır ancak doldurulması önerilir. Özellikle… Text DomainDomain PathBunlar, eklentilerin uluslararasılaştırılması (çok dilli destek) için hazırlanmıştır. WordPress bu bilgileri okur ve bunları arka plandaki “Eklentiler” yönetim sayfasında görüntüler.

Yerel geliştirme ortamı kurmak ve ilk eklentiyi oluşturmak

Kodlamaya başlamadan önce, izole edilmiş ve hızlı bir şekilde yenilenebilen bir yerel geliştirme ortamı şarttır. Bu, çevrimiçi bir web sitesinde doğrudan yapılan testlerin beraberinde getirebileceği riskleri önlemeye yardımcı olur.

Yerel geliştirme araç zincirini yapılandırma

Yerel sunucu entegrasyon ortamlarını kullanmanız önerilir; örneğin Local by Flywheel, XAMPP veya Laragon. Bu araçlar, WordPress için gerekli olan PHP, MySQL ve web sunucusunu tek tıklamayla kurmanıza olanak tanır. Ayrıca, Visual Studio Code veya PHPStorm gibi bir kod editörüne ihtiyacınız olacak; bu editörler sözdizimi vurgulama, kod önerileri ve hata ayıklama özellikleri sunar. Kullandığınız PHP sürümünün hedef sunucuyla uyumlu olduğundan emin olun; genellikle PHP 7.4 veya daha yeni sürümlerinin kullanılması önerilir.

Basit bir eklenti yazın ve etkinleştirin.

Şimdi, ilk işlevsel eklentimizi oluşturalım. /wp-content/plugins/ Dizin içinde, “” adında bir klasör oluşturun. my-first-pluginBu klasör içinde, “” adında bir dosya oluşturun. my-first-plugin.php Dosya.

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

Bir önceki bölümde bahsedilen eklenti başlık bilgilerini bu dosyanın başına kopyalayın. Ardından, makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin ekleyen basit bir özellik ekleyeceğiz. Bu, WordPress’in “Filtre” (Filter) mekanizmasını kullanmayı gerektirir. Başlık bilgilerinin hemen altına aşağıdaki kodu ekleyin:

// 在文章内容后添加自定义文本
function myfp_add_footer_text( $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, “My First Plugin” tarafından desteklenmektedir.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'myfp_add_footer_text' );

Dosyayı kaydettikten sonra, WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim” adında yeni bir eklenti görmelisiniz. “Etkinle” butonuna tıklayın. Şimdi, web sitenizdeki bir makaleye bakın; makalenin sonunda eklediğimiz metni göreceksiniz. Böylece, ilk WordPress eklentiniz başarıyla çalışmaya başlamış olur.

Eklenti geliştirmenin temel tekniklerini öğrenmek

WordPress’in güçlü genişletilebilirliği, birkaç temel kavramın üzerine kuruludur: Hook’lar (Düğümler), Options API (Seçenekler API’si), Custom Post Types (Özel Makale Türleri – CPT) ve veritabanı işlemleri. Bu kavramları öğrenmek, ileri düzey geliştirme için temeldir.

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

Action ve Filter Hook’larına Derinlemesine Bakış

Kancalı sistem (Hook System), WordPress eklenti geliştirmenin temel taşıdır ve “Eylem” (Action) ile “Filtre” (Filter) olmak üzere ikiye ayrılır. Eylem kancaları, belirli yürütme noktalarında (örneğin sayfa başlığının yüklenmesi sırasında, makalenin kaydedilmesi sırasında) tetiklenir ve menü eklemek, e-posta göndermek gibi işlemler yapmanıza olanak tanır. add_action() Bu fonksiyon, bir şeyi monte etmek için kullanılır.

Örneğin, arka plan yönetim menüsüne bir sayfa ekleyin:

function myfp_add_admin_menu() {
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myfp-settings',  // 菜单slug
        'myfp_settings_page', // 回调函数,用于显示页面内容
        'dashicons-admin-generic', // 图标
        20
    );
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );

Filtre hook’ları, verileri “değiştirmenize” olanak tanır. Veriler kullanılmadan önce (örneğin tarayıcıda gösterilmeden veya veritabanına kaydedilmeden önce) durdurulurlar ve siz yeni değerleri değiştirip geri gönderebilirsiniz. İlk eklentimizde de bunları kullandık. the_content Sadece bir filtre kancası (filter hook).

Tavsiye edilen okuma WooCommerce’ü Derinlemesine Analiz Etme: Sıfırdan Yüksek Performanslı E-Ticaret Siteleri Oluşturmak İçin Kapsamlı Bir Rehber

Eklenti ayarlarını OptionAPI kullanarak saklayın.

Eklentiler genellikle API anahtarları, ayar durumları gibi bazı yapılandırmaları kaydetmeye ihtiyaç duyar. WordPress bunun için gerekli olan araçları sağlar. Options API Bu tür verileri kolayca işlemek için kullanılan temel fonksiyonlar şunları içerir: add_option(), get_option(), update_option()delete_option()

Bu fonksiyonları kullanmak için basit bir ayar sayfası oluşturun. Öncelikle, yukarıdaki menü geri çağırma fonksiyonlarını tanımlayın. myfp_settings_page Bir form göstermek için:

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 myfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Eklenti ayarlarım.</h1>
        <form method="post" action="/tr/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myfp_settings_group' ); // 输出安全字段
            do_settings_sections( 'myfp-settings' );  // 输出设置部分
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Daha sonra, kullanmanız gerekiyor. register_setting(), add_settings_section()add_settings_field() Bu ayar alanlarını tanımlamak ve başlatmak için `set` gibi fonksiyonlar kullanılır. Bu işlem, verilerin güvenli bir şekilde saklanmasını sağlar. wp_options Tabloda.

Tam bir pratik eklenti örneği oluşturun.

Daha önce öğrendiğimiz bilgileri birleştirerek, biraz daha karmaşık ancak kullanışlı bir eklenti oluşturacağız: “Makale Okuma Süresi Tahmini” adlı bir eklenti. Bu eklenti, makale başlığının altında tahmini okuma süresini gösterecek.

Bir eklenti ana dosyası ve işlevsel fonksiyonlar oluşturun.

Yeni bir eklenti klasörü oluşturun. post-reading-time Ve ana dosya post-reading-time.phpStandart eklenti başlık bilgilerini doldurun. Daha sonra, okuma süresini hesaplamak için çekirdek fonksiyonları oluşturacağız.

function prt_calculate_reading_time( $post_id ) {
    // 获取文章内容
    $content = get_post_field( 'post_content', $post_id );
    // 清除HTML标签和短代码,只计算文字
    $text = strip_tags( strip_shortcodes( $content ) );
    // 计算字数(中英文混合场景的简单处理)
    $word_count = mb_strlen( $text, 'UTF-8' );
    // 假设平均阅读速度为每分钟300字(可根据需要调整)
    $reading_speed = 300;
    // 计算分钟数,至少1分钟
    $minutes = floor( $word_count / $reading_speed );
    if ( $minutes < 1 ) {
        $minutes = 1;
    }
    // 返回包含时间的字符串
    return sprintf( _n( '约 %d 分钟读完', '约 %d 分钟读完', $minutes, 'post-reading-time' ), $minutes );
}

Ön tarafta, arka uç yönetim sistemiyle entegre edilmiş içeriği göstermek.

Bundan sonra, bu zamanı nasıl göstereceğimize karar vermemiz gerekiyor. Yaygın bir uygulama, zamanı makale meta verilerine (başlıkın altına) eklemektir. the_content Filtreler veya temalar tarafından sağlanan belirli “hook” (düğüm noktaları). Burada, daha uygun bir eylem “hook”unu kullanıyoruz. thesis_hook_before_post(Mesaja bağlı olarak) veya daha genel bir yöntemle, makale içeriğini doğrudan filtreleyebilirsiniz.

Daha esnek olabilmek için bir kısayol (Shortcode) ve küçük bir araç (Widget) oluşturduk ve otomatik olarak görüntülenip görüntülenmeyeceğini kontrol etmek için basit bir ayar seçeneği sunduk.

Öncelikle, kısa kodu kaydedin:

function prt_reading_time_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'id' =&gt; get_the_ID(),
    ), $atts, 'reading_time' );

$time_text = prt_calculate_reading_time( $atts['id'] );
    return '<span class="reading-time">'.$time_text.'</span>'add_shortcode( 'reading_time', 'prt_reading_time_shortcode' );

Daha sonra, sonuçları otomatik olarak makale içeriğinin başına ekleyebiliriz (filtreler aracılığıyla):

function prt_prepend_to_content( $content ) {
    if ( is_single() && get_option( 'prt_auto_display', '1' ) == '1' ) {
        $time_html = '<div class="post-reading-time">' . prt_calculate_reading_time( get_the_ID() ) . '</div>';
        $content = $time_html . $content;
    }
    return $content;
}
add_filter( 'the_content', 'prt_prepend_to_content' );

Ayrıca, arka planda bir ayar seçeneği oluşturmanız gerekiyor. prt_auto_displayKullanıcıların otomatik gösterim özelliğini etkinleştirip etkinleştirmeyeceklerini seçmelerine olanak tanır. Böylece, tam özellikli ve yapısal olarak açık bir eklenti oluşturulmuş olur.

Özetle.

Eklentilerin temel yapısını ve dosya başlıklarındaki bilgileri anlamakla başlayarak, kademeli olarak bir geliştirme ortamı oluşturduk ve ilk basit işlevsel eklentimizi oluşturduk. WordPress’in genişletilebilirliğinin temelini oluşturan “kancalar sistemi”ni (hook system) derinlemesine inceleyerek, çekirdek kodu değiştirmeden işlem akışını nasıl müdahale edeceğimizi ve verileri nasıl değiştireceğimizi öğrendik. Options API sayesinde, eklentiler için kalıcı ayarlar oluşturabildik. Son olarak, “makale okuma süresi tahmini” işlevine sahip bir eklentinin tam bir örneğini geliştirerek, teorik bilgilerimizi pratikle birleştirdik; bu süreç, işlevsel mantığın yazılmasından, kısayolların oluşturulmasına ve ön uç entegrasyonuna kadar tüm geliştirme adımlarını kapsıyordu. Unutmayın ki, mükemmel eklenti geliştirme süreci, net bir planlamayla, WordPress kodlama standartlarına uymakla ve her zaman güvenlik, performans ve kullanıcı deneyimini öncelikli tutmakla başlar.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?

Sağlam bir PHP programlama temeline sahip olmanız gerekiyor; çünkü eklenti kodunun büyük bir kısmı PHP ile yazılmıştır. Ayrıca, ön uç gösterimi ve etkileşimi işlemek için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız önemlidir. MySQL’in temel kavramlarına aşina olmak, WordPress’in veri depolama ve sorgulama yöntemlerini anlamanıza yardımcı olacaktır. En önemlisi, WordPress resmi geliştirme kılavuzunu (Codex) ve geliştirici referansını (Developer Reference) okumaya alışkın olmanızdır.

Geliştirdiğim eklentinin güvenli olduğundan nasıl emin olabilirim?

Güvenlik son derece önemlidir. Kullanıcı girdilerini her zaman doğrulayın ve temizleyin; çıktıları da uygun şekilde işleyin. WordPress tarafından sağlanan “nonce” (rastgele değer) mekanizmasını kullanarak çapraz sitelik istek sahteciliğini (CSRF – Cross-Site Request Forgery) önleyin. Veritabanı sorgularını oluştururken mutlaka gerekli önlemleri alın. $wpdb Sınıf tarafından sağlanan metotlar (örneğin…) prepare()SQL enjeksiyonlarını önlemek için bu yöntemler kullanılır. Güvenli olmayan fonksiyonların kullanımından kaçının, örneğin… eval()Eklentilerinizi düzenli olarak güncelleyin ki bilinen güvenlik açıkları giderilsin.

Eklentiler hangi kataloga konmalı?

WordPress eklentileri, web sitesinin belirli bir konumuna yerleştirilmelidir. /wp-content/plugins/ Dizinin içinde. Eklentinin ana PHP dosyasını doğrudan dizinin kök seviyesine koyabilirsiniz, ancak daha standart bir yaklaşım her eklenti için ayrı bir alt klasör oluşturmak ve tüm ilgili dosyaları (PHP, JS, CSS, resimler vb.) bu alt klasöre koymaktır. Bu sayede dosya yapısı daha net olur ve diğer eklentilerle çakışmalar önlenir.

Eklentime nasıl bir ayarlar sayfası ekleyebilirim?

Eklentilere ayar sayfası eklemek genellikle birkaç adımı içerir: Öncelikle, add_action( ‘admin_menu’, ‘your_function’ ) Kancalar, yeni bir yönetim menüsü veya alt menü öğesi kaydeder. Daha sonra, geri çağırma fonksiyonunda sayfa HTML formunu çıktı olarak verir. Ardından, kullanılır… register_setting()add_settings_section()add_settings_field() Settings API fonksiyonlarını kullanarak ayar alanlarınızı tanımlayın ve ilişkilendirin; bu işlem, izin kontrolünü, CE doğrulamasının yapılmamasını ve seçeneklerin kaydedilmesini otomatik olarak halledecektir. Son olarak, formda bunları kullanın. settings_fields()do_settings_sections() Gerekli alanları çıkarmak için bir fonksiyon kullanılır.

Hook’lar (Kancalar) nedir ve neden bu kadar önemlidir?

Kancalar (Hooks), WordPress’in eklentilerin ve temaların kendi çekirdek kod işleyiş sürecine “bağlanmasına” izin verdiği belirli noktalardır. Bunlar, Eylem Kancaları (Actions) ve Filtre Kancaları (Filters) olarak ikiye ayrılır. Eylem Kancaları, belirli olaylar meydana geldiğinde özelleştirilmiş kodunuzu çalıştırır ve yeni özellikler eklemek için kullanılır. Filtre Kancaları ise veriler kullanılmadan veya kaydedilmeden önce bunları değiştirmenize olanak tanır. Kancalar sistemi, WordPress’in genişletilebilirliğinin temelidir; bu sayede geliştiriciler, çekirdek dosyaları değiştirmeden WordPress’in davranışlarını büyük ölçüde değiştirebilir veya geliştirebilirler. Bu da WordPress’in temiz kalmasını ve yükseltilebilir olmasını sağlar.