Sıfırdan Başlayın: WordPress Eklenti Geliştirmenin Tam Kılavuzu ve Uygulamalı Eğitimi

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

WordPress Eklenti Geliştirme Öncesi Hazırlık İşlemleri

İlk satır kodu yazmaya başlamadan önce, kapsamlı bir hazırlık işlemi projenin başarısının temelidir. Bu sadece teknik altyapının kurulmasını içermekle kalmaz, aynı zamanda net bir gereksinim analizi ve proje planlamasını da gerektirir.

Öncelikle, yerel bir geliştirme ortamına ihtiyacınız var. PHP, MySQL ve Apache/Nginx içeren bir WordPress çalışma ortamını hızlı bir şekilde kurmak için Local by Flywheel, MAMP, XAMPP veya Docker gibi araçları kullanmanız önerilir. Kullandığınız PHP sürümünün WordPress’in resmi en yeni gereksinimlerine uygun olduğundan emin olun; genellikle PHP 7.4 veya daha yüksek bir sürüm gereklidir.

İkincisi, eklentinizin hangi sorunu çözmeyi hedeflediğini netleştirin. Web sitesine belirli bir özellik eklemek mi istiyorsunuz, yoksa mevcut bir süreci optimize etmek mi? Açık bir eklenti tanımı ve işlev listesi, sonraki geliştirme adımları için bir rehberdir. Sürüm yükseltmelerini ve işlev noktalarını planlamak için Trello gibi araçlar veya basit belgeler kullanmanız önerilir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan Başlayarak Eklentinin Yayınlanmasına Kadar Tüm Süreç

Son olarak, bir kod editörüne veya entegre geliştirme ortamına ihtiyacınız var. Visual Studio Code, PhpStorm ve Sublime Text, PHP ve WordPress geliştirme için mükemmel seçeneklerdir; sözdizimi vurgulama, kod önerileri ve hata ayıklama gibi özelliklere sahiptirler. Bunları hazırladıktan sonra, eklentinin temelini oluşturacak olan ana dosyayı oluşturabilirsiniz.

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

İlk WordPress eklentinizi oluşturun.

Her şeyin başı zordur, ancak en temel bir WordPress eklenti dosyası oluşturmak son derece basittir. Bu bölümde, eklentinin temel yapısını oluşturma, güvenlik beyanlarını hazırlama ve eklentiyi etkinleştirme süreçlerini adım adım size göstereceğiz.

Yeni bir klasör oluşturun; adı benzersiz olmalı ve eklentinin işlevlerini açıklayan bir İngilizce ifade olmalıdır. Örneğin:my-first-pluginBu klasörde, genellikle “mainPlugin.js” veya benzeri bir adla ana eklenti dosyası oluşturun.plugin-name.phpBu dosyaya bir isim verin. Bu dosya, eklentinin giriş noktasıdır ve WordPress, eklentiyi tanımak için bu dosyanın başındaki belirli yorum bilgilerini okur.

Bu ana dosyanın en üst kısmına, WordPress standartlarına uygun bir eklenti başlık yorumu eklemelisiniz. İş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://yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Bu yorumda belirtilen “Plugin Name” zorunludur; diğer bilgiler ise isteğe bağlıdır. Ancak tüm bilgilerin doldurulması şiddetle tavsiye edilir. İşlem tamamlandıktan sonra, bu eklenti klasörünü WordPress’in kurulum dizini altına yükleyin./wp-content/plugins/Yol üzerindesiniz. WordPress arayüzünün “Eklentiler” sayfasına girdiğinizde eklentinizi görebilir ve onu etkinleştirebilirsiniz. Şu an için herhangi bir özelliği yoktur, ancak WordPress tarafından tanınan bir eklentiyi başarıyla oluşturmuşsunuz demektir.

Tavsiye edilen okuma WordPress eklenti geliştirme, sıfırdan başlayarak dünyanın en popüler içerik yönetim sistemleri için özel çözümler oluşturma sürecidir.

Basit bir işlevi gerçekleştirin.

Hadi bu boş şablon eklentisine ilk somut özelliği ekleyelim: Makale içeriğinin sonuna otomatik olarak bir telif hakkı bildirimi ekleyelim. Bu, WordPress’in “hook” (kancalar) mekanizmasını anlamanıza yardımcı olacaktır.

Öncelikle, telif hakkı bilgilerini eklemek için gerekli işlemleri gerçekleştiren bir fonksiyon oluşturmamız gerekiyor. Bu fonksiyona “addCopyrightText” adını vereceğiz.myplugin_add_footer_text

function myplugin_add_footer_text($content) {
    // 确保只在网站前端的主文章循环中执行
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        $footer_text = '<p><em>Bu makale, ilk eklentim aracılığıyla sizlere sunulmaktadır.</em></p>';
        $content .= $footer_text;
    }
    return $content;
}

Daha sonra, bu fonksiyonu WordPress’in belirli bir yürütme noktasına “monte etmemiz” gerekiyor; bu işleme “kancalar eklemek” (hooking) denir. Burada şunu kullanıyoruz…the_contentFiltre kancası (Filter Hook): Eklentinizin ana dosyasına aşağıdaki kodu ekleyin:

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_filter('the_content', 'myplugin_add_footer_text');

Dosyayı kaydettikten sonra, web sitenizin bir makale sayfasını yenileyin ve içeriğin sonunda tanımladığınız telif hakkı metninin yer aldığını göreceksiniz. Bu basit örnek sayesinde, eklenti geliştirmenin temel modellerini öğrenmiş oldunuz: Fonksiyon oluşturmak -> Kullanmak.add_actionadd_filterBu “kancalar” (hooks), fonksiyonları WordPress’un yaşam döngüsüne (lifecycle) entegre eder.

Özüne İnme: WordPress Eklentileri ve API’leri

Kancalama (hooking) mekanizması, WordPress eklenti geliştirmenin ruhudur; kodunuzun belirli zamanlarda veya belirli yerlerde çalışmasına olanak tanır. Kancaları anlamak ve ustaca kullanmak, karmaşık işlevler oluşturmanın anahtarıdır.

WordPress eklentileri (plugins) genellikle iki ana kategoriye ayrılır: Eylemler (Actions) ve Filtreler (Filters). Eylem hook’ları, belirli WordPress çekirdek olayları gerçekleştiğinde tetiklenir; örneğin bir makale yayınlandığında veya yönetim paneli yüklendiğinde. Bu durumlarda yazdığınız fonksiyonlar belirli işlemler yapabilir. Filtre hook’ları ise verileri değiştirmek için kullanılır; fonksiyonlarınız, veriler kullanılmadan veya kaydedilmeden önce bunların değerlerini değiştirebilir. Örneğin, bir makalenin içeriğini veya başlığını değiştirebilirsiniz.

Tavsiye edilen okuma WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Kendi Özel İşlevlerinizi Oluşturmayı Adım Adım Öğrenin

Bir eylem kancası (action hook) fonksiyonu oluşturun:

function myplugin_log_post_published($ID, $post) {
    // 当文章发布时,在错误日志中记录一条信息(仅用于演示)
    error_log("文章 {$post->post_title} (ID: {$ID}) 已发布。");
}
// 将函数挂载到 `publish_post` 这个动作钩子上
add_action('publish_post', 'myplugin_log_post_published', 10, 2);

Bir filtre kancası fonksiyonu oluşturun:

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.
function myplugin_excerpt_length($length) {
    // 将默认的摘要长度从55个词修改为20个词
    return 20;
}
// 将函数挂载到 `excerpt_length` 这个过滤器钩子上
add_filter('excerpt_length', 'myplugin_excerpt_length');

Kullanıldığındaadd_actionadd_filterBu durumda, üçüncü ve dördüncü parametreler sırasıyla öncelik ve parametre sayısını temsil eder. Bunları uygun bir şekilde ayarlayarak, birden fazla geri çağırma fonksiyonunun çalışma sırasını hassas bir şekilde kontrol edebilirsiniz.

WordPress’te API ayarlarını kullanmak

Eklenti kullanıcılarının davranışları özelleştirebilmeleri için bir yapılandırma sayfası oluşturmanız gerekmektedir. WordPress, bu süreci kolaylaştırmak için bir ayar API’si sunar. Bu genellikle üç ana fonksiyonu içerir:register_settingBir dizi ayarı kaydetmek için kullanılır.add_settings_sectionSayfaya bir ayar bölgesi eklemek için kullanılır.add_settings_fieldBu bölgeye belirli alanlar eklemek için kullanılır.

Bir seçenek sayfası oluşturan bir fonksiyon oluşturun:

function myplugin_settings_page() {
    add_options_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-settings', // 菜单 Slug
        'myplugin_render_settings_page' // 用于输出页面内容的回调函数
    );
}
add_action('admin_menu', 'myplugin_settings_page');

Sonra bunu gerçekleştirmen gerekiyor.myplugin_render_settings_pageBu fonksiyon, bir formu görüntülemek için kullanılır ve…settings_fieldsdo_settings_sectionsBu fonksiyon, WordPress API tarafından otomatik olarak işlenen form alanlarını çıktı olarak verir.get_optionFonksiyon sayesinde, eklenti kodunun herhangi bir yerinde kullanıcı tarafından kaydedilen seçenek değerlerine kolayca erişebilirsiniz.

Eklenti Geliştirmenin İleri Uygulamaları ve Yayınlama Süreci

Eklentinizin işlevleri giderek geliştikçe ve kod miktarı arttıkça, iyi bir kod organizasyonu, güvenlik önlemleri ve uluslararasılaştırma desteği hayati önem kazanır.

Kodun netliğini korumak için, farklı işlevlere sahip kodların farklı dosyalara ayrılması önerilir. Örneğin, hook’ların kaydı ve temel fonksiyonlar ana dosyada bulunurken, ayar sayfalarıyla ilgili kodlar ayrı bir dosyada yer almalıdır.admin/Alt klasörler; ön uç (frontend) işlevsel kodlarını bu alt klasörlere yerleştirin.public/Alt klasörler kullanılır ve içerikler koşullara göre yüklenir. Nesne yönelimli programlama (OOP – Object-Oriented Programming), karmaşık eklentileri yönetmek için mükemmel bir yaklaşımdır; çünkü verileri ve işlevleri daha iyi bir şekilde kapsar.

Güvenlik, eklenti geliştirmenin can damarındır. Kullanıcılardan alınan tüm veriler (örneğin…)$_GET$_POST$_COOKIEHer şeyin doğrulanması ve dezenfekte edilmesi gerekmektedir. WordPress, bu amaç için birçok fonksiyon sunmaktadır.sanitize_text_fieldwp_kses_postintvalVe benzerleri. Herhangi bir veriyi tarayıcıya veya veritabanına gönderirken de aynı şekilde escape (kaçırma) işlemi yapılmalıdır; bunun için belirli karakterler özel işaretlerle değiştirilmelidir.esc_htmlesc_attrwp_ksesFonksiyonlar: Veritabanı işlemleri için mutlaka WordPress’in sunduğu fonksiyonlar kullanılmalıdır.$wpdbSınıflar ve bunların…prepareSQL enjeksiyonunu önlemek için yöntemler.

Eklentiyi uluslararası hale getirmek (plugin internationalization)

Eklentinizin tüm dünyadaki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (internationalization) kaçınılmaz bir adımdır. Bu süreç esas olarak iki adımdan oluşur:__()_e()`wait` fonksiyonu, çevrilmeye ihtiyaç duyan tüm metinleri ve metin alanının doğru bir şekilde yüklenmesini sağlar.

Eklentinin baş kısmında “Text Domain” zaten tanımlanmıştır. Eklenti başlatıldığında (genellikle ana dosyada), dil dosyalarının yüklenmesi gerekmektedir:

function myplugin_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('init', 'myplugin_load_textdomain');

Daha sonra, benzer bir şey kullanabilirsiniz.__('Hello World', 'my-first-plugin')Stringleri işaretlemek için belirli bir yazım stili kullanılır. Çevirmenler, Poedit gibi araçları kullanarak, oluşturulan içeriğe göre gerekli değişiklikleri yapabilirler..potŞablon dosyası oluşturma.po.moDosyayı çevirin ve eklentinin içine yerleştirin./languages/Katalogun içinde.

Son olarak, eklentinin işlevleri stabil hale geldiğinde, onu WordPress resmi eklenti kataloğuna göndermeyi seçebilirsiniz; böylece daha fazla kişi tarafından kullanılabilir. Bunun için eklenti kodunu paketlemeniz ve ayrıntılı bir açıklama yazmanız gerekecektir.readme.txtDosyaları kullanırken topluluğun geliştirme standartlarına uymak gerekir.

Özetle.

WordPress eklenti geliştirme, fikirleri güçlü özelliklere dönüştürme sürecidir. Bir ortam kurarak ve temel eklenti dosyalarını oluşturarak başlarsınız; ardından temel “hook” (düğüm) mekanizmalarına ve ayar API’lerine derinlemesine girersiniz ve sonunda kod organizasyonu, güvenlik ve uluslararasılaştırma gibi ileri düzey konularla karşılaşırsınız. Tüm sürecin özü, WordPress’in olay tabanlı mimarisini anlamak ve eylem (action) ile filtre (filter) hook’ları aracılığıyla çekirdek özellikleri sorunsuz bir şekilde genişletmektir. Unutmayın: Küçük bir özellikle başlayın, adım adım ilerleyin ve her zaman kod güvenliğini ve kullanıcı deneyimini öncelikli tutun; bu, başarılı bir eklenti geliştiricisi olmanın anahtarıdır.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi programlama dillerini bilmek gerekiyor?
WordPress eklentileri geliştirmek için öncelikle PHP diliyi iyi bilmek gerekmektedir; çünkü WordPress’ün çekirdeği zaten PHP ile yazılmıştır. Aynı zamanda, ön uç (frontend) işlevleri genellikle HTML, CSS ve JavaScript ile ilgilidir. Veritabanı ile etkileşim için temel SQL bilgileri de faydalıdır.$wpdbSınıf, çoğu işlemi kapsar.

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

Geliştirme aşamasında, WordPress’in hata ayıklama (debugging) modunun açılması önerilir.wp-config.phpDosyada,WP_DEBUGSabit, olarak ayarlandı.trueAyrıca şunları da kullanabilirsiniz:error_log()Fonksiyon, bilgileri sunucunun hata günlüğüne kaydeder. Daha karmaşık hata ayıklamaları için, kod çalışmasını ve veritabanı sorgularını izlemek amacıyla Xdebug veya Query Monitor gibi profesyonel eklentiler kullanılabilir.

Eklentim üçüncü parti hizmetler veya API’lerle nasıl etkileşim kurabilir?

Eklentiler, WordPress’in HTTP API’si aracılığıyla kullanılabilir.wp_remote_get()wp_remote_post()Dış servislerle güvenli ve stabil bir iletişim kurulmalıdır. WordPress’in HTTP API’si, zaman aşımı işleme, SSL doğrulama gibi özellikler içerir ve bu da PHP’nin curl veya file_get_contents fonksiyonlarını doğrudan kullanmaktan daha güvenilirdir. Yanıtları işlerken, hataları mutlaka kontrol edin ve uygun hata işlemlerini yapın.

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

WordPress’in seçenek tablosu, çoğu yapılandırma verisinin saklanması için yeterli olsa da, yapılandırılmış verilerin özel tablolarda saklanması daha uygun olabilir. Bunu, eklentinin etkinleşme işlemleri sırasında (activation hook) gerçekleştirebilirsiniz.register_activation_hookTablo oluşturma SQL komutları, fonksiyon kaydı (function registration) işlemi sırasında gerçekleştirilir. Bunun için mutlaka belirli bir yöntem kullanılmalıdır.$wpdb->prefixTablo öneklerinin doğru olduğundan emin olun ve bunları kullanın.dbDeltaBu fonksiyon, tablo yapısını güvenli bir şekilde oluşturmak veya güncellemek için kullanılır. Özel tablolara yönelik tüm sorgular, bu fonksiyon aracılığıyla gerçekleştirilmelidir.$wpdbNesne üzerinde işlemler yapılır.

Eklentimin diğer eklentilerle veya temalarla uyumlu olmasını nasıl sağlayabilirim?

Uyumluluğu korumanın en iyi yolları şunlardır: WordPress çekirdek API’sini ve standart eklentileri kullanın; fonksiyonlar, sınıflar ve seçenek adlarına benzersiz önekler ekleyin (örneğin, eklenti kısaltmaları kullanarak); işlevleri adlandırma çakışmalarını önlemek için sınıflar veya ad alanları içinde paketleyin; küresel değişkenleri doğrudan değiştirmekten kaçının; kısayolları kaydetmek, özel makale türleri oluşturmak gibi küresel durumu etkileyebilecek işlemleri gerçekleştirmeden önce, bunların zaten mevcut olup olmadığını kontrol edin. Yayınlamadan önce, mümkün olduğunca farklı ortamlarda testler yapın.