WordPress Eklenti Geliştirme Kılavuzu: İlk İşlevsel Eklentinizi Sıfırdan Oluşturun

3 dakika okuma.
2026-03-16
2026-06-03
2,284
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 Ortamı ve Temel Hazırlıklar

Kod yazmaya başlamadan önce, stabil ve verimli bir geliştirme ortamı çok önemlidir. Bu sadece geliştirme verimliliğinizi artırmakla kalmaz, aynı zamanda en iyi uygulamalara uymanıza, eklentilerin kalitesini ve uyumluluğunu sağlamanıza da yardımcı olur.

Öncelikle, yerel bir WordPress geliştirme ortamına ihtiyacınız var. XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları kullanarak hızlı bir şekilde bir ortam oluşturabilirsiniz. Ortamınızın daha yeni bir PHP sürümü (7.4 veya üzeri) ve MySQL/MariaDB ile çalıştığından emin olun. Yerel bir geliştirme ortamı, çevrimiçi web sitenizi etkilemeden özgürce test ve hata ayıklama yapmanıza olanak tanır.

İkincisi, bir kod editörüne veya entegre geliştirme ortamına (IDE) ihtiyacınız var. Visual Studio Code, PhpStorm veya Sublime Text gibi araçlar mükemmel seçeneklerdir; bunlar sözdizimi vurgulama, kod önerileri ve hata ayıklama özellikleri sunar. Ayrıca, PHP_CodeSniffer gibi kod kalitesi araçlarını da kurmanız ve WordPress’in kodlama standartlarını yapılandırmanız önerilir; böylece kod stiliniz WordPress’in çekirdek koduyla uyumlu olur.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Profesyonel Seviye Genişletmelere

Son olarak, WordPress eklentilerinin temel yapısını anlamak ilk adımdır. En basit eklenti bile yalnızca bir ana PHP dosyasına ihtiyaç duyar ve bu dosyanın baş kısmında belirli eklenti bilgilerini içeren açıklamalar bulunur. Bu dosya, eklentinin giriş noktasıdır; WordPress bu bilgileri okuyarak eklentiyi tanır ve yönetir.

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 eklenti dosyanızı oluşturun.

En basit “Hello World” eklentisini oluşturarak başlayalım. Bu süreç, eklentilerin temel yapısını ve WordPress’in eklentileri nasıl tanıdığını anlamanıza yardımcı olacaktır.

Öncelikle, WordPress kurulum dizininizin altındaki…wp-content/pluginsKlasör içinde, yeni bir klasör oluşturun. Klasörün adı benzersiz, açıklayıcı olmalı ve küçük harfler ile tire (-) kullanılmalıdır; örneğin:my-first-plugin

Bu klasör içinde, genellikle klasör adıyla aynı olan bir ana PHP dosyası oluşturun. Örneğin:my-first-plugin.phpBu dosyanın en üst kısmına, WordPress standartlarına uygun bir eklenti başlık yorumu eklemelisiniz. Bu yorum, eklentinin “kimlik kartı” niteliğindedir ve adı, açıklaması, sürümü, yazarı gibi bilgileri içerir. Bu yorum olmadan, WordPress arka plandaki eklenti listesinde eklentinizi bulamaz.

İşte en temel bir eklenti (plugin) dosyası örneği:

Tavsiye edilen okuma Sıfırdan başlayarak: Neden WordPress eklenti geliştirmeyi seçmelisiniz?

<?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
 * Domain Path:       /languages
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit; // 如果ABSPATH未定义,则退出
}

Bu dosyayı kaydettikten sonra, WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim” adlı eklentinin eklenti listesinde yer aldığını görmelisiniz. Bu noktada onu etkinleştirebilirsiniz; ancak henüz herhangi bir işlem yapmayacaktır. Kodda…if ( ! defined( ‘ABSPATH’ ) )Denetim, kullanıcıların eklenti dosyalarınıza doğrudan URL yoluyla erişmesini önlemek için önemli bir güvenlik uygulamasıdır; bu sayede kodun yalnızca WordPress ortamında çalıştığından emin olunur.

Eklentiye temel özellikler ekleyin.

Etkinleştirilen bir eklenti bazı işlemler gerçekleştirmelidir. WordPress’ta bu, esas olarak “Eylem Kancaları” (Action Hooks) ve “Filtre Kancaları” (Filter Hooks) aracılığıyla sağlanır. Bunlar, WordPress eklenti mimarisinin temel taşlarıdır ve belirli zaman noktalarında kendi kodunuzu eklemenize veya verileri değiştirmenize olanak tanır.

Eylem kancalarını kullanarak yönetim arayüzü bildirimleri ekleyin.

Eylem kancaları, WordPress’in belirli anlarında (örneğin, başlatma işlemi tamamlandığında, sayfa başlığı yüklendiğinde, makale kaydedildiğinde) kendi fonksiyonlarınızı çalıştırmanıza olanak tanır. Şimdi basit bir özellik ekleyelim: WordPress yönetim panelinin üst kısmında bir hoş geldin mesajı gösterelim.

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

Kullanacağız.admin_noticesBu eylem için bir “hook” (düğüm/ekleme noktası) kullanmanız gerekiyor. Öncelikle, HTML içeriğini döndürecek bir fonksiyon oluşturmanız gerekiyor; ardından bu fonksiyonu ilgili yerlerde kullanabilirsiniz.add_action()Bu fonksiyon, söz konusu fonksiyonu bir “kancaya” (hook) monte eder.

Ana eklenti dosyanıza aşağıdaki kodu ekleyin:

/**
 * 在管理后台显示欢迎通知
 */
function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p>“İlk Eklentim”i kullanmaya hoş geldiniz! Eklenti başarıyla etkinleştirildi.</p>
    </div>
    &lt;?php
}
// 将函数挂载到 admin_notices 动作钩子
add_action( &#039;admin_notices&#039;, &#039;myfp_display_admin_notice&#039; );

WordPress arayüzünü kaydedip yenileyin; sayfanın üst kısmında yeşil bir başarı bildirimi kutusu görmelisiniz. Fonksiyon adına dikkat edin.myfp_display_admin_noticeÖnek kullanıldı.myfp_(Plugin adının kısaltmasından alınmıştır.) Bu, diğer eklentilerin veya temaların fonksiyon adlarıyla çakışmaları önlemek için gereklidir ve uymak zorunda olduğunuz bir adlandırma kuralıdır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Yüksek Kaliteli WordPress Genişletmeleri Oluşturma

Makale içeriğini filtre kancalarını kullanarak değiştirin.

Filtre hook’ları, WordPress’ta iletilen verileri değiştirmenize olanak tanır. Örneğin, bir makalenin içeriğini, başlığını veya özetini görüntülenmeden önce düzenleyebilirsiniz. Her makalenin sonuna otomatik olarak bir telif hakkı bildirimi ekleyen bir özellik oluşturalım.

Kullanacağız.the_contentBu filtre kancası… Orijinal içeriği alacak bir şey oluşturmanız gerekiyor.$contentBelirtilen fonksiyonu değiştirin ve ardından değiştirilmiş içeriği geri döndürün.

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.

Eklenti dosyanıza aşağıdaki kodu ekleyin:

/**
 * 在文章内容末尾添加版权声明
 * @param string $content 原始的文章内容
 * @return string 修改后的文章内容
 */
function myfp_add_copyright_to_content( $content ) {
    // 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>Bu metnin telif hakkı bu web sitesine aittir; yeniden yayımlanması durumunda kaynak belirtilmelidir.</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
// 将函数挂载到 the_content 过滤器钩子,优先级为10
add_filter( 'the_content', 'myfp_add_copyright_to_content', 10 );

Şimdi, web sitesindeki herhangi bir makaleyi gördüğünüzde, içeriğin alt kısmında eklediğiniz telif hakkı bildirimi görünecektir. Fonksiyondaki koşullu kontrol de bu işlemi sağlamaktadır.is_single() && in_the_loop() && is_main_query()Çok önemli; bu özellik, bu metnin yalnızca ön taraftaki, ayrı bir makale sayfasının ana döngüsünde görüntülenmesini sağlar ve ana sayfa listesinde, araç çubuğunda veya başka yerlerde görünmesini engeller. Yüksek kaliteli eklentiler yazarken dikkat edilmesi gereken bir detaydır.

Eklentilerin Uluslararasılaştırılması ve En İyi Uygulamalar

Eklentinizin tüm dünyadaki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) şarttır. WordPress, eklentideki metinlerin diğer dillere çevrilmesini destekleyen eksiksiz fonksiyonlar sunar.

Eklenti metnini çeviriye destek olacak şekilde hazırlayın.

Tüm, eklentide kullanıcıya gösterilen metinleri kapsamak için belirli bir fonksiyon kullanmanız gerekiyor. En yaygın olarak kullanılan fonksiyon…()Çeviri almak için kullanılır._e()Doğrudan çeviriyi geri göstermek için kullanılır, ayrıca…esc_html()HTML’yi dönüştürmeye ihtiyaç duyulan bağlamlar için kullanılır.

Öncelikle, daha önce oluşturduğumuz bildirim fonksiyonu ve telif hakkı fonksiyonundaki metinleri değiştirelim ve çeviri fonksiyonunu kullanalım:

function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!插件已成功激活。', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}

function myfp_add_copyright_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = &#039;<p><em>' . esc_html__( '本文版权归本网站所有,转载请注明出处。', 'my-first-plugin' ) . '</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}

Lütfen dikkat: Her çeviri fonksiyonu ikinci bir parametre içermektedir.‘my-first-plugin’Bu, eklentinin baş kısmında tanımladığın şeydir.Text DomainBu, WordPress’in bu dizelerin hangi eklentiye ait olduğunu anlamasını sağlayan benzersiz bir tanımlayıcıdır.

Daha sonra, bunu eklentinin baş kısmındaki yorumlarda belirtmeniz gerekiyor.Domain PathYani…/languagesÇeviri dosyalarını (%s ve .mo dosyaları) belirtilen klasöre yerleştirin. Poedit gibi araçları kullanarak bu çeviri dosyalarını oluşturabilir ve yönetebilirsiniz.

Güvenlik ve kod standartlarına uyun.

Güvenlik, eklenti geliştirmede en önemli husustur. Kullanıcıların girdiği verilere asla güvenmeyin. Herhangi bir kullanıcıdan gelen veriyi işlerken…$_GET$_POST$_REQUESTVerileri kullanmadan önce, doğrulama, temizleme ve escape işlemlerinin yapılması gerekmektedir.

WordPress, size yardımcı olacak birçok fonksiyon sunar:
* 验证(Validation):检查数据是否符合预期格式(如is_email())。
* 清理(Sanitization):清除数据中的非法字符(如sanitize_text_field()sanitize_email())。
* 转义(Escaping):在将数据输出到HTML、JavaScript或URL之前,确保其安全(如esc_html()esc_js()esc_url())。

Ayrıca, veritabanıyla doğrudan işlem yaparken mutlaka WordPress veritabanı sınıflarını kullanmalısınız.$wpdbSunulan yöntemler, örneğin…$wpdb->prepare()SQL enjeksiyon saldırılarını önlemek için…

Özetle.

Bu rehber sayesinde, sıfırdan başlayarak işlevsel bir WordPress eklentisi oluşturma sürecinin tamamını tamamladınız. Ortamı nasıl kuracağınızı, temel eklenti dosyalarını nasıl oluşturacağınızı, eylemler (actions) ve filtreler (filters) aracılığıyla WordPress’e nasıl özellikler ekleyeceğinizi öğrendiniz; ayrıca eklentinin profesyonelliğini ve kullanılabilirliğini uluslararasılaştırma (internationalization) ve güvenlik (security) uygulamalarıyla nasıl artıracağınızı da öğrendiniz. Eklenti geliştirmenin özü, WordPress’in hook sisteminini anlamak ve ustaca kullanmaktadır; bu sistem benzeri görülmemiş bir genişletilebilirlik ve esneklik sunar. Unutmayın: Basit özelliklerle başlayın, adım adım geliştirin ve her zaman güvenliği ve kod kalitesini öncelikli tutun; böylece güçlü ve güvenilir bir WordPress eklentisi oluşturabilirsiniz.

Sıkça Sorulan Sorular.

Bir eklenti mutlaka bir klasör içinde olmalı mı?

Olması gerekmez. Çok basit, tek dosyalı bir eklenti doğrudan bunu yapabilir.plugin-name.phpKoyun.wp-content/plugins/Klasörün içinde. Ancak, CSS, JS, resimler veya dil dosyaları gibi birden fazla dosya içeren eklentiler için, tüm ilgili dosyaları düzenlemek amacıyla ayrı bir klasör kullanılması şiddetle tavsiye edilir; bu, yapıyı daha net hale getirir ve yönetimi kolaylaştırır.

Eklentim için bir ayar sayfası nasıl oluşturabilirim?

WordPress tarafından sağlanan ayar API’sini kullanarak profesyonel ve güvenli ayar sayfaları oluşturabilirsiniz. Ana adımlar şunları içerir:add_menu_page()add_submenu_page()Bu fonksiyon bir menü sayfası kaydeder ve ardından bunu kullanır.register_setting()add_settings_section()add_settings_field()Ayarlanabilir alanları ve bölümleri tanımlamak için `setField`, `setChapter` gibi fonksiyonlar kullanılır. Son olarak, ayar sayfasının HTML formunu döndürecek bir geri çağırma (callback) fonksiyonu yazılır.

Eklenti geliştirme sürecinde, önekler neden bu kadar önemlidir?

WordPress, eklentiler ve temalardan oluşan geniş bir ekosistemdir. Tüm kodlar aynı küresel ad alanı (global namespace) içinde çalışır. Eğer “WordPress” adında bir şey tanımladıysanız…get_data()Eğer bir sitenin standart fonksiyonları arasında aynı isme sahip bir fonksiyon bulunuyorsa ve başka bir eklenti de aynı ismi taşıyan bir fonksiyon tanımlarsa, bu ölümcül hatalara ve sitenin çökmesine neden olabilir. Benzersiz bir önek (örneğin, eklentinin adının kısaltması) kullanmak, bu tür çakışmaları önlemekte ve eklentilerin uyumluluğunu sağlamada büyük ölçüde yardımcı olur.

Eklenti kodumu nasıl hata ayıklamalıyım?

WordPress geliştirme sürecinde, hata ayıklamak için tercih edilen araç “Debugging” (Hata Ayıklama) özelliğinin etkinleştirilmesidir.WP_DEBUGSitenin ilgili bölümünde bunu yapabilirsiniz.wp-config.phpDosyada, ayarlamalar yaparak…define( ‘WP_DEBUG’, true );Bunu etkinleştirmek için… Bu, tüm PHP hatalarının, uyarılarının ve bildirimlerinin ekranda görünmesini sağlayacaktır. Daha karmaşık hata ayıklama işlemleri için ise başka araçlar kullanabilirsiniz.error_log()Fonksiyon, bilgileri sunucunun hata günlüğüne yazar; ayrıca Xdebug gibi profesyonel PHP hata ayıklama araçlarını IDE’nizle birlikte kullanarak satır satır hata ayıklaması yapabilirsiniz.