Sıfırdan başlamak: WordPress eklenti geliştirme altyapısı.

2 dakika okuma.
2026-03-17
2026-06-03
2,485
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şlamak: WordPress eklenti geliştirme altyapısı.

Bir WordPress eklentisi geliştirmek istiyorsanız, öncelikle temel yapısını anlamanız gerekir. Bir eklentinin en temel dosyası ana dosyasıdır ve genellikle eklentinin adıyla adlandırılır. Örneğin:my-first-plugin.phpBu dosya, eklentinin tüm işlevsel kodlarını içermekle kalmaz; daha da önemlisi, dosyanın en üst kısmındaki eklenti bilgilerini içeren başlık yorumlarıdır. Bu başlık bölümü, WordPress’in eklentiyi tanımasında kilit bir rol oynar.

Eklenti başlık yorumlarında belirli meta verilerin bulunması gerekmektedir. İşte en temel örnek:

<?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ı oluşturdum ve onu belirli bir yere koydum./wp-content/plugins/Dizinin ardından, WordPress arka planındaki “Eklentiler” sayfasında bu eklentiyi görebilir ve etkinleştirebilir veya devre dışı bırakabilirsiniz. Bundan sonra, eklenti kodunun yükleme ve çalıştırma sırasını anlamak çok önemlidir. WordPress, eklentileri yüklerken bunları alfabetik sıraya göre yükler./wp-content/plugins/Katalogdaki tüm geçerli eklenti ana dosyaları. Dolayısıyla, eklentiniz diğer eklentilerin işlevlerine bağımlıysa, başka bir eklentinin zaten yüklendiğini varsayamazsınız. Bu durumda, kullanmanız gereken…plugins_loadedBu eylem hook’u, kodun doğru zamanda çalıştırılmasını sağlamak için kullanılır.

Tavsiye edilen okuma WordPress eklenti geliştirme rehberi: Sıfırdan başlayarak ticari düzeyde uzantılar oluşturmaya kadar.

Hook’ları Derinlemesine Anlama: Eylem ve Filtre Mekanizmaları

WordPress eklenti geliştirmenin temel felsefesi “Kancalar” (Hooks)’dır. Kancalar, WordPress’in çekirdeğine, temalara veya diğer eklentilere ait işlem akışlarına kendi kodunuzu eklemenizi sağlar; bunu orijinal dosyaları değiştirmeden yapabilirsiniz. Kancalar esas olarak iki kategoriye ayrılır: Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks).

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

Eylem kancaları, belirli bir olay meydana geldiğinde özel fonksiyonlarınızı çalıştırmanıza olanak tanır. Örneğin, bir makale yayınlandığında…publish_post), kaynakların web sayfasının üst kısmında yüklenmesi sırasında (wp_enqueue_scriptsVeya yönetim arayüzünden başlatılırken (admin_initBir eylem kancası (action hook) kullanmak istiyorsanız, şunları yapmanız gerekmektedir:add_action()Fonksiyon, geri çağırma fonksiyonunuzu (callback function) o “kancaya” (hook) monte eder.

add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
    // 在WordPress初始化时执行
    // 例如,注册一个自定义文章类型
}

Filtre hook’ları, verileri değiştirmek için kullanılır. Size, kendisine iletilen değişkenleri durdurma ve değiştirme imkanı verir; ardından bu değişkenleri geri gönderirsiniz. Örneğin, bir makalenin içeriğini değiştirmek için bunu kullanabilirsiniz.the_contentAyrıca, alıntıların uzunluğunu değiştirebilirsiniz.excerpt_lengthVeya sorgu sonuçlarını değiştirin.the_postsFiltreleri kullanmak için bir çağrı yapmanız gerekmektedir.add_filter()İşlev.

add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
    // 修改文章标题
    return '前缀:' . $title;
}

Özel bir kancalar (hook) oluşturun.

WordPress tarafından sağlanan yüzlerce yerleşik eklenti bağlantısının (hook) yanı sıra, gelişmiş eklenti geliştiricileri diğer geliştiricilerin kullanımı için kendi eklenti bağlantılarını da oluşturabilirler.do_action()Bir eylem kancası (action hook) oluşturmak için kullanın.apply_filters()Bir filtre hook’u oluşturmak için…

// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );

// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value );

Eklenti Özelliklerinin Oluşturulması: Güvenlik ve En İyi Uygulamalar

Eklentilerin işlevlerini yazarken, güvenlik en önemli faktördür. Kullanıcı girdilerine asla güvenmeyin. Formlar, URL parametreleri, çerezler gibi dış kaynaklardan gelen tüm verilerin doğrulanması, temizlenmesi ve escape işleminden geçirilmesi gerekir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan Başlayarak Özelleştirilmiş İşlevler Oluşturma

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

Girdi için kullanın.sanitize_text_field()sanitize_email()intval()Bu fonksiyonlar temizlik için kullanılır. HTML sayfalarına çıkarılan veriler için ise…esc_html()esc_attr()wp_kses_post()Kaçak betik saldırılarını (Cross-Site Scripting – XSS) önlemek için karakterlerin özel şekillerde yazılması gerekmektedir. Bu işleme “ekranlama” (escaping) denir.

$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );

// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>';

Veritabanı ile etkileşim kurmak

WordPress sunmaktadır.$wpdbKüresel nesneler doğrudan veritabanı işlemleri için kullanılır, ancak WordPress’in yerleşik fonksiyonları tercih edilmelidir.get_post()update_option()Ve benzerleri. Eğer SQL kullanmak zorundaysanız, lütfen bunu mutlaka yapın.$wpdb->prepare()SQL enjeksiyonunu önlemek için yöntemler.

global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
    $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
);

Yönetim menüsü ve sayfaları ekleyin.

Eklentiler için bir yapılandırma sayfası oluşturmak yaygın bir ihtiyaçtır. Bunu yapmak için şu yöntemleri kullanabilirsiniz:add_menu_page()add_options_page()Bu fonksiyonlar, arka planda menü öğeleri ekler. Bu fonksiyonların…admin_menuAksiyon hook’unda çağrı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
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-slug',  // 菜单别名
        'myplugin_settings_page' // 用于呈现页面的回调函数
    );
}
function myplugin_settings_page() {
    // 输出设置页面HTML
    echo '<div class="wrap"><h1>Ayarlar</h1></div>';
}

Eklenti yayınlamaya hazırlanıyor: Uluslararasılaştırma ve kod organizasyonu

Eklentinin işlevleri geliştirildikten sonra, daha geniş bir kullanıcı kitlesine ulaşmak ve bakımını kolaylaştırmak için uluslararasılaştırma (internationalization) ve kod organizasyonuna (code organization) dikkat etmek gerekmektedir.

Eklentiyi uluslararası hale getirmek (plugin internationalization)

Uluslararasılaştırma (i18n), eklentinizin diğer dillere çevrilebilmesini sağlar. Bunun için WordPress’in çeviri fonksiyonlarını kullanmanız gerekir.__()_e()_x()Tüm kullanıcılar tarafından görülebilen string’leri bir araya getirin ve bunları eklentinin baş kısmında beyan edin.Text Domain(Örneğin)my-first-plugin)。

