WordPress çekirdek eklenti dosyalarının analizi

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

WordPress çekirdek eklenti dosyalarının analizi

Bir WordPress eklenti geliştirmek için, öncelikle eklentinin temel dosya yapısını anlamak gereklidir. Her eklenti, ana dosya ile başlar; bu dosya eklentinin giriş noktasıdır ve temel bilgilerini tanımlar ve tüm işlevlerin yüklenmesini yönlendirir. Ana dosya genellikle “`wp-content/plugins/your-plugin-name.php`” adını taşır. plugin-name.php Bu eklentinin bir adı olmalı ve ayrıca WordPress’in eklentiyi tanıyabilmesi için belirli dosya başlık bilgileri içermelidir.

Ana dosyada, kullanmanız gereken şey…Plugin NameDescriptionVersionEklentiyi tanımlamak için `name`, `version`, `description` gibi alanları kullanın. Dosya başlığının yanı sıra, ana dosyanın temel görevi, eklentinin ihtiyaç duyduğu başlatma işlemlerini ve temel işlevsel dosyaları çağırmaktır. En iyi uygulama, kodu farklı dosyalara ayırmak ve ana dosyanın düzenli kalmasını sağlamaktır. Örneğin, aşağıdakileri yapabilirsiniz:class-plugin-name.phpBir ana sınıf tanımlayın veya oluşturun.includesKlasörler, ortak fonksiyon kütüphanelerini ve araç sınıflarını saklamak için kullanılır.

İyi bir uygulama, eklentilerin yaşam döngüsünü yönetmek için bir rehber sınıf (guide class) kullanmaktır. Bu sınıf, bazı kritik metotları içerebilir:

Tavsiye edilen okuma Bir WordPress eklentisi geliştirmenin eksiksiz bir rehberi, ilk eklentinizi sıfırdan bire kadar oluşturma.

<?php
/**
 * Plugin Name: 我的示例插件
 * Plugin URI:  https://example.com/my-plugin
 * Description: 这是一个用于演示的WordPress插件。
 * Version:     1.0.0
 * Author:      开发者
 * License:     GPL v2 or later
 */

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

// 定义插件路径常量
define( ‘MY_PLUGIN_PATH’, plugin_dir_path( __FILE__ ) );
define( ‘MY_PLUGIN_URL’, plugin_dir_url( __FILE__ ) );

// 引入核心类文件
require_once MY_PLUGIN_PATH . 'includes/class-core-plugin.php';

// 初始化插件
function my_plugin_init() {
    $plugin = new Core_Plugin();
    $plugin->run();
}
add_action( 'plugins_loaded', 'my_plugin_init' );

Standart Eklenti Mimarisi ve Güvenlik Uygulamaları

Standart bir eklenti mimarisi, “tek sorumluluk ilkesi”ne uymalı ve işlevleri modüller halinde bölmelidir. Genellikle, bir eklenti yapısı şunları içerebilir:admin/(Arka plan yönetimi ile ilgili dosyalar)public/(Ön uç işlevleriyle ilgili dosyalar)includes/Paylaşılan sınıf kütüphaneleri ve fonksiyonlarassets/(Statik kaynaklar olan CSS, JavaScript ve görseller gibi) velanguages/(Uluslararası çeviri dosyası)

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

Geliştirme sürecinde güvenlik en önemli faktördür. Tüm kullanıcı girdileri, ekrana gösterilmeden veya veritabanına kaydedilmeden önce titiz bir şekilde kontrol edilmeli ve doğrulanmalıdır. WordPress, güvenliği sağlamak için bir dizi fonksiyon sunar. Örneğin, formlardan gelen verileri işlerken bu fonksiyonları kullanmalısınız.sanitize_text_field()esc_html()wp_unslash()Ve diğer fonksiyonlar.

Önemli bir güvenlik uygulaması, WordPress’in yerleşik “nonce” (rastgele sayı) mekanizmasını kullanarak form isteklerinin geçerliliğini doğrulamak ve çapraz sitelik istek sahteciliği (CSRF – Cross-Site Request Forgery) saldırılarını önlemektir. Ayarları değiştirmek veya verileri silmek gibi yönetim işlemleri gerçekleştiren tüm formlar için bir nonce oluşturulmalı ve doğrulanmalıdır.

// 在表单中生成nonce字段
wp_nonce_field( 'my_action_name', 'my_nonce_field' );

// 处理表单提交时验证nonce
function handle_form_submission() {
    if ( ! isset( $_POST['my_nonce_field'] ) || 
         ! wp_verify_nonce( $_POST['my_nonce_field'], 'my_action_name' ) ) {
        wp_die( '安全验证失败!' );
    }
    // 继续处理安全的数据
}

