WordPress Eklenti Geliştirme: Sıfırdan Başlayarak Özel İşlevlere Sahip Eklentiler Oluşturma

3 dakika okuma.
2026-03-14
2026-06-03
2,175
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 eklentinizi geliştirmeyi seçtiniz?

WordPress ekosisteminde, eklentiler web sitesi işlevlerini genişletmenin temelini oluşturur. Resmi katalog ve üçüncü parti pazarlar çok sayıda seçenek sunsa da, kendi eklentilerinizi geliştirmek benzersiz avantajlar sağlar. Mevcut eklentiler iş mantığınıza tam olarak uymuyorsa, performans sorunları varsa veya gereksiz özelliklerle aşırı yüklenmişse, özel olarak geliştirme en iyi çözüm yoludur. Bu sayede yalnızca gerekli kodları içeren, hafif ve odaklanmış bir çözüm oluşturabilir ve böylece web sitesinin performansını artırabilirsiniz.

Daha da önemlisi, özel eklentiler tam kontrol sağlar. Proje ihtiyaçlarına göre işlevleri geliştirebilir, dahili API’leri veya üçüncü parti hizmetleri sorunsuz bir şekilde entegre edebilir ve kodunuzun güvenlik ve kodlama standartlarınıza uygun olduğundan emin olabilirsiniz. Geliştiriciler için bu aynı zamanda WordPress’in çekirdek yapısını – içerisini de dahil olmak üzere – derinlemesine anlamak anlamına gelir.Hook(Sistem ve veritabanı işlemleri için mükemmel bir uygulama.) Eklenti geliştirme becerilerine hakim olmak, herhangi bir WordPress projesi için gerçekten özelleştirilmiş çözümler oluşturabilmeniz anlamına gelir.

İlk eklentinizin temel yapısını oluşturun.

Bir WordPress eklentisi oluşturmak, basit bir dizin ve ana dosya ile başlar. Eklentinin temel yapısı, sonraki tüm özelliklerin geliştirilmesi için temel taşıdır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Becerilerini Kazanın: Sıfırdan Başlayarak Verimli ve Özelleştirilebilir İşlev Modülleri Oluşturun

Eklentinin ana dosyasını oluşturun.

Tüm WordPress eklentilerinin, eklentiyi tanımlayan belirli başlık yorumlarını içeren bir ana PHP dosyasına sahip olması gerekir. Bunu yapmanız gerekiyor.wp-content/pluginsBir dizin altında yeni bir klasör oluşturun, örneğin:my-first-pluginArdından bu klasör içinde ana dosyayı oluşturun.my-first-plugin.php

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

Dosyanın başındaki yorumlar, eklentinin adını, açıklamasını, sürümünü, yazarını ve diğer ilgili bilgileri içermelidir. İşte en temel örnek:

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

Dosyayı kaydettikten sonra, WordPress arayüzündeki “Eklentiler” sayfasında bu eklentiyi görebilir ve etkinleştirebilirsiniz. Şu an için herhangi bir özelliği olmasa da, yapı zaten hazırdır.

Organizasyon eklenti dizini ve dosyaları

İşlevler arttıkça, mantıklı bir dosya yapısı çok önemlidir. Farklı türdeki kodların farklı alt klasörlere ayrılması önerilir; bu, uzun vadeli bakımı kolaylaştırır. Tipik ve basit bir eklenti dizini aşağıdaki gibi görünebilir:

my-first-plugin/
├── my-first-plugin.php      // 主文件,包含插件头和管理核心钩子
├── includes/                // 存放核心功能类或函数文件
│   └── class-core-functions.php
├── admin/                   // 后台相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── admin-settings.php
├── public/                  // 前端相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── class-public-handler.php
└── languages/               // 国际化翻译文件(.po/.mo)

Ana dosyadamy-first-plugin.phpBurada kullanabilirsiniz.require_onceinclude_onceBu modüler dosyaları ihtiyaca göre dahil edin. Bu yapı, arka uç mantığını, ön uç gösterimini ve temel işlevleri net bir şekilde birbirinden ayırır.

Tavsiye edilen okuma Kolay Anlaşılır Bir Şekilde: Sıfırdan Başlayarak WordPress Eklenti Geliştirmeyi Öğrenme Rehberi

İşlevleri uygulamak için hook’lar (düğümler) ve filtreler kullanılır.

WordPress’in eklenti mimarisi, olay tabanlı bir kancalama (hook) sistemi üzerine kuruludur ve esas olarak şunları içerir:Action(Eylem) veFilter(Filtreler): Bunları anlamak ve kullanabilmek, eklenti geliştirmenin temelidir.

Eylem kancaları aracılığıyla görevleri gerçekleştirin.