// 在代码中
$greeting = __( 'Hello, World!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。

Modüler kod organizasyonu

Tüm kodun ana dosyada bir araya getirilmesinden kaçının. İyi bir uygulama, farklı işlevlere sahip kodların ayrı ayrı dosyalara bölünmesidir..phpDosyalar içeride bulunmakta ve bunlar ana dosya aracılığıyla içerilmektedir. Örneğin:
- includes/admin/ Katalog, arka planda kullanılan ilgili kodları içerir.
- includes/public/ Katalog, ön uç (front-end) ile ilgili kodları içermektedir.
- includes/class-*.php Ana sınıf tanımlarının saklandığı yer.
- assets/css/assets/js/ Stil şemalarını ve betikleri burada saklar.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Özel İşlevler Oluşturmanın Temel Teknikleri

Nesne yönelimli programlama kullanarak kodu daha iyi organize edebilir, fonksiyon adı çakışmalarını önleyebilir ve yeniden kullanılabilirliği artırabilirsiniz. Bir ana sınıf tanımlayın ve yapıcısında (constructor) gerekli tüm işlemleri (hook’ları) yerine getirin.

class My_First_Plugin {
    public function __construct() {
        add_action( 'init', array( $this, 'init_method' ) );
        add_filter( 'the_content', array( $this, 'filter_content' ) );
    }
    public function init_method() {
        // 初始化
    }
    public function filter_content( $content ) {
        return $content . '<p>Eklenti içeriği ekleme</p>';
    }
}
new My_First_Plugin();

Özetle.

WordPress eklenti geliştirme, özel özelliklerin WordPress ekosistemine sorunsuz bir şekilde entegre edilmesi sürecidir. Bu sürecin temeli, standartlara uygun bir eklenti başlık dosyasıyla başlar. Geliştirmenin özü, eylem kancaları (action hooks) ve filtre kancaları (filter hooks) kullanılarak WordPress’in işleyişinin olay tabanlı bir şekilde genişletilmesi veya değiştirilmesidir. Kodlama sırasında güvenliği en üst düzeye çıkarmak, verilerin sıkı bir şekilde doğrulanması, temizlenmesi ve dönüştürülmesi gerekmektedir. Eklentinin işlevleri arttıkça, iyi bir kod organizasyonu (nesne yönelimli tasarım ve modüler dosya yapıları dahil) ve uluslararasılaştırma desteği, eklentinin sürdürülebilirliğini, profesyonelliğini ve kullanıcı kapsamını artırmanın anahtar adımlarıdır. Bu en iyi uygulamalara uyarak, güçlü, güvenli ve dağıtımı kolay WordPress eklentileri oluşturabilirsiniz.

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.

Sıkça Sorulan Sorular.

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

PHP dilinin temellerini öğrenmeniz gerekiyor; çünkü WordPress ve eklentileri PHP ile yazılmıştır. Ayrıca, ön uç görünümü ve etkileşimi yönetmek için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. En önemlisi, WordPress’in temel işleyiş sürecini ve eklenti geliştirmenin temel mekanizması olan “Hook” (Kancalar) sistemini anlamanızdır.

Eklentimdeki fonksiyon adlarının diğer eklentilerle çakışmasını nasıl önleyebilirim?

En iyi uygulama, nesne yönelimli programlama (OOP – Object-Oriented Programming) kullanmaktır; böylece işlevleriniz bir sınıf içinde kapsüllenir ve sınıf içindeki metot adları bağımsız hale gelir. Eğer prosedürsel programlama kullanılıyorsa, tüm fonksiyonlar, sınıflar ve sabitler için benzersiz bir önek eklenmelidir. Bu önek, eklentinizin kısaltması veya marka adı olabilir.myplugin_acme_Ve tüm kod boyunca tutarlılığı sağlayın.

Eklentinin JavaScript ve CSS dosyalarını nerede yüklemeliyim?

Doğruluğu ve performansı sağlamak için, HTML şablonlarınızda asla kaynak dosyalarına doğrudan bağlantı kurmayın. Bunun yerine WordPress tarafından sağlanan “enkoleme” (enqueue) fonksiyonlarını kullanmalısınız. Ön uç kaynaklar için bu fonksiyonlar, sayfaların daha hızlı yüklenmesine yardımcı olur.wp_enqueue_script()wp_enqueue_style()Ve bunu şu yere monte edin:wp_enqueue_scriptsAksiyon kancalarına (action hooks) bağlanır. Yalnızca arka uç yönetim arayüzünde kullanılan kaynaklar için, bu kaynaklar ilgili kancalara monte edilir.admin_enqueue_scriptsKancada.

Eklentiler, kendi ayarlarını ve verilerini nasıl saklar?

Basit ve tek değerli ayarlar için WordPress Option API’sini kullanabilirsiniz.add_option()get_option()update_option()İşlevler. Daha karmaşık ve yapılandırılmış veriler için (örneğin, form girişleri listesi), özel veritabanı tabloları oluşturulmalıdır. Bunlar kullanılabilir.dbDelta()Fonksiyon, eklenti etkinleştirildiğinde (…) çalışır.register_activation_hookTablo yapısını güvenli bir şekilde oluşturun veya güncelleyin.