Ayrıca, eklentinin ön uç (frontend) ve arka uç (backend) betikleri ile stilleri şu şekilde kullanılmalıdır:wp_enqueue_script()wp_enqueue_style()Doğru sırayla yüklemeyi gerçekleştirin ve bağımlılıkları ile sürüm numaralarını belirtin. Bu, sadece kaynakların yönetilmesine yardımcı olmakla kalmaz, aynı zamanda diğer eklentilerle olan uyumluluğu da artırır.

Eklenti Yönetim Arayüzü Oluşturma

Eklentiniz için kullanıcı dostu bir arka plan yönetim arayüzü oluşturmak şarttır. WordPress, bunu esas olarak “Yönetim Menüsü” sistemi aracılığıyla gerçekleştirir. Bunu kullanabilirsiniz.add_menu_page()Bu fonksiyon, eklentilere üst düzey bir menü ekler veya bunu kullanmayı sağlar.add_submenu_page()Fonksiyon, mevcut menülerin (örneğin “Ayarlar” menüsü) altına alt sayfalar ekler.

Tavsiye edilen okuma WooCommerce derinlemesine başlangıç rehberi: Sıfırdan profesyonel bir çapraz sınır e-ticaret web sitesi oluşturma

Yönetim sayfaları genellikle, eklenti ayarlarını kaydetmek için kullanılan bir form içerir. Form verilerini güvenli bir şekilde işlemek amacıyla WordPress, “Ayarlar API’si” (Settings API) sunar. Ayarlar API’sini kullanarak form alanlarının oluşturulması, ayarların kaydedilmesi, verilerin doğrulanması ve güvenliğinin sağlanması süreçleri basitleştirilir. Temel adımlar şunları içerir:register_setting()Bir ayar grubu oluşturun ve bunu kullanın.add_settings_section()Bir ayar bölgesi ekleyin ve bunu kullanın.add_settings_field()Belirli ayar alanlarını ekleyin.

Aşağıda, basit bir yönetim sayfası ayarlama örneği bulunmaktadır:

// 注册设置
add_action( 'admin_init', 'my_plugin_register_settings' );
function my_plugin_register_settings() {
    // 参数:选项组、选项名、验证回调函数
    register_setting( 'my_plugin_settings_group', 'my_plugin_option', array(
        'sanitize_callback' =&gt; 'my_sanitize_callback_function'
    ) );

    // 添加一个设置区域
    add_settings_section(
        'my_plugin_main_section',
        '主设置',
        null,
        'my-plugin-settings'
    );

    // 向该区域添加一个字段
    add_settings_field(
        'my_field_id',
        '示例文本字段',
        'my_field_callback_function',
        'my-plugin-settings',
        'my_plugin_main_section'
    );
}

// 字段的回调函数,用于输出HTML
function my_field_callback_function() {
    $value = get_option( 'my_plugin_option' );
    echo ‘<input type="“text”" name="“my_plugin_option”" value="“’." esc_attr( $value ) .‘” />’;
}

// 创建顶级菜单页面
add_action( 'admin_menu', 'my_plugin_create_menu' );
function my_plugin_create_menu() {
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 所需权限
        'my-plugin-settings', // 菜单slug
        'my_plugin_settings_page_callback', // 用于输出页面内容的函数
        'dashicons-admin-generic', // 图标
        6 // 菜单位置
    );
}

