Sıfırdan Başlayın: İlk WordPress Eklentinizi Oluşturun

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

Sıfırdan Başlayın: İlk WordPress Eklentinizi Oluşturun

WordPress eklenti geliştirme, WordPress’in temel özelliklerini genişletmenin temel yoludur. Eklentiler oluşturarak, geliştiriciler web sitelerine özel işlevler ekleyebilirler; bunu yaparken temaları veya çekirdek dosyaları değiştirmelerine gerek kalmaz. Bu da işlevlerin bağımsızlığını ve taşınabilirliğini sağlar. Standart bir eklenti genellikle bir ana PHP dosyası, isteğe bağlı kaynak dosyaları (örneğin CSS, JavaScript) ve dil paketlerinden oluşur. Eklentilerin temel yapısını anlamak, başarılı bir geliştirme sürecinin ilk adımıdır.

WordPress eklentilerinin temel yapısı ve oluşturulması

Bir eklentinin en temel formu, belirli bir yere yerleştirilen bir dosya veya kod parçasıdır./wp-content/plugins/Katalogdaki klasör. Bu klasörde en az bir ana PHP dosyası bulunmalıdır ve bu dosyanın başlık kısmındaki yorumlar, eklentinin bilgilerini WordPress’e bildirmek için kullanılır.

Eklenti başlık bölümüne not yazma işlemi

Her eklentinin ana dosyası, belirli bir PHP yorum bloğu ile başlamalıdır; buna “eklenti başlığı” (plugin header) denir. WordPress, bu bilgileri okuyarak yönetim panelindeki eklenti listesinde eklentinizi tanır ve gösterir. Standart bir başlık yorumu aşağıdaki gibidir:

Tavsiye edilen okuma WordPress eklenti geliştirmenin detaylı analizi: sıfırdan başlamak ve verimli özelleştirmeye geçmek.

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

Bunlar arasında,Plugin NameZorunludur; diğer alanlar isteğe bağlıdır. Ancak eklentinin bütünlüğü ve profesyonelliği açısından, mümkün olduğunca tüm alanları doldurmanız önerilir.Text DomainUluslararasılaştırma amacıyla kullanılır ve sonraki eklentilerin çevirisinin temelini oluşturur.

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

Bir eklenti ana dosyası ve dizini oluşturun.

Öncelikle,/wp-content/plugins/Bir dizin altında yeni bir klasör oluşturun, örneğin:my-first-pluginDaha sonra bu klasör içinde ana PHP dosyasını oluşturun; bu dosya genellikle klasörün adıyla aynı adı taşır.my-first-plugin.phpYukarıdaki başlık bilgilerini bu dosyaya ekleyin, dosyayı kaydedin ve ardından WordPress arayüzündeki “Eklentiler” sayfasında bu eklentiyi görebilir ve etkinleştirebilirsiniz. Şu an için herhangi bir özelliği yoktur.

Çekirdek Geliştirme Kavramları: Eylem Hook’ları ve Filtreler

WordPress’in eklenti yapısı, eklentilerin çekirdek ile etkileşim kurmasını sağlayan “kancalar” (hooks) sistemi üzerine kuruludur. Kancalar esas olarak iki kategoriye ayrılır: Eylem kancaları (action hooks) ve filtre kancaları (filter hooks).

Hareket kancalarını (action hooks) anlamak ve kullanmak

Eylem kancaları, belirli zaman noktalarında veya bir olay meydana geldiğinde özelleştirilmiş PHP kodlarınızı çalıştırmanıza olanak tanır. Bunu kullanabilirsiniz.add_action()Bu fonksiyon, sizin yazdığınız fonksiyonu bir “düğüme” (hook) bağlar. Örneğin, bir makalenin sonuna otomatik olarak bir metin parçası eklemek için kullanılabilir.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>Okuduğunuz için teşekkür ederiz!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Dikkat, bu örnek aslında içeriği değiştirmek için filtre kancalarını (filter hooks) kullanmaktadır. Tipik bir eylem kancası (action hook) örneği, yönetim arayüzünde bir menü eklemektir:

Tavsiye edilen okuma Sıfırdan WordPress Eklentisi Geliştirmeyi Öğrenmek: İlk Özel Özelliğinizi Oluşturmak

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Burada,add_action()functionmyplugin_add_admin_menuBağlanmak.admin_menuBu eylem hook’u, WordPress arka plan menüsünü oluştururken otomatik olarak çağrılır.