Eylem kancaları, belirli WordPress yaşam döngüsü anlarında (örneğin başlatma, ön uç başlığının yüklenmesi, makalenin kaydedilmesi sırasında) kendi kodunuzu eklemenize olanak tanır. Bunu kullanabilirsiniz.add_action()Bu fonksiyon, özel olarak oluşturulmuş fonksiyonu bu “kancalara” (hook’lara) bağlar.

Örneğin, web sitenizin yönetim arayüzünün üst kısmına bir yönetici bildirisi eklemek istiyorsanız, bunu şu şekilde yapabilirsiniz:admin_noticesBu eylem hook’u için öncelikle, ana eklenti dosyasında bir fonksiyon tanımlayın.my_custom_admin_noticeArdından bunu kancaya monte edin.

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_custom_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>Özel eklentim başarıyla etkinleştirildi!</p></div>';
}
// 将函数挂载到 admin_notices 动作钩子
add_action( 'admin_notices', 'my_custom_admin_notice' );

WordPress çalıştırıldığında…admin_noticesBu noktada, monte ettiğiniz fonksiyon otomatik olarak çağrılır ve böylece bir bildirim görüntülenir. Eylem kancası (“action hook”), “bir şey yapmak” için kullanılır ve bir dönüş değeri gerektirmez.

Verileri filtre kancaları kullanarak değiştirme

Eylem hook’larından farklı olarak, filtre hook’ları “bir şeyleri değiştirmek” için kullanılır. WordPress çekirdeğinde, diğer eklentilerde veya temalarda iletilen verileri değiştirmenize olanak tanır. Bunu kullanabilirsiniz.add_filter()Bir fonksiyon, bir filtre uygulamak için kullanılır.

Klasik bir örnek, bir makalenin içeriğinin son kısmındaki metinleri değiştirmektir. WordPress bunu sağlar.the_contentFiltreler, görüntülenecek makale içeriğini değiştirmenize olanak tanır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan İleri Seviyelere

// 定义修改内容的函数
function append_custom_text_to_content( $content ) {
    if ( is_single() ) { // 仅对单篇文章页面生效
        $custom_text = '<p><em>Okuduğunuz için teşekkür ederim! Bu makale, benim eklentim tarafından desteklenmektedir.</em></p>';
        $content .= $custom_text;
    }
    return $content; // 必须返回修改后的内容
}
// 将函数挂载到 the_content 过滤器钩子
add_filter( 'the_content', 'append_custom_text_to_content' );

Filtre fonksiyonu, bir girdi değeri alır (burada…)$contentİşlendikten sonra mutlaka bir değer döndürülmelidir. Bu yöntemle, WordPress tarafından işlenen neredeyse her türlü veriyi esnek bir şekilde değiştirebilirsiniz.

Eklenti için yönetim ayarları sayfası oluşturun.

Kullanıcı tarafından yapılandırılması gereken eklentiler için, kullanıcı dostu bir arka plan ayar sayfası sağlamak şarttır. WordPress, menü sayfaları ve seçenek sayfaları oluşturma sürecini kolaylaştırmak için bir dizi API sunar.

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.

Üst düzey menü veya alt menü ekleyin.

Kullanabilirsiniz.add_menu_page()Bu fonksiyon, eklenti için bağımsız bir arka plan üst düzey menüsü oluşturur veya bunu kullanmanıza olanak tanır.add_submenu_page()Mevcut bir menüye (örneğin “Ayarlar”) bir alt öğe olarak ekleyin. Genellikle, bu işlem için ilgili öğenin menüye eklenmesi gerekmektedir.admin_menuAksiyon kancasına.

Aşağıdaki kod, basit bir üst düzey ayar sayfasının nasıl ekleneceğini göstermektedir:

function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限(管理员)
        'my-plugin-settings',    // 菜单slug(URL标识)
        'my_plugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                       // 菜单位置
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

Daha sonra, bir geri çağırma (callback) fonksiyonu tanımlamanız gerekiyor.my_plugin_settings_pageSayfanın HTML içeriğini renderlemek için…

Bir ayar formu oluşturun ve kaydetme seçeneklerini ekleyin.

WordPress’inSettings APIGüvenli bir şekilde kayıt olmak, doğrulama yapmak ve ayarları saklamak için standartlaştırılmış yöntemler sunar. Bu yöntemler, doğrudan işlemlerle ilgili sorunları önler.$_POSTVeriler, güvenliği artırmıştır.

Öncelikle, kullanın.register_setting()Bir ayar grubu oluşturun ve bunu kullanın.add_settings_section()Bir bölge ekleyin ve bunu kullanın.add_settings_field()Belirli alanları ekleyin. Daha sonra, önceden tanımlanan geri çağırma fonksiyonunda bunları kullanın.settings_fields()do_settings_sections()Bir fonksiyon kullanarak formu çıktı olarak alabilirsiniz.

