Sıfırdan başlayarak WordPress eklenti geliştirmeye ustalaşmak: Kapsamlı bir rehber ve uygulamalı çalışmalar.

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

WordPress eklentileri, WordPress’in temel özelliklerini genişletmenin temel yoludur. Geliştiricilere, çekirdek kodu değiştirmeden web sitelerine neredeyse her türlü özellik eklemelerine olanak tanır. İster basit kısa kodlar olsun, ister karmaşık e-ticaret sistemleri; her şey eklentiler aracılığıyla gerçekleştirilebilir. Eklenti geliştirmeyi anlamak, belirli ihtiyaçları özelleştirilmiş bir şekilde karşılayabilmeniz, yeniden kullanılabilir işlev modülleri oluşturabilmeniz ve hatta kendi ürünlerinizi geliştirebilmeniz anlamına gelir. Bu makale, sizi temel kavramlardan pratik geliştirmeye kadar yönlendirerek WordPress eklenti geliştirmenin temel becerilerini adım adım öğrenmenize yardımcı olacaktır.

WordPress Eklenti Geliştirme Temelleri ve Ortam Hazırlığı

İlk satır kodu yazmadan önce, eklentinin temel bileşenlerini anlamanız ve geliştirme ortamını hazırlamanız gerekmektedir.

Eklentilerin temel yapısı ve dosya organizasyonu

En basit WordPress eklentisi yalnızca bir dosyadan oluşabilir. Bu ana dosya, WordPress’in eklenti bilgilerini tanımasını sağlayan belirli eklenti başlık yorumlarını içermelidir. Bu ana dosya genellikle “`wp-content plugins/`” dizininde bulunur ve adı “`my-simple-plugin.php`” gibi olur. your-plugin-name.php

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

Eklenti başlık kısmındaki yorumların formatı şu şekildedir:

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: 这是一个简单的插件描述。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Bu açıklama, eklentinin adını, sürümünü, yazarını ve diğer meta bilgilerini tanımlar; yani eklentinin “kimlik kartı”dır. Eklenti dosyası, belirlenen bir yere yerleştirilmelidir. /wp-content/plugins/ Dizin içinde, tek başına bir PHP dosyası bulunabilir; ayrıca, eklenti adıyla adlandırılmış bir klasör de olabilir ve bu klasör ana dosyayı ve diğer kaynakları içerebilir.

Yerel geliştirme ortamını kurmak.

Güvenilir bir yerel geliştirme ortamı çok önemlidir. PHP, MySQL ve Apache/Nginx içeren bir WordPress ortamını hızlı bir şekilde kurmak için Local by Flywheel, XAMPP veya MAMP gibi araçların kullanılması önerilir. Ayrıca, Visual Studio Code veya PHPStorm gibi bir kod editörüne ve geliştirme verimliliğini artırmak için ilgili PHP ve WordPress kod algılama eklentilerine ihtiyacınız olacaktır.

Çevrenizin hedef sunucuyla benzer bir PHP sürümü kullandığından emin olun (PHP 7.4 veya daha yüksek önerilir) ve… wp-config.php Açık. WP_DEBUG Bu mod, geliştirme sürecinde hataları ve uyarıları yakalamak için tasarlanmıştır.

define( 'WP_DEBUG', true );

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

WordPress eklenti geliştirmenin temel felsefesi “Kancalar” (Hooks)dır; bu sayede belirli zaman noktalarında veya konumlarda özel kodlar ekleyebilirsiniz, çekirdek dosyaları değiştirmenize gerek kalmaz. Kancalar iki türe ayrılır: Eylemler (Actions) ve Filtreler (Filters).

Tavsiye edilen okuma WordPress Eklenti Geliştirmeyi Sıfırdan Öğrenin: Prensipler, Uygulamalar ve İleri Seviye Teknikler

Hareket kancalarını anlamak.

Aksiyon hook’ları, WordPress’te belirli anlarda (örneğin makale yayınlanırken veya sayfa başlığı yüklenirken) özel fonksiyonlarınızı çalıştırmanıza olanak tanır. Bunu kullanabilirsiniz. add_action() Bu fonksiyon, sizin fonksiyonunuzu bir “kancaya” (hook) monte eder.

Örneğin, web sitesinin ön yüz sayfasında… Bazı içerikler ekleyerek kullanabilirsiniz. wp_head Action Hook:

function myplugin_add_custom_head_content() {
    echo '<meta name="my-custom-tag" content="Hello from my plugin">';
}
add_action( 'wp_head', 'myplugin_add_custom_head_content' );

WordPress çalıştırıldığında… wp_head Konumlandırma işlemi gerçekleştirildiğinde, bizim monte ettiğimiz bileşenler çağrılır. myplugin_add_custom_head_content İşlev.

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

“Filtre hook’larını anlamak” (Understanding filter hooks)

Filtre hook’ları, verileri değiştirmek için kullanılır. Verilerin kullanılmadan veya veritabanına kaydedilmeden önce üzerinde değişiklik yapmanıza olanak tanır. add_filter() Filtreleri uygulamak için bir fonksiyon kullanılır.

Klasik bir örnek, makale başlıklarının görünümünü değiştirmektir. Aşağıdaki kod, tüm makale başlıklarının önüne “Önemli:” ifadesini ekleyecektir:

function myplugin_prepend_to_title( $title ) {
    if ( is_single() ) {
        $title = '重要:' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prepend_to_title' );

Fonksiyon, orijinal başlığı bir parametre olarak alır ve değişiklikler yapıldıktan sonra bu başlığı geri döndürmelidir. WordPress çekirdeği ve birçok eklenti, eklentilerin sisteme etkileşim kurmasının temel yolu olan yüzlerce eylem (action) ve filtre kancası (filter hook) sunar.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun

İlk fonksiyonel eklentinizi oluşturun.

Hadi, bir “makale okuma süresi tahmini” eklentisi oluşturalım ve bu eklenti, hook’ları (düğümleri), kısa kodları (shortcodes) ve ayar seçeneklerini kapsamlı bir şekilde kullanacaktır.

Eklenti ana dosyası ve işlevlerin gerçekleştirilmesi

Öncelikle, /wp-content/plugins/ Katalog altında bir klasör oluşturun. post-reading-timeVe bunun içinde ana dosyayı oluşturun. post-reading-time.phpEklentinin başlık bilgilerini doldurun.

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.

Şimdi, çekirdek işlevi gerçekleştireceğiz. Bu fonksiyon, makalenin okunma süresini hesaplayacak (ortalama okuma hızının dakikada 200 kelime olduğu varsayılarak) ve biçimlendirilmiş bir dize döndürecek.

function prt_calculate_reading_time( $post_id ) {
    $post_content = get_post_field( 'post_content', $post_id );
    // 清除短代码和HTML标签,只计算纯文字
    $clean_content = strip_shortcodes( $post_content );
    $clean_content = wp_strip_all_tags( $clean_content );
    $word_count = str_word_count( $clean_content );

$reading_time = ceil( $word_count / 200 ); // 假设每分钟读200字

return sprintf(
        _n( '约 %d 分钟读完', '约 %d 分钟读完', $reading_time, 'post-reading-time' ),
        $reading_time
    );
}

Sonuçları kısa kodlar ve otomatik enjeksiyon yoluyla gösterin.

Kullanıcıların esnek bir şekilde kullanabilmesi için, okuma süresini göstermenin iki yolu sunuyoruz. İlk yöntem, kısa bir kod oluşturmaktır. [reading_time]

Biz kullanıyoruz. add_shortcode() Kısa kodları kaydetmek için bir fonksiyon:

function prt_reading_time_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'id' =&gt; get_the_ID(),
    ), $atts, 'reading_time' );

return '<span class="post-reading-time">'`.prt_calculate_reading_time($atts['id'])`.'</span>'add_shortcode( 'reading_time', 'prt_reading_time_shortcode' );

Kullanıcılar, makale düzenleyicisine içerik ekleyebilirler. [reading_time] Mevcut makalenin okunma süresini göstermek için…

İkinci yöntem, makale içeriğinin sonuna otomatik olarak okuma süresinin eklenmesidir. Bunun için şu özelliklerin kullanılması gerekmektedir: the_content Filtre Hook’ları:

function prt_display_reading_time_after_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $reading_time_html = '<div class="post-reading-time-container">';
        $reading_time_html .= prt_calculate_reading_time( get_the_ID() );
        $reading_time_html .= '</div>';
        $content .= $reading_time_html;
    }
    return $content;
}
add_filter( 'the_content', 'prt_display_reading_time_after_content' );

Böylece, her makalenin sonunda okuma süresi otomatik olarak görüntülenecek ve kısa kodların manuel olarak eklenmesine gerek kalmayacak.

Eklenti Güvenliği, Optimizasyonu ve Yayın Hazırlığı

Kaliteli bir eklenti sadece çalışabilmeli değil; aynı zamanda güvenli, verimli ve başkaları tarafından kolayca kullanılabilir olmalıdır.

Veri Doğrulama, Kaçınma ve Yetki Kontrolü

Güvenlik en önemli önceliktir. Kullanıcılar veya dış kaynaklardan gelen tüm verilerin doğrulanması ve uygun şekilde işlenmesi gerekmektedir.
Doğrulama: Verilerin beklenen biçimlere uygun olup olmadığını (örneğin, sayısal değerler, e-posta adresleri vb.) kontrol etmek için verilerin veritabanına girilmeden önce yapılır. Bunun için aşağıdaki yöntemler kullanılabilir: sanitize_text_field()intval() Ve diğer fonksiyonlar.
Kaçış (Escaping): Verileri tarayıcıya çıkartırken, kötü amaçlı kod olarak yorumlanmamasını sağlayın. Bunun için kullanın. esc_html()esc_attr()esc_url() Ve diğer fonksiyonlar.
Yetki kontrolleri: Yönetimsel işlemleri gerçekleştirmeden önce kullanın. current_user_can() Mevcut kullanıcının ilgili yetkilere sahip olup olmadığını kontrol edin, örneğin… current_user_can( 'edit_posts' )

Performans Optimizasyonu ve Kod Düzeni

İşlevler arttıkça, kodu modüler hale getirmek gerekir. Farklı işlevleri (arka uç ayarları, ön uç görünümü, API işlemleri gibi) farklı dosyalara ayırın ve bunları ana dosya aracılığıyla içe aktarın. require_onceinclude_once Dosyaları düzenlemek için.

Sık sık çağrılması muhtemel karmaşık sorgular veya işlemler için, WordPress’in “Transients” API’sini kullanarak önbellekleme yapmayı düşünebilirsiniz. Örneğin… set_transient()get_transient()Veritabanı üzerindeki yükü hafifletmek için…

Uluslararasılaştırma ve Yayın Hazırlığı

Eklentinin dünya çapındaki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) işlemlerinin yapılması gerekmektedir. Bu, kullanıcıya yönelik tüm metinlerin çeviri fonksiyonları ile sarılması gerektiği anlamına gelir.
1. Kullanım __( '文本', 'text-domain' ) Gelip çevrilebilir metni çıkarın.
2. Eklentinin baş kısmındaki yorumlarda tanımlayın. Text Domain(Örneğin ‘okuma sonrası zaman’) ve bunun sonradan oluşturulan içeriklerle uyumlu olduğundan emin olun. .pot Dosya adı ile alan adı aynı.
3. Poedit veya WP-CLI gibi araçları kullanarak… wp i18n make-pot Komut, dil şablonu dosyasını (.pot) oluşturmak için kullanılır.

Yayınlamadan önce, lütfen kodun WordPress kodlama standartlarına uygun olduğundan emin olun ve açıklayıcı bir dokümantasyon hazırlayın. readme.txt Dosya (WordPress’in resmi gereksinimlerine uygun format kullanılarak hazırlanmıştır); eklentinin özellikleri, kurulum adımları, ekran görüntüleri ve güncelleme kayıtları ayrıntılı bir şekilde açıklanmaktadır.

Özetle.

WordPress eklenti geliştirme, temel yapıyı anlamaktan, hook (bağlantı noktası) mekanizmalarını öğrenmeye, işlevleri güvenli ve verimli bir şekilde gerçekleştirmeye, ardından da uluslararası standartlara uygun hale getirip yayınlamaya kadar süren bir süreçtir. Basit bir işlevsellik içeren bir eklenti oluşturarak başlayarak, WordPress’in çalışma prensiplerini ve geliştirme standartlarını adım adım daha iyi kavrayabilirsiniz. Önemli olan en iyi uygulamalara uymaktır: hook’ları etkili bir şekilde kullanarak müdahaleci olmayan bir geliştirme yaklaşımı benimsemek, sıkı güvenlik önlemleri almak ve her zaman kodun performansını ve sürdürülebilirliğini göz önünde bulundurmak. Çekirdek kodu ve kaliteli açık kaynaklı eklentileri sürekli incelemek, becerilerinizi geliştirmenin en iyi yoludur.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?

PHP programlama dilinin temel bilgilerine sahip olmanız gerekmektedir; bu bilgiler arasında değişkenler, fonksiyonlar, diziler, koşullu ifadeler ve döngüler yer almaktadır. Ayrıca, HTML, CSS ve JavaScript konularında da temel bir bilgi birikimine sahip olmanız, ön uç gösterimleri ve etkileşimleri yönetmenizi sağlayacaktır. WordPress’in temel kavramlarına aşina olmanız (makaleler, sayfalar, kategoriler vb.) geliştirme sürecinde size büyük kolaylık sağlayacaktır.

WordPress eklentimizi nasıl hata ayıklarız?

En etkili yöntem, WordPress’ün hata ayıklama (debugging) modunu etkinleştirmektir. wp-config.php Dosyada ayarlar yapılmıştır. define( 'WP_DEBUG', true );define( 'WP_DEBUG_LOG', true );Bu şekilde, tüm hatalar ve uyarılar kaydedilecektir. /wp-content/debug.log Dosyada, içeriğin doğrudan kullanıcılara gösterilmesinden kaçının. Ayrıca, tarayıcı geliştirici araçlarını kullanarak ağ isteklerini ve JavaScript hatalarını inceleyin. error_log() Fonksiyonların kod içinde değişken değerlerini günlüğe (log) yazması, yaygın olarak kullanılan bir hata ayıklama (debugging) yöntemidir.

Eklentim, temalar ve diğer eklentilerle nasıl uyumlu çalışır?

Uyumluluğu korumanın temeli, WordPress standartlarına uymak ve eklentileri (hook’ları) dikkatli bir şekilde kullanmaktır. Çekirdek veritabanı tablo yapılarını doğrudan değiştirmekten veya henüz yayınlanmamış fonksiyonları kullanmaktan kaçının. _ İşaretlerin alt çizgiyle başlaması gibi… Fonksiyonlarınıza, sınıflarınıza ve seçenek adlarınıza benzersiz önekler ekleyin (örneğin: _myFunction, _ MyClass, _myOption). myplugin_Ad çakışmalarını önlemek için… Mümkün olduğunca, diğer geliştiricilerin eklentinizin davranışlarını değiştirmesine izin veren filtre kancaları sağlayın; tıpkı sizin WordPress çekirdeğini değiştirdiğiniz gibi.

Eklentime nasıl bir arka plan ayarları sayfası ekleyebilirim?

WordPress’in sunduğu “Ayarlar API’sini” kullanarak profesyonel arka plan ayar sayfaları ekleyebilirsiniz. Bu işlem birkaç adımdan oluşmaktadır: add_menu_page()add_submenu_page() Fonksiyon kaydı menü sayfası, ardından kullanılır. register_setting()add_settings_section()add_settings_field() Ayarlar alanlarını ve bölgelerini tanımlamak için `setField`, `setRegion` gibi fonksiyonlar kullanılır. Son olarak, ayar sayfasının HTML formunu çıkarmak için bir geri çağırma (callback) fonksiyonu oluşturulur. Bu yöntem, izin kontrolünü, güvenlik dışı doğrulamaları ve seçeneklerin kaydedilmesini otomatik olarak işler ve en çok önerilen yaklaşımdır.