Filtre kancalarını anlamak ve kullanmak

Filtre hook’ları, WordPress’in işleme sırasında ürettiği verileri değiştirmek için kullanılır. Bunu yapabilirsiniz.add_filter()Bir fonksiyon, kendi fonksiyonunuzu monte etmek için kullanılır. Filtreleme fonksiyonu, girdi değerlerini alır, bunları değiştirir ve ardından değiştirilmiş değerleri döndürmelidir. Örneğin, bir makale başlığını değiştirmek gibi…

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Filtreler çok güçlüdür ve genellikle sorgu sonuçlarını, metin içeriğini, seçenek değerlerini ve WordPress tarafından üretilen hemen hemen tüm verileri değiştirmek için kullanılır.

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

Eklentiye ayar sayfası ve seçenekler ekleyin.

İyi bir şekilde geliştirilmiş bir eklenti, genellikle kullanıcılara yapılandırma seçenekleri sunmalıdır. WordPress, seçenek sayfalarını güvenli ve standart bir şekilde oluşturmak için bir ayar API’si sağlar.

Yönetim menüsü ve sayfaları oluşturun.

Öncelikle, kullanmanız gereken şey…add_menu_page()add_options_page()Belirli fonksiyonları kullanarak bir yönetim sayfası ekleyebiliriz. Genellikle bu işlemi belirli bir yere (örneğin, bir uygulamanın ana sayfasına veya bir modülüne) bağlarız (mount ederiz).admin_menuDaha önceki örnekte gösterildiği gibi, kancada…myplugin_settings_pageBu, ayar sayfasının HTML içeriğini renderlemek için kullanılan bir geri çağırma (callback) fonksiyonudur.

Settings API’sini kullanarak seçenekleri kaydedin.

Settings API, ayarların kaydedilmesi, doğrulanması ve yönetilmesi için güvenli bir yol sunar. Temel adımlar şunları içerir:register_setting()Bir ayar grubu oluşturun ve bunu kullanın.add_settings_section()Bir ayar bölümü ekleyin ve bunu kullanın.add_settings_field()Belirli ayar alanlarını ekleyin.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Pratik Bir Eğitim Kitabı

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Daha sonra, ilgili geri çağırma (callback) fonksiyonlarını yazmanız gerekiyor.myplugin_section_general_cbmyplugin_field_text_cbLütfen blok açıklamasını ve alanlar için HTML giriş kutularını oluşturun. Son olarak,myplugin_settings_pageFonksiyon içinde, kullanılır.settings_fields()do_settings_sections()Bir fonksiyon, tüm formu çıktı olarak verir.

Eklentilerin Güvenliği ve En İyi Uygulamalar

Eklentiler geliştirilirken, güvenlik en önemli faktördür. Güvensiz bir eklenti tüm web sitesini tehlikeye atabilir.

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.

Veri Doğrulama, Temizleme ve Kaçınma (Data Validation, Cleaning, and Escaping)

Kullanıcı tarafından girilen verilere veya veritabanından alınan verilere asla güvenmeyin. $_POST, $_GET gibi herhangi bir girdiyi işlerken, bu verilerin doğrulanması ve temizlenmesi şarttır. WordPress, bu amaç için birçok fonksiyon sunmaktadır.sanitize_text_field(), intval(), wp_kses()Verileri HTML veya JavaScript’e çıkardığınızda, escape (kaçırma) işlemi yapılması gerekmektedir. Bunun için `escape()` gibi fonksiyonlar kullanılır.esc_html(), esc_attr(), esc_js()wp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

İzin denetimi ile nonce kullanma

Tüm eklentiler tarafından gerçekleştirilen arka plan form gönderimleri veya AJAX istekleri için, isteklerin meşruiyetini ve benzersizliğini doğrulamak amacıyla WordPress’in nonce (rastgele sayı) mekanizması kullanılmalıdır. Bu, çapraz sitelik istek sahteciliği saldırılarını önlemek için gereklidir. Aynı zamanda,current_user_can()Fonksiyon, mevcut kullanıcının bu işlemi gerçekleştirmek için gerekli yetkilere sahip olup olmadığını kontrol eder.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

Özetle.