function my_plugin_settings_page() {
    // 检查用户权限
    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_options_group' );
            // 输出设置区域和字段
            do_settings_sections( 'my-plugin-settings' );
            // 输出提交按钮
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

geçmek (bir fatura veya teftiş vb.)Settings APIKolayca metin kutuları, açılır menüler, onay kutuları gibi çeşitli alanları içeren ayar sayfaları oluşturabilirsiniz ve tüm veriler güvenli bir şekilde saklanır.wp_optionsTabloda, şu yolla erişilebilir:get_option()Fonksiyon, ön uçta veya arka uçta çağrılabilir.

Eklentinin güvenliğini ve sürdürülebilirliğini sağlamak

Sağlam bir eklenti yazmak, sadece işlevlerin yerine getirilmesiyle ilgili değildir; aynı zamanda güvenlik, performans ve gelecekteki sürdürülebilirlik de göz önünde bulundurulmalıdır. En iyi uygulamalara uyulması son derece önemlidir.

Veri Doğrulama, Kaçınma ve Güvenli Olmayan İşlemler

Bu, eklenti güvenliğinin ilk savunma hattıdır. Kullanıcılardan veya dış kaynaklardan gelen tüm veriler (örneğin…)$_GET$_POST$_COOKIEVeritabanına erişilmeden önce veya sayfada görüntülenmeden önce, her veri kesinlikle sıkı bir doğrulamadan geçirilmeli ve uygun şekilde işlenmelidir (yani “escape” işlemi uygulanmalıdır).

Girdiler için (veritabanına kaydedilmeden önce), doğrulama fonksiyonları kullanın.sanitize_text_field()absint()Verileri temizlemek için… Veritabanından alınan ve tarayıcıda gösterilecek veriler için, escape (kaçınma) fonksiyonları gibi araçlar kullanılmalıdır.esc_html()esc_attr()esc_url()XSS saldırılarını önlemek için…

// Form gönderiminin işlenmesi (Örnek; genellikle options.php dosyasında Settings API tarafından yapılır)
$$user_input = isset($$_POST['my_field']) ? sanitize_text_field($$_POST['my_field']) : '';

// Veritabanından alınan verilerin ön tarafta gösterilmesi
echo '<div class="info">'`. esc_html( get_option( 'my_saved_option' ) ) `.'</div>';

Ayrıca, veritabanı sorgularını gerçekleştirirken mutlaka kullanılmalıdır.$wpdbSınıf tarafından sağlanan metotlar (örneğin…)$wpdb->prepare()SQL enjeksiyonlarını önlemek için…

Uluslararasılaştırma ve yerelleştirme desteğini sağlamak

Eklentinizin tüm dünyadaki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) desteğinin sağlanması gereklidir. Bu, kullanıcıya yönelik tüm metinlerin WordPress’in çeviri fonksiyonları kullanılarak işlenmesi gerektiği anlamına gelir.

Kullanın.__()Bir fonksiyon, bir string'i çevirir ve geri döndürür._e()Bir fonksiyon, bir string’i çevirir ve doğrudan sonucu döndürür. Bu fonksiyon, eklentinin başlık dosyasında (plugin header) tanımlanmıştır.Text Domain(Giriş alanı) Burada kullanılan giriş alanı ile aynı olmalıdır.

// 错误示例:直接输出英文字符串
echo “Hello World”;

// 正确示例:可翻译的字符串
echo esc_html__( ‘Hello World’, ‘my-first-plugin’ );
// 或者
_e( ‘Hello World’, ‘my-first-plugin’ );

Daha sonra, Poedit gibi bir araç kullanarak, tüm işaretlenmiş metinleri çıkarıp bir dosya oluşturabilirsiniz..potBu dosya, çevirmenlerin farklı dillerde çeviriler yapmaları için kullanılır..po.moDosya… Onu eklentinin içine koyun.languagesKlasöre eklediğinizde, WordPress site diline göre ilgili çevirileri otomatik olarak yükleyecektir.

Özetle.

WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştüren sistematik bir süreçtir. Standart başlık bilgilerini içeren bir ana dosya oluşturarak ilk adımınızı atmış oldunuz. Eylem (action) ve filtre (filter) hook’larını derinlemesine anlamak ve kullanmak, eklentinin dinamik özelliklere sahip olmasının temelidir; bu sayede WordPress’in çalıştığı her aşamada sorunsuz bir şekilde müdahale edebilirsiniz. Settings API aracılığıyla oluşturulan yönetim arayüzü ise kullanıcı dostu bir yapı sunarak eklentinin profesyonelliğini artırır.

Tüm geliştirme süreci boyunca, güvenlik ilkeleri her zaman göz önünde bulundurulmalıdır; bu, sıkı veri doğrulama işlemleri, verilerin uygun şekilde işlenmesi ve standartlaştırılmış veritabanı işlemlerini içerir. Aynı zamanda, uluslararası destek sayesinde eklentiniz daha geniş bir küresel kullanıcı kitlesine hizmet verebilir. Arka uç, ön uç ve çekirdek kodların ayrılması gibi net bir dosya organizasyon yapısına ve kodlama standartlarına uymak, eklentinin uzun vadeli bakımını ve işlevlerinin genişletilmesini sağlayacaktır. Unutmayın ki, mükemmel bir eklenti sadece çalışan kod değil; aynı zamanda güvenli, verimli ve kolayca bakımı yapılan bir çözümdür.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi temel teknolojilere hakim olmak gerekiyor?

PHP dilinin temellerine aşina olmanız gerekiyor; çünkü eklentiler çoğunlukla PHP ile yazılmıştır. Aynı zamanda, ön ve arka uç arayüzlerini ve etkileşimleri oluşturmak için HTML, CSS ve JavaScript’i de anlamanız gerekmektedir. En önemlisi, WordPress’e özgü bilgi sistemini kavramanızdır; bu sistem, eklentilerin işlevlerini yerine getirmesini sağlayan “Kancalar” (Actions ve Filters) ve veritabanı işlemleri ile ilgili özellikleri içerir.$wpdbAyarlar API’si (Settings API), REST API’si ve benzerleri de dahil olmak üzere, WordPress’in temaları ve eklentileriyle ilgili çalışma önceliklerini (running priorities) anlamak da oldukça faydalıdır.

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

Öncelikle, 'den emin olun.wp-config.phpDosyada etkinleştirildi.WP_DEBUGBu mod, PHP hatalarını, uyarılarını ve bildirimlerini doğrudan sayfada gösterecektir. Kullanımı şu şekildedir:error_log()Değişkenleri ve işlemleri izlemek için bilgileri özel bir günlük dosyasına yazabilirsiniz. Karmaşık Ajax veya REST API çağrıları için, tarayıcı geliştirici araçlarının “Ağ” bölümünü kullanabilirsiniz. Ayrıca, “Query Monitor” gibi birçok mükemmel eklenti bulunmaktadır; bu eklentiler veritabanı sorgularını, işlem adımlarını ve performans sorunlarını derinlemesine analiz etmenize yardımcı olur ve geliştirme ve hata ayıklama sürecinde büyük faydalar sağlar.

Eklenti geliştirme işlemi tamamlandıktan sonra, bunu WordPress resmi kataloğuna nasıl yayınlayabilirsiniz?

Öncelikle, eklenti kodunun WordPress’in resmi kodlama standartlarına ve klasör yapısına uygun olduğundan emin olmanız gerekiyor. Örneğin, standart bir dosya yapısının bulunması zorunludur.readme.txtÖncelikle bir dosya oluşturun. Daha sonra, WordPress.org’da bir geliştirici hesabı açın ve eklentinizi inceleme için gönderin. İnceleme sürecinde kod kalitesi, güvenlik, lisans anlaşması (GPL ile uyumlu olması gerekiyor) ve işlev açıklamaları gibi konular kontrol edilir. İncelemeden geçtikten sonra, eklentinin kodunu resmi SVN deposuna SVN aracılığıyla gönderebilirsiniz. Bundan sonra, eklentinin sürümlerini arka plan yönetim arayüzü üzerinden güncelleyebilirsiniz.

Özel eklentiler ve temalar için functions.php dosyalarına kod eklemenin arasındaki fark nedir?

Kodu mevcut temaya ekleyin.functions.phpDosyalar, bir sitenin belirli özelliklerini hızlı bir şekilde test etmek veya eklemek için basit bir yöntemdir. Ancak bu yöntemin belirgin dezavantajları vardır: Özellikler belirli bir temaya bağlıdır ve tema değiştirildiğinde bu özellikler çalışmaz hale gelir. Ayrıca, kodun iyi bir şekilde kapsüllenmemiş ve adlandırılmamış olması nedeniyle diğer kodlarla çakışmalar oluşabilir.

Bağımsız bir eklenti oluşturmak, işlevleri temadan ayırır ve böylece hangi tema kullanılırsa kullanılsın eklentinin sorunsuz çalışmasını sağlar. Eklentiler tam bir yapıya sahiptir; kodu daha iyi organize etmeye, bağımlılıkları yönetmeye, ayar sayfaları sunmaya ve bağımsız olarak güncellenmeye olanak tanır. Tekrar kullanılması planlanan, karmaşık işlevler veya başkalarına dağıtılması gereken işlevler için eklentiler kesinlikle doğru seçenektir.