// 设置页面的回调函数
function my_plugin_settings_page_callback() {
    ?&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( 'my_plugin_settings_group' );
            do_settings_sections( 'my-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Bu yapı altında, kullanıcı formu gönderdikten sonra veriler aşağıdaki yolla iletilir:options.phpOtomatik olarak işlenir ve sizin tarafınızdan kaydedilir.sanitize_callbackFonksiyon, dezenfeksiyon ve doğrulama işlemlerini gerçekleştirir.

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

Çekirdek işlemleri ve filtre eklentilerini (hook’ları) gerçekleştirme

WordPress’in eklenti sisteminin güçlü ve esnek olmasının büyük bir nedeni, “Kancalar” (Hooks) mekanizmasına borçludur. Bu mekanizma esas olarak “Eylem Kancaları” (Action Hooks) ve “Filtre Kancaları” (Filter Hooks) olmak üzere iki bölümden oluşur. Bu kancalar, eklentilerin WordPress çekirdeği, temalar ve diğer eklentilerle etkileşim kurmasının temelini oluşturur.

Eylem kancaları, belirli zaman noktalarında “belirli şeyler yapmanıza” olanak tanır. Kullanın.add_action()Bir fonksiyon, özel fonksiyonunuzu (geri çağırma fonksiyonunuzu) mevcut bir “hook”a bağlayabilir. Örneğin, bir makale yayınlandığında, WordPress bu olayı tetikler.publish_postEylem.

// 在文章发布时发送通知邮件
add_action( 'publish_post', 'my_plugin_send_notification' );
function my_plugin_send_notification( $post_id ) {
    $post = get_post( $post_id );
    // 邮件发送逻辑...
}

Filtre hook’ları, veriler kullanılmadan (gösterilmeden veya kaydedilmeden) önce bazı şeyleri değiştirmenize olanak tanır.add_filter()Bir fonksiyon, kendisine geçirilen verileri değiştirebilir. Örneğin,the_contentFiltreler, makale içeriğinin nihai çıktısını değiştirmenize olanak tanır.

Tavsiye edilen okuma WordPress web sitesi için nihai hızlandırma ve optimizasyon rehberi: yeni başlayanlardan uzmanlara kadar kapsamlı bir uygulamalı eğitim.

// 在所有文章内容末尾添加版权信息
add_filter( 'the_content', 'my_plugin_add_copyright' );
function my_plugin_add_copyright( $content ) {
    if ( is_single() ) {
        $copyright_text = ‘<p><small>© 2026 Benim Web Sitem. İzinsiz kopyalanması yasaktır.</small></p>’;
        $content .= $copyright_text;
    }
    return $content;
}

Çekirdek hook’ları kullanmanın yanı sıra, kaliteli eklentiler genellikle kendi özelleştirilmiş hook’larını da sunarlar.do_action()apply_filters()Diğer geliştiricilerin eklentinizin işlevlerini genişletebilmesini sağlamak, eklentinin genişletilebilirliğini sağlamanın anahtarıdır. Özel filtre kancaları oluşturma örneği:

// 声明一个自定义过滤器来修改问候语
$default_greeting = ‘你好,世界!’;
$final_greeting = apply_filters( ‘my_plugin_greeting_text’, $default_greeting );
echo $final_greeting;

// 其他插件或主题可以通过以下方式修改这个问候语
add_filter( ‘my_plugin_greeting_text’, ‘change_greeting’ );
function change_greeting( $text ) {
    return ‘Hola Mundo!’;
}

Özetle.

WordPress eklenti geliştirme, yapılandırılmış düşünce ve yaratıcı uygulamaların birleştiği bir süreçtir. Geliştiricilerin, çekirdek dosyalardan güvenlik standartlarına, kullanıcı arayüzlerine ve genişletilebilirlik mimarisine kadar olan tüm süreci net bir şekilde anlamaları gerekmektedir. Çekirdek dosyalar, eklentinin temelini oluşturur ve eklentinin kimliğini ile başlangıç davranışlarını belirler. Standart ve modüler bir dosya yapısı, sadece kodun bakımını kolaylaştırmakla kalmaz, aynı zamanda gelecekteki işlevsel genişlemeler için de zemin hazırlar.

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.

Tüm geliştirme döngüsü boyunca uygulanan güvenlik uygulamaları – veri dezenfeksiyonu, doğrulama işlemleri ve Nonce mekanizmaları – web sitelerini saldırılardan korumanın temel savunma hattıdır. WordPress tarafından sağlanan Settings API’sini kullanarak yönetim arayüzleri oluşturmak, sadece geliştirme sürecini kolaylaştırmakla kalmaz, aynı zamanda arka plandaki işlemlerin güvenliğini ve tutarlılığını da sağlar.

Ancak, eklentilerin güçlü yaşam gücünün asıl kaynağı, WordPress’in Hook mekanizmasına derinlemesine hakim olmak ve bunu ustaca kullanmaktadır. Eylemler (Actions) ve filtreler (Filters) aracılığıyla, eklentileriniz WordPress’in yaşam döngüsüne sorunsuz bir şekilde entegre edilebilir ve diğer bileşenlerle birlikte çalışabilir. Daha da ileri giderek, kendi eklentiniz için özel hook’lar tasarlarsanız, onu kapalı bir araçtan, topluluğun işlevlerini sizin hiç düşünemediğiniz şekillerde geliştirebileceği açık bir platforma dönüştürmüş olursunuz. Bu prensipleri kavradığınızda, profesyonel, güvenli ve popüler WordPress eklentileri geliştirebilirsiniz.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?
PHP programlama diliyle ilgili temel bilgilere sahip olmanız gerekmektedir; çünkü WordPress çekirdeği ve eklentileri esas olarak PHP ile yazılmıştır. Aynı zamanda, HTML, CSS ve JavaScript konularında temel bir bilgiye sahip olmak, ön ve arka uç arasındaki etkileşimli arayüzlerin oluşturulması için çok önemlidir. Bunun yanı sıra, MySQL veritabanının temel kavramlarına aşina olmak da faydalı olacaktır; örneğin WordPress’in bu veritabanı aracılığıyla verileri nasıl işlediğini anlamak önemlidir. Son olarak, WordPress’in mimarisini ve temel kavramlarını (temalar, hook’lar, kısa kodlar, makale türleri vb.) anlamak, eklentiler geliştirmede başarılı olmanın ön koşuludur.

WordPress eklentimizi nasıl hata ayıklar ve test ederiz?

WordPress’ü etkinleştirmek için…WP_DEBUGModlar, eklentileri hata ayıklamanın ilk adımıdır. Bunu yapabilirsiniz…wp-config.phpDosyada bunu şu şekilde ayarlayın:trueBu şekilde PHP hataları ve uyarıları ekranda görüntülenecek veya bir günlük dosyasına kaydedilecektir. Tarayıcı geliştirici araçlarını (F12) kullanarak ön uçtaki JavaScript ve CSS sorunlarını hata ayıklayabilirsiniz. PHP kodunun mantığını adım adım hata ayıklamak için Xdebug gibi profesyonel hata ayıklama araçlarını kullanmanız şiddetle tavsiye edilir; bu araçlar çoğu IDE ile entegre olabilir. Ayrıca, eklenti geliştirmenin farklı aşamalarında, yerel geliştirme ortamı, geçici depolama ortamı gibi farklı ortamlarda testler yapmalı ve eklentinizin çeşitli WordPress sürümleri, farklı temalar ve diğer yaygın eklentilerle birlikte sorunsuz çalıştığından emin olmalısınız.

WordPress resmi kataloğuna eklentimi nasıl yayınlamalıyım?

Eklentiyi WordPress resmi eklenti dizinine yayınlamak için öncelikle WordPress.org’da bir hesap oluşturmanız gerekiyor. Daha sonra eklentinizi inceleme için sunmalısınız. Eklentiniz, resmi kodlama standartlarına ve en iyi uygulamalara uymalı ve GPLv2 (veya daha yüksek bir sürüm) lisansına sahip açık kaynaklı bir lisans kullanmalıdır. Göndermeden önce, kodu WordPress.org’un sağladığı SVN deposuna Subversion (SVN) veya Git araçları kullanarak yüklemeniz gerekmektedir. Lütfen tüm bilgileri ayrıntılı bir şekilde doldurun.readme.txtBu, eklenti dizini sayfasına ait bilgilerdir. İnceleme süreci biraz zaman alabilir; lütfen eklentinizin kodunun güvenli olduğundan, herhangi bir kötü amaçlı özelliğe sahip olmadığından ve açıklamaların doğru olduğundan emin olun.

Eklentiler, çok dilli uluslararasılaştırmayı nasıl gerçekleştirebilir?

WordPress, uluslararasılaştırma (i18n) ve yerelleştirme (l10n) işlemlerini GNU gettext teknolojisi kullanarak gerçekleştirir. Eklentinizin kodunda, çevrilmesi gereken tüm kullanıcı arayüzü metinleri belirli fonksiyonlar aracılığıyla sarılmalıdır. Sıradan metinler için ise…__()Fonksiyon, çevrilen dizeyi döndürür; belirtilen durumlar için…echoMetin doğrudan Çince'den çevrildi ve aynı şekilde Türkçe'ye aktarıldı. Herhangi bir düzenleme veya ek açıklama yapılmadı._e()Fonksiyon: Eklenti için benzersiz bir “Metin Alanı” (Text Domain) belirlemeniz gerekiyor; bu alan, çeviri dosyalarının tanımlanması için kullanılacaktır.

Daha sonra, Poedit gibi bir araç kullanarak eklenti kodunuzu tarayın ve gerekli değişiklikleri yapın..pot(Template file), çevirmenler bu temele dayanarak belirli bir dil için içerik oluşturabilirler..po.moDosyalar. Bu çeviri dosyalarını eklentinin içine koyun./languagesDosya klasöründe bulunuyor ve eklentinin ana dosyasında kullanılıyor.load_plugin_textdomain()Bu çevirileri fonksiyonlar yükler. WordPress, web sitesinin dil ayarlarına göre ilgili çevirileri otomatik olarak yükler.