WordPress eklenti geliştirme, temel yapıları ve “hook” (bağlantı noktaları) mekanizmalarını anlamaktan başlayarak, işlevlerin gerçekleştirilmesine, kullanıcı arayüzlerinin oluşturulmasına kadar süren, sistematik bir süreçtir. Tüm bu adımlar boyunca sıkı güvenlik uygulamalarına da dikkat edilmesi gerekmektedir. WordPress’in kodlama standartlarına uyulması ve sağladığı API’lerin tam olarak kullanılmasıyla, geliştiriciler güçlü, güvenli ve kolayca bakımı yapılabilecek eklentiler oluşturabilirler. Önemli olan, özel işlevlerin “action” (eylem) ve “filter” (filtre) hook’ları aracılığıyla WordPress’in yaşam döngüsüne sorunsuz bir şekilde entegre edilmesidir. Ayrıca, yapılandırmaların “Settings API” kullanılarak yönetilmesi ve veri doğrulama, temizleme, kod dönüştürme (escape) ve yetki kontrolü gibi işlemlerin her zaman öncelikli olarak ele alınması gerekir.

Sıkça Sorulan Sorular.

###: WordPress eklentimizi nasıl hata ayıklarız?
WordPress’ın hata ayıklama (debugging) modunu açmak ilk adımdır.wp-config.phpDosyada,WP_DEBUGSabit, olarak ayarlandı.trueBu, PHP hatalarını, uyarılarını ve bildirimlerini doğrudan sayfada gösterecektir. Daha karmaşık hata ayıklamaları için ise başka araçlar kullanılabilir.error_log()Fonksiyon, bilgileri sunucunun hata günlüğüne kaydeder; ayrıca sorgular, hook’lar ve diğer ayrıntılı bilgileri görüntülemek için özel hata ayıklama eklentileri kullanılabilir.

Eklentim nasıl çok dilli destek sağlayabilir?

WordPress, uluslararasılaştırmayı (internationalization) gerçekleştirmek için GNU gettext çerçevesini kullanır. İlk adım olarak, eklentinin baş kısmındaki yorumlarda gerekli ayarlamaların yapılmasıdır.Text DomainEklenti kodunda, çevrilmeye ihtiyaç duyan tüm metinler için…__()Tabii ki, lütfen metni bana verin. Ne çevirmemi istediğinizi belirtin ve çeviriyi alın._e()Çeviriyi yapın ve doğrudan sonuçu verin. Daha sonra, Poedit gibi bir araç kullanarak, eklentinin kaynak kodundan gerekli metinleri çıkarın ve bir dosya halinde saklayın..potŞablon dosyaları; her dil için ayrı ayrı dosyalar oluşturulmalıdır..poVe derlenen.moDosyayı alın ve eklentinin içine yerleştirin./languages/Katalogun içinde.

Eklentilerdeki sınıf adlarının diğer eklentilerle çakışmasını nasıl önleyebiliriz?

Sınıf adları, fonksiyon adları veya sabit adları çakışmalarından kaçınmak için en iyi uygulama, ad alanları (namespace’ler) kullanmaktır veya tüm tanımlayıcılara benzersiz bir önek eklemektir. PHP 5.3’ten itibaren ad alanlarının kullanılması önerilmektedir. Örneğin:namespace MyPluginAdmin;Eğer uyumluluk göz önünde bulundurulursa, bir önek kullanılmalıdır ve bu önek yeterince özgün olmalıdır; örneğin, şirket adı ile eklenti adının kısaltmalarının birleştirilmesi gibi:function acme_myplugin_init() {}Sınıf adı şu şekilde tanımlanır:class Acme_MyPlugin_Admin_Settings {}

Eklentime özel bir veritabanı tablosu nasıl eklerim?

Eklentinin etkinleştirildiği zaman özel bir tablo oluşturmak en uygun zamandır. Tablo oluşturma kodunu bir fonksiyon içinde paketleyebilir ve bunu eklentinin diğer işlevleri aracılığıyla kullanabilirsiniz.register_activation_hook()Bu fonksiyonu kaydetmek için kullanın. Fonksiyonun içinde, gerekli işlemleri gerçekleştirin.dbDelta()Bu fonksiyon, tablo yapısını güvenli bir şekilde oluşturmak veya güncellemek için kullanılır ve çok spesifik bir SQL formatının kullanılmasını gerektirir. Lütfen bunu mutlaka uygulayın.$wpdb->prefixTablo adlarına bir site ön ekleri ekleyin; böylece çoklu site ortamlarını destekleyebilirsiniz.