WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Profesyonel Seviye Genişletmelere

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

Neden WordPress eklentisi geliştirmeyi seçtiniz?

WordPress, dünyanın en popüler içerik yönetim sistemi olarak, güçlü genişletilebilirliğini özellikle eklenti ekosistemine borçludur. Kendi eklentilerinizi geliştirmek, sadece belirli web sitesi ihtiyaçlarını karşılamakla kalmaz; aynı zamanda bu çözümleri ürüne dönüştürüp milyonlarca kullanıcıyla paylaşmanıza ve hatta önemli gelirler elde etmenize de olanak tanır. Temaları doğrudan değiştirmek yerine…functions.phpDosyalara kıyasla, eklentiler daha iyi bir modülerlik, sürdürülebilirlik ve taşınabilirlik sunar. Profesyonel bir eklenti, standartlara uygun herhangi bir WordPress teması altında çalışabilir ve böylece işlevlerin bağımsızlığını ve istikrarını sağlar.

WordPress’in temel yapısını anlamak, eklenti geliştirmenin temelidir. WordPress, eylemler (Actions) ve filtreler (Filters) dahil olmak üzere olay tabanlı bir kancalar (Hooks) sistemi kullanır. Bu, geliştiricilerin belirli yürütme noktalarında kendi kodlarını ekleyerek çekirdek işlevleri değiştirmelerine veya genişletmelerine olanak tanır. Ayrıca, WordPress’in resmi kodlama standartlarına ve güvenlik kurallarına (veri doğrulama, çıktıyı dönüştürme, CE (Content Security) doğrulaması olmaması gibi) uymak, güvenli ve verimli eklentiler geliştirmenin ön koşuludur.

İlk eklentinizi oluşturun.

Eklenti geliştirmeye başlamanın ilk adımı, eklentinin ana dosyasını oluşturmaktır. Bu dosya, eklentinin giriş noktasıdır ve eklentinin meta bilgilerini içerir.

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

Ana eklenti dosyasını oluşturun.

Her eklentinin, WordPress’e eklenti bilgilerini sağlamak için kullanılan başlık kısmındaki yorumlarla birlikte bir ana PHP dosyası olmalıdır. “” adında bir dosya oluşturun.my-first-plugin.phpBelgeyi açın ve aşağıdaki içeriği girin:

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://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
 */

Bu dosyayı içeren klasörü (isteğe bağlı olarak şu adı verebilirsiniz:…)my-first-pluginWordPress kurulum dizinine yüklenir./wp-content/plugins/WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. Orada eklentinizi görebilir ve etkinleştirebilirsiniz. Bu eklentinin şu an için herhangi bir özelliği yok, ancak temel yapıyı başarıyla oluşturdunuz.

Basit bir özellik ekleyin.

Bundan sonra, eklentiye temel bir özellik ekleyeceğiz: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyeceğiz. Bunun için…the_contentBu filtre hook’u… Az önceki durumda…my-first-plugin.phpDosya başlığındaki yorumların hemen altına aşağıdaki kodu ekleyin:

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

/**
 * 在文章内容后追加自定义文本
 *
 * @param string $content 文章原始内容。
 * @return string 修改后的内容。
 */
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, “My First Plugin” tarafından desteklenmektedir.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将函数挂载到‘the_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$contentBir parametre olarak kullanılır. Fonksiyon içinde, belirli bir durum ifadesi aracılığıyla tek bir makale sayfasının ana sorgusunda olup olmadığı kontrol edilir; eğer öyleyse, ardından özelleştirilmiş bir HTML metni eklenir. Son olarak,add_filter()Bu fonksiyon, özel olarak oluşturulan bu fonksiyonu belirli bir yere (örneğin, bir sisteme veya bir nesneye) bağlar (mounts).the_contentFiltre üzerinde. Dosyayı kaydettikten sonra, web sitesindeki herhangi bir makaleye bakarsanız, belirtilen metnin başarıyla eklendiğini göreceksiniz.

Eklentilerin Mimarisi ve En İyi Uygulamalarına Derinlemesine Bakış

Eklentilerin işlevleri karmaşıklaştıkça, iyi bir mimari ve kodlama uygulamaları hayati önem kazanmaktadır. Bu durum sadece kod kalitesiyle ilgili değil; aynı zamanda güvenlik, performans ve diğer eklentiler veya temalarla olan uyumluluğu da etkilemektedir.

Tavsiye edilen okuma WordPress Eklenti Geliştirmeyi Sıfırdan Öğrenin: Özel İşlevler Oluşturma ve Genişletmeler

Kodu organize etmek için sınıflar kullanın.

Birden fazla fonksiyona ve özelliğe sahip eklentiler için nesne yönelimli programlama (OOP – Object-Oriented Programming) kullanmak iyi bir alışkanlıktır. Bu yaklaşım, ilgili özellikleri sınıflar içinde paketler ve fonksiyon adı çakışmalarını önler; aynı zamanda kodun yönetimini de daha kolay hale getirir. İşte basit bir eklenti sınıfı yapısı örneği:

&lt;?php
/**
 * Plugin Name: 我的高级插件
 */
if ( ! defined( &#039;ABSPATH&#039; ) ) {
    exit;
}

class My_Advanced_Plugin {
    /**
     * 构造方法,用于初始化钩子。
     */
    public function __construct() {
        // 在构造方法中挂载所有钩子
        add_action( &#039;admin_menu&#039;, array( $this, &#039;add_admin_menu&#039; ) );
        add_filter( &#039;the_content&#039;, array( $this, &#039;modify_content&#039; ) );
    }

/**
     * 添加后台管理菜单。
     */
    public function add_admin_menu() {
        add_options_page(
            &#039;我的插件设置&#039;,
            &#039;我的插件&#039;,
            &#039;manage_options&#039;,
            &#039;my-advanced-plugin-settings&#039;,
            array( $this, &#039;render_settings_page&#039; )
        );
    }

/**
     * 渲染设置页面。
     */
    public function render_settings_page() {
        echo &#039;<div class="“wrap”"><h1>Eklenti ayarlarım.</h1><p>Bu, ayar sayfasıdır.</p></div>';
    }

/**
     * 修改文章内容。
     */
    public function modify_content( $content ) {
        if ( is_single() ) {
            $content .= '<p><strong>[Benim gelişmiş eklentim tarafından işlenmiştir.]</strong></p>';
        }
        return $content;
    }
}
// 初始化插件
new My_Advanced_Plugin();

Bu örnekte, tüm özellikler bir araya getirilerek tek bir pakette sunulmuştur.My_Advanced_PluginSınıf içinde. Yapıcı fonksiyon.__constructEylemleri ve filtre kancalarını merkezi bir şekilde bağlamak için kullanılır. Metodadd_admin_menuKullanın.add_options_pageBu fonksiyon, WordPress arka plan ayarları menüsüne bir alt sayfa ekledi. Sınıflar kullanarak kodu daha net bir şekilde organize edebilir ve böylece…array($this, ‘method_name’)Bu dilin sözdizimi, sınıf metotlarını hook (düğüm) geri çağırma fonksiyonları olarak kaydeder.

Eklenti ayarlarının ve veri depolamanın gerçekleştirilmesi

Profesyonel bir eklenti genellikle kullanıcıların ayarlamalar yapmasına izin vermelidir. WordPress, seçenekleri güvenli bir şekilde oluşturmak, doğrulamak ve kaydetmek için bir ayar API’si sunar. Öncelikle, bir ayar seçeneği kaydetmemiz ve form alanları içeren bir ayar sayfası oluşturmamız gerekiyor. Sınıfın…add_admin_menuMetotla ilişkilirender_settings_pageMetot içinde, bir form oluşturabiliriz:

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
public function render_settings_page() {
    ?&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
            // 输出设置字段、非ce等
            settings_fields( 'my_advanced_plugin_options' );
            do_settings_sections( 'my-advanced-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Daha sonra, eklentinin başlatılması sırasında (örneğin, bir sınıfın constructor’unda veya ayrı bir başlatma metodu içinde) ayarları ve alanları kaydetmemiz gerekiyor:

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

public function register_settings() {
    register_setting(
        'my_advanced_plugin_options', // 选项组
        'my_advanced_plugin_custom_text', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'my_advanced_plugin_main_section',
        '主要设置',
        null,
        'my-advanced-plugin-settings'
    );

add_settings_field(
        'custom_text_field',
        '自定义文本',
        array( $this, 'render_custom_text_field' ),
        'my-advanced-plugin-settings',
        'my_advanced_plugin_main_section'
    );
}

public function render_custom_text_field() {
    $value = get_option( 'my_advanced_plugin_custom_text', '默认文本' );
    echo '<input type=“text” name=“my_advanced_plugin_custom_text” value=“' . esc_attr( $value ) . '” />';
}

API aracılığıyla ayarlanan depolama seçenekleri kullanılabilir.get_option(‘my_advanced_plugin_custom_text’)Herhangi bir yerden güvenli bir şekilde elde edilir ve eklenti işlevlerinin mantığında kullanılır.

Eklenti Yayını ve Bakımı

Geliştirme işlemi tamamlandıktan sonra, eklentiyi kullanıcılara nasıl teslim edeceğinizi ve sürekli olarak nasıl bakımını yapacağınızı düşünmeniz gerekecektir.

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

Uluslararasılaştırma ve Yerelleştirme Hazırlıkları

Eklentinizin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) gereklidir. Bu, tüm kullanıcıya yönelik metin dizelerinin belirli fonksiyonlar kullanılarak sarılması gerektiği anlamına gelir. Eklentinin baş kısmında, bunu zaten yaptık.Text Domain: my-first-pluginKodda, çevrilmesi gereken metinler için belirli bir yaklaşım kullanılmalıdır.()_e()Fonksiyonlar. Örneğin, önceki özelleştirilmiş metni şu şekilde değiştirin:$custom_text = ‘’ . esc_html(‘感谢阅读!本文由“我的第一个插件”提供支持。’, ‘my-first-plugin’) . ‘’;Daha sonra, Poedit gibi araçları kullanarak oluşturabilirsiniz..potŞablon dosyası, çevirmenlerin farklı dillerde içerikler oluşturması için kullanılır..moDosya.

Sürüm Güncellemesi ve Uyumluluk

Bir hata düzelttiğinizde veya yeni bir özellik eklediğinizde, eklentinin sürüm numarasını güncellemeniz gerekir. WordPress’in eklenti deposunda bu, ana dosyanın sürüm numarasını değiştirerek ve yeni bir sürümü göndererek yapılır.readme.txtDosyaları tamamlamak için gerekli adımları atın. Kendi başınıza dağıttığınız eklentiler için, kullanıcıların güncelleme bildirimlerini alabildiğinden emin olmanız gerekir. Yaygın bir uygulama, güncelleme kontrolü için gerekli kütüphaneleri entegre etmektir. Daha da önemlisi, her güncellemeden önce farklı WordPress ve PHP sürümlerinde kapsamlı testler yaparak geriye dönük uyumluluğu sağlamanız gerekir.readme.txtDosyada, eklentinin gerektirdiği “en düşük WordPress sürümü” ve “testten geçen WordPress sürümleri”nin açıkça belirtilmesi iyi bir uygulamadır.

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.

Özetle.

WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştürme ve bunları geniş bir ekosisteme entegre etme sürecidir. Basit bir eklenti oluşturmakla başlayarak….phpDosya başlıyor; hook sistemini anlayarak ve kullanarak eklenti işlevlerinizi kademeli olarak genişletebilirsiniz. Nesne yönelimli bir mimari benimsemek, seçenekleri yönetmek için belirlenen API’leri takip etmek ve uluslararasılaştırmaya hazırlıklı olmak, profesyonel seviyede geliştirme yolunda atılacak önemli adımlardır. Güvenliği (doğrulama, escape işlemleri, non-CE standartları) ve performansı her zaman göz önünde bulundurun; ayrıca eklentinizin yayınlanması ve güncellenmesiyle ilgili bir plan yapın. Topluluğun en iyi uygulamalarını sürekli pratik yaparak ve öğrenerek, güçlü, güvenli ve popüler bir WordPress eklentisi geliştirebilirsiniz.

Sıkça Sorulan Sorular.

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

Sağlam bir PHP programlama temeline sahip olmanız gerekmektedir; çünkü eklentinin temel mantığı PHP ile yazılmıştır. Ayrıca, ön uç arayüzlerini ve etkileşimlerini oluşturmak için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. En önemlisi, WordPress’in temel yapısını anlamanızdır; özellikle de onun kancalı sistemini (eylemler ve filtreler), döngü kavramlarını ve veritabanı ile etkileşim yöntemlerini (örneğin WP_Query) bilmelisiniz. Bu kavramlara aşina olmak, verimli geliştirme için ön koşuldur.

Eklentimin diğer eklentilerle çakışmasını nasıl önleyebilirim?

Çatışmaları önlemenin anahtarı, iyi adlandırma kuralları ve kod sargılama (code encapsulation) uygulamalarıdır. Tüm fonksiyonlarınız, sınıflarınız, değişkenleriniz ve seçenek adlarınız için benzersiz önekler kullanın; genellikle eklentilerin kısaltmalarını veya isimlerini kullanmanız önerilir. Örneğin,myplugin_function_nameAksine, genel kullanıma yönelik değil.add_custom_textKodunuzu mümkün olduğunca sınıflar veya ad alanları içinde kapsülleyin. Küresel düzeyde işlevler eklerken, bunların etki alanını dikkatlice değerlendirin ve gerekirse koşullu kontroller ekleyin. Özel olarak tanımlanmış küresel değişkenler yerine, WordPress çekirdeğinin sunduğu API’leri tercih edin.

Eklentiler hangi klasörde saklanmalıdır?

WordPress eklentileri mutlaka belirli bir klasörde saklanmalıdır./wp-content/plugins/Katalogda bulunmaktadır. Her eklenti ayrı bir dosya olarak yer alabilir..phpBu yöntem özellikle minimalist eklentiler için uygundur; ancak daha yaygın bir uygulama, eklentinin adını taşıyan bir alt klasör oluşturmaktır (örneğin:/wp-content/plugins/my-awesome-plugin/Daha sonra ana dosyayı ve diğer kaynakları (örneğin JavaScript, CSS, resim dosyaları) bu kataloga koyun. Bu yapı, dosyaların düzenli ve organize bir şekilde tutulmasına yardımcı olur.

Eklentim için nasıl bir yönetim sayfası oluşturabilirim?

WordPress tarafından sağlanan fonksiyonları kullanarak arka plan menüsüne sayfalar ekleyebilirsiniz. Yaygın olarak kullanılan fonksiyonlar arasında şunlar bulunmaktadır:add_menu_page()(Üst düzey menü ekleyin)add_submenu_page()(Alt menü ekleyin) veadd_options_page()“Ayarlar” alt menüsüne eklensin. Sayfa oluşturulurken, sayfanın HTML içeriğini döndürecek bir geri çağırma fonksiyonu belirtmeniz gerekir. Karmaşık ayar sayfaları için, form alanlarının kaydını, doğrulamasını ve depolanmasını güvenli bir şekilde gerçekleştirmek amacıyla WordPress’in ayar API’sini kullanmanız şiddetle önerilir.