WordPress Eklenti Geliştirme Ortamının Kurulması
Kod yazmaya başlamadan önce, stabil ve profesyonel bir geliştirme ortamı başarının ilk adımıdır. Bu, sadece kodlama verimliliğinizi artırmakla kalmaz, aynı zamanda eklentilerin farklı ortamlarda uyumluluğunu da sağlar. Temel gereklilik, yerel bir WordPress çalıştırma ortamı kurmaktır; XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları kullanabilirsiniz. Bu araçlar, PHP, MySQL ve Apache/Nginx sunucularını tek bir tıklamayla kolayca yapılandırmanıza yardımcı olur.
Bir sonraki adım, kod editörünün seçimidir. Herhangi bir metin editörüyle kod yazılabilir; ancak geliştirme için özel olarak tasarlanmış editörler veya entegre geliştirme ortamları (IDE’ler) kullanmak işleri çok daha kolay hale getirir. Visual Studio Code, PhpStorm veya Sublime Text gibi araçlar mükemmel seçeneklerdir. Bu editörler, kod vurgulama, akıllı ipuçları, hata ayıklama gibi özellikler sunar ve sözdizimi hatalarını önemli ölçüde azaltır.
Çok önemli bir uygulama, WordPress’in hata ayıklama modunun etkinleştirilmesidir. Bu sayede geliştirme sürecinde hataları, uyarıları ve bildirimleri gerçek zamanlı olarak görebilirsiniz; yerine boş bir sayfa ile karşılaşmazsınız. Bunun için web sitenizin ayarlarını değiştirmeniz gerekecektir.wp-config.phpYapılandırmalar dosyada gerçekleştirilir. Tanımı bulun.WP_DEBUG“Constant” satırı için, bunu şu şekilde ayarlayın:true。
Tavsiye edilen okuma Başlangıçtan Uzmanlığa: WordPress Eklenti Geliştirme Kapsamlı Rehberi。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_DISPLAY', false ); // 不建议在页面上直接显示错误 Ayrıca, eklenti projeniz için bir sürüm kontrol sistemi (örneğin Git) deposu oluşturmak da en iyi uygulamalardan biridir. Bu, kod değişikliklerini takip etmenize, geri dönüş yapmanıza ve takım çalışmalarınızı kolaylaştırmanıza yardımcı olur.
Eklentinin temel yapısını anlamak.
En temel bir WordPress eklentisi yalnızca bir dosyadan oluşabilir; ancak sürdürülebilirlik ve netlik açısından genellikle yapılandırılmış bir katalog kullanırız. Eklentinin giriş dosyası zorunludur ve bu dosyanın adı, eklentinizin ana dosyasının adıyla aynıdır. Örneğin:my-awesome-plugin.phpBu dosyanın en üst kısmında, WordPress’in eklentinizi tanımasını sağlayan standart bir eklenti bilgi başlık yorumu bulunmalıdır.
<?php
/**
* Plugin Name: 我的超棒插件
* Plugin URI: https://example.com/my-awesome-plugin
* Description: 这是一个为WordPress添加定制化功能的插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-awesome-plugin
* Domain Path: /languages
*/ Bu başlık yorumunun ardından, eklentinin temel işlevlerini yazmaya başlayabilirsiniz. Basit eklentiler için tüm kod bu dosyada yazılabilir. Ancak karmaşık eklentiler için, kodu modüler hale getirip farklı alt klasörlere ayırmak daha mantıklı bir yaklaşımdır./includesÇekirdek sınıf kütüphanelerini ve fonksiyonları barındırmak için kullanılır./adminArka plan yönetim arayüzü için kullanılan kod./publicÖn uç mantığı için kullanılır./assetsJavaScript, CSS ve resim kaynaklarını saklamak için kullanılır.
Temel Kavramlar: Eylemler, Filtreler ve Kısa Kodlar
WordPress eklenti geliştirmenin temeli, olay tabanlı mimarisini anlamaktır; bu mimari esas olarak Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks) aracılığıyla gerçekleştirilir. Bunlar, WordPress eklentilerinin çekirdek ile etkileşim kurmasını sağlayan araçlardır.
Action Hook’ları Derinlemesine Anlama
Eylem kancaları (action hooks), WordPress’in belirli zaman noktalarında kendi kodunuzu “enjekte” etmenize olanak tanır. Belirli bir kancaya özel bir fonksiyon “bağlayabilir”siniz ve WordPress bu noktaya ulaştığında, sizin yazdığınız fonksiyon otomatik olarak çalıştırılır. Örneğin, bir e-posta gönderme işlemi sırasında kullanıcı bilgilerini işlemek için bir fonksiyon ekleyebilirsiniz.wp_headEylemler, web sayfasında yer almaktadır.<head>Bazı işlemler, çıktı hemen hazırlandığında tetiklenir.admin_menuEylem, arka plan yönetim menüsü oluşturulurken tetiklenir.
Tavsiye edilen okuma WordPress Eklenti Geliştirmeye Sıfırdan Başlayın: Gelişmiş Özelliklerin Uygulanması ve En İyi Uygulamalar Rehberi。
Kullanın.add_action()Bu fonksiyon, kendi fonksiyonunuzu monte etmek için kullanılır. Temel sözdizimi şu şekildedir:add_action( $hook_name, $callback_function, $priority, $accepted_args );Aşağıda, makale sayfasının başlığının ardına özel bir metin parçası eklenen basit bir örnek bulunmaktadır.
function myplugin_add_subtitle( $title ) {
if ( is_single() ) {
$title .= ' - 欢迎阅读!';
}
return $title;
}
add_action( 'the_title', 'myplugin_add_subtitle' ); Filtre hook’larının kullanımını öğrenin.
Filtre kancaları, eylem kancalarına benzer; ancak amacı farklıdır: Verileri değiştirmek için kullanılırlar. WordPress, belirli bir veriyi (örneğin makale içeriği, başlık, özet) kullanmaya hazırlanırken, bu veri önce bir filtreden geçer. Eklentiniz bu veriyi “filtreleyebilir”, değiştirebilir ve ardından yeni değeri geri gönderebilir. Örneğin…the_contentFiltreler, makale içeriğini değiştirmenize olanak tanır.
Kullanın.add_filter()Filtre eklemek için bir fonksiyon kullanılır. Sözdizimi şu şekildedir:add_action()Aynı. Aşağıdaki örnek, tüm makale içeriklerinin sonuna otomatik olarak bir telif hakkı beyanı ekler.
function myplugin_add_copyright( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$content .= '<p class="copyright">Bu metnin telif hakkı bu sitede saklıdır.</p>';
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' ); Kısa kodlar oluşturmak ve kullanmak
Kısa kodlar (Shortcodes), kullanıcıların makalelerine veya sayfalara eklentiler aracılığıyla dinamik içerikleri kolayca eklemesini sağlayan güçlü bir araçtır. Basit parantez etiketleri kullanılarak oluşturulurlar, örneğin:[my_gallery]Kullanabilirsiniz.add_shortcode()Bir kısa kodu kaydetmek için bir fonksiyon kullanılır.
Bu fonksiyon, iki parametre alır: kısa kod etiket adı (parantezler olmadan) ve ilgili geri çağırma (callback) fonksiyonu. Geri çağırma fonksiyonu, öznitelikler (attributes) ve içerik (enclosed content) parametrelerini alabilir. Aşağıda, mevcut zamanı gösteren bir kısa kod oluşturulmuştur.
function myplugin_current_time_shortcode( $atts, $content = null ) {
// 使用 shortcode_atts 设置默认属性并合并用户输入
$atts = shortcode_atts( array(
'format' => 'Y-m-d H:i:s',
), $atts, 'current_time' );
// 返回处理后的内容
return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myplugin_current_time_shortcode' ); Kullanıcılar editörde bir şeyler yazabilirler.[current_time format="F j, Y"]Zamanı belirtilen formatta gösterin.
Tavsiye edilen okuma WooCommerce eklenti geliştirme rehberi: özel e-ticaret eklentileri oluşturmanın temellerinden ileri düzeye kadar.。
Eklenti arka plan yönetim arayüzünü oluşturma
Eklentiniz için net ve kullanıcı dostu bir arka plan ayarları sayfası oluşturmak, profesyonel bir kullanıcı deneyimi sunmanın anahtarıdır. WordPress, bu süreci kolaylaştırmak için zengin bir API sunar.
Üst düzey yönetim menüsü ekleyin.
Eklentiniz için ayrı bir arka plan menü sayfası oluşturmak istiyorsanız, şunları kullanmanız gerekecektir:add_menu_page()Fonksiyon. Bu fonksiyon genellikle…admin_menuEylem kancasında çağrılır. Menünün başlığını, yetkilerini, benzersiz URL’sini, görüntülenen geri çağırma fonksiyonunu ve simgesini tanımlar.
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限(管理员)
'myplugin-settings', // 菜单slug
'myplugin_settings_page', // 显示页面内容的回调函数
'dashicons-admin-generic', // 图标(Dashicons)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' ); Bundan sonra, yukarıdaki geri çağırma fonksiyonunu tanımlamanız gerekiyor.myplugin_settings_pageBu fonksiyon, ayar sayfasının HTML kodunu oluşturmakla sorumludur.
Ayar API’sini kullanarak seçenek sayfası oluşturun.
Form gönderimlerini ve doğrulamalarını manuel olarak işlemek hem zahmetli hem de güvensizdir. WordPress’in Ayarlar API’si (Settings API), ce olmayan alanlar, yetki kontrolü ve veri depolama gibi işlemleri otomatik hale getirir.
Ayar sayfasını oluşturmak genellikle dört adımdan oluşur: Ayarların kaydedilmesi, ayar bloklarının eklenmesi, bloklar içinde alanların kaydedilmesi ve son olarak formun sayfa geri çağırma fonksiyonunda render edilmesi. Öncelikle,admin_initAyarlarınızı kancaya (hook) kaydedin.
function myplugin_settings_init() {
// 1. 注册一个新设置(选项组名, 选项名, 清理回调)
register_setting( 'myplugin_settings_group', 'myplugin_options' );
// 2. 添加一个设置区块
add_settings_section(
'myplugin_section_basic',
'基础设置',
'myplugin_section_basic_callback',
'myplugin-settings' // 页面slug
);
// 3. 在区块内添加字段
add_settings_field(
'myplugin_field_api_key',
'API密钥',
'myplugin_field_api_key_callback',
'myplugin-settings',
'myplugin_section_basic'
);
}
add_action( 'admin_init', 'myplugin_settings_init' ); Daha sonra, alanların geri çağırma (callback) fonksiyonlarını tanımlamanız gerekiyor.myplugin_field_api_key_callbackGerçek giriş kutusunu renderlemek için ve bundan sonra…myplugin_optionsDiziden kaydedilmiş değeri alın.
function myplugin_field_api_key_callback() {
$options = get_option( 'myplugin_options' );
$value = isset( $options['api_key'] ) ? $options['api_key'] : '';
echo '<input type="text" name="myplugin_options[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">';
} Son olarak, sayfa geri çağırma fonksiyonunda bunu kullanın.settings_fields()和do_settings_sections()Lütfen tam formu çıkarın.
Eklenti Güvenliği, Optimizasyonu ve Yayınlanması
Geliştirme işleminin tamamlanması, projenin sona erdiği anlamına gelmez; eklentinin güvenli ve verimli olmasını sağlamak ve yayınlamaya hazır hale getirmek de aynı derecede önemlidir.
Güvenlik en iyi uygulamalarını hayata geçirin.
Güvenlik, eklenti geliştirmenin can damarındır. En önemli ilke şudur: Kullanıcı girdilerine asla güvenmeyin. Kullanıcıdan veya harici kaynaklardan gelen tüm verilere karşı dikkatli olun.$_GET, $_POST, $_REQUESTDoğrulama, temizleme ve escape işlemleri yapılır.
- Doğrulama: Verilerin beklenen biçim, tür veya aralığa uygun olup olmadığını kontrol edin (örneğin, bir e-posta adresi olup olmadığı, bir sayı olup olmadığı). Bunun için aşağıdakileri kullanabilirsiniz:
filter_var()或preg_match()İşlev. - Temizleme (Sanitization): Verileri veritabanına kaydetmeden önce, içlerindeki güvenli olmayan karakterleri kaldırır. WordPress, çok sayıda temizleme fonksiyonu sunar, bunlar arasında
sanitize_text_field(),sanitize_email(),sanitize_key()。 - Kaçış (Escaping): Verileri veritabanından tarayıcıya çıkarırken, XSS saldırılarını engellemek için HTML gibi özel karakterlerin güvenli bir şekilde kodlandığından emin olun. Aşağıdaki gibi fonksiyonlar kullanın:
esc_html(),esc_attr(),esc_url(),wp_kses_post()。
Ayrıca, yetkileri işlerken her zaman…current_user_can()WordPress tarafından tanımlanan standart izinlerle (örneğin…)manage_options, edit_postsMevcut kullanıcının belirli bir işlemi gerçekleştirme hakkına sahip olup olmadığını kontrol etmek için bu yöntemler kullanılır. Veritabanı sorguları söz konusu olduğunda, WordPress’in kendi sunduğu fonksiyonlar tercih edilmelidir (örneğin…).WP_Query, get_postsEğer orijinal SQL kullanmak zorundaysanız, lütfen bunu mutlaka yapın.$wpdb->prepare()SQL enjeksiyonunu önlemek için parametreleri hazırlayın.
Performans optimizasyonu yapmak
Verimsiz eklentiler tüm web sitesinin yavaşlamasına neden olabilir. Optimizasyon, birkaç farklı açıdan başlatılabilir: Her sayfa yüklendiğinde çok sayıda sorgunun veya karmaşık hesaplamaların çalıştırılmasından kaçınmak, geçici verileri depolamak için WordPress’in Transients API’sini mantıklı bir şekilde kullanmak.set_transient()和get_transient()Zaman alıcı işlemlerin sonuçları kolayca önbelleğe alınabilir.
JavaScript ve CSS dosyalarınızın yalnızca ihtiyaç duyulan sayfalarda yüklendiğinden emin olun. Kayıt işlemleri sırasında ve betikleri dahil ederken bunu göz önünde bulundurun.wp_enqueue_script()和wp_enqueue_style()Ve bağımlılıkları ile yükleme koşullarını doğru bir şekilde ayarlayın. Arka plan betikleri için, bunları uygun bir yere monte edebilirsiniz.admin_enqueue_scriptsKancalar; ön uç betikleri için, betiklere monte edilirler.wp_enqueue_scriptsKanca.
Resmi kataloga yayınlamak için hazırlanıyor.
Eğer eklentiyi WordPress.org’un resmi eklenti dizinine göndermek istiyorsanız, bazı gereksinimleri karşılamanız gerekiyor. Kodunuzun WordPress kodlama standartlarına uygun olduğundan emin olun; bunu kontrol etmek için PHP_CodeSniffer aracını kullanabilirsiniz. Eklentinize kapsamlı uluslararasılaştırma (internationalization) desteği ekleyin.__()和_e()Bu fonksiyonlar, tüm kullanıcılar tarafından görülebilen tüm metinleri kapsar ve bunları doğru bir şekilde ayarlar.Text Domain和Domain Path。
Ayrıntılı bir tane oluşturun.readme.txtDosyanın formatı WordPress’in gereksinimlerine uygun olmalıdır; içinde eklentinin açıklaması, kurulum adımları, sık karşılaşılan sorunlar, güncelleme kayıtları vb. bilgiler bulunmalıdır. Bu, kullanıcıların eklenti dizininde gördükleri temel belgedir. Son olarak, eklentinizi kapsamlı bir şekilde test edin; farklı PHP sürümleri, farklı WordPress sürümleri ve farklı temaların yanı sıra diğer eklentilerin etkin olduğu ortamlarda uyumluluk testleri yapın.
Özetle.
WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştürme sürecidir ve bu süreç, WordPress’in temel yapısını anlamaya dayanır. Profesyonel bir yerel geliştirme ortamı kurarak başlarsınız; eylem kancaları (action hooks), filtre kancaları (filter hooks) ve kısa kodlar (shortcodes) gibi üç temel etkileşim mekanizmasını öğrenerek WordPress’i esnek bir şekilde genişletebilirsiniz. Daha ileri giderek, ayar API’sini kullanarak profesyonel ve güvenli bir eklenti yönetim arayüzü oluşturabilirsiniz. Güvenlik en iyi uygulamalarını benimseyerek, performansı optimize ederek ve yayın standartlarına uyarak, kişisel projeniz geniş bir WordPress kullanıcı kitlesine hizmet verebilen güvenilir bir ürüne dönüşecektir. Sürekli öğrenmek, WordPress’in temel kodlarını ve kaliteli eklentilerin kaynak kodlarını incelemek, geliştirme becerilerinizi artırmanın en iyi yoludur.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?
HTML, CSS, PHP ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. Bunlar arasında PHP en önemlisidir, çünkü WordPress kendisi PHP ile yazılmıştır. Ayrıca MySQL veritabanı hakkında temel bilgilere sahip olmanız ve WordPress’in temel kavramlarına (makaleler, sayfalar, kategoriler, kullanıcı rolleri vb.) aşina olmanız oldukça faydalı olacaktır.
WordPress eklentimizi nasıl hata ayıklarız?
En etkili yöntem, WP_DEBUG özelliğini etkinleştirmektir. Makalede de belirtildiği gibi,wp-config.phpAyarlar bölümünde…define(‘WP_DEBUG’, true);Hata mesajları ekranda görüntülenecek veya kaydedilecektir.debug.logDosyada bulunmaktadır. Ayrıca, kullanılabilir.error_log()Fonksiyonlar, özelleştirilmiş hata ayıklama bilgileri çıkarabilir veya Xdebug gibi profesyonel hata ayıklama araçları ile IDE birlikte kullanılarak kesme noktaları aracılığıyla hata ayıklaması yapılabilir.
Eklentim, temalar ve diğer eklentilerle nasıl uyumlu çalışır?
Maksimum uyumluluk sağlamak için eklentiniz, WordPress kodlama standartlarına ve en iyi uygulamalara mümkün olduğunca uymalıdır. Çatışmalara neden olabilecek genel değişkenlerden veya fonksiyon adlarından kaçının (sınıflar veya benzersiz önekler kullanılması önerilir). Özellikler eklemek için standart hook’ları (düğümleri) kullanın; çekirdek dosyaları doğrudan değiştirmeyin. Mümkün olduğunda, diğer geliştiricilerin eklentinizin çıktısını veya davranışını değiştirmesine izin veren filtreler (filters) sağlayın.
Eklentiye çok dilli destek nasıl ekleyebilirim?
Eklentilere uluslararasılaştırma (i18n) desteği eklemek için WordPress’in çeviri fonksiyonlarını kullanmanız gerekir. Öncelikle,__()或_e()`wait` fonksiyonu, tüm kullanıcı tarafından görülebilen metinleri kapsar. Daha sonra, bu metinler eklentinin ana dosyasının baş kısmında doğru bir şekilde ayarlanır.Text Domain和Domain PathSon olarak, Poedit gibi bir araç kullanarak içeriği dönüştürün..potŞablon dosyaları; çevirmenler, bu dosyalara dayanarak farklı dillerde içerikler oluşturabilirler..po和.moDosya.
Eklentilerin WordPress.org’a gönderilmesi sırasında reddedilmesinin yaygın nedenleri nelerdir?
Yaygın nedenler arasında şunlar bulunmaktadır: Güvenlik açıkları (doğrulanmamış ve escape işlemi yapılmamış kullanıcı girdileri), eklenti katalogu kurallarının ihlali (ödeme bağlantıları veya şifreli kodların bulunması), düşük kod kalitesi (çok sayıda hata veya uyarı), mevcut eklentilerle tamamen aynı işlevleri yerine getiren ve herhangi bir iyileştirme sunmayan eklentiler.readme.txtDosya standartlara uymuyor veya eklenti, izin verilmeyen bir lisans kullanıyor. Göndermeden önce, lütfen resmi kılavuzları dikkatlice okuyun ve dosyayı kapsamlı bir şekilde kontrol edin.
Bir sonraki adım, bundan sonra ne yapmalıyım?
Daha fazla okuma ve pratik bilgiler.
Aşağıdaki içerikler bu makalenin konusuyla ilgilidir ve daha fazla okumak için uygundur. Öncelikle mevcut sorununuza en yakın makaleden başlayın, sonra çevresel konulara doğru ilerleyin, genellikle daha iyi sonuçlar alırsınız.
- WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Özel Eklentinizi Oluşturun
- Neden e-ticaret çözümünüz olarak WooCommerce’u seçtiniz?
- WooCommerce Kapsamlı Kılavuzu: Sıfırdan Online Mağazanızı ve Satış Stratejinizi Oluşturun
- Kurumsal Web Sitesi Oluşturma Kılavuzu: Sıfırdan Başlayarak Profesyonel Seviyede Geliştirme Sürecinin Tam Analizi
- Web Sitesi Kurma: Başlangıçtan Uzmanlığa: Profesyonel Web Siteleri Oluşturmak İçin Kapsamlı Pratik Rehber ve Teknik Analiz