Hazırlık İşlemleri ve Ortam Kurulumu
Kod yazmaya başlamadan önce, stabil ve verimli bir geliştirme ortamı çok önemlidir. Bu, yalnızca yerel geliştirme araçlarını içermekle kalmaz; aynı zamanda WordPress’in temel yapısını anlamayı da gerektirir.
Yerel Geliştirme Ortamı Ayarları
Yerel sunucu entegrasyon ortamlarını kullanmanız önerilir; örneğin Local by Flywheel, XAMPP veya MAMP. Bu araçlar, PHP, MySQL ve web sunucusunu tek tıklamayla kurmanıza ve yapılandırmanıza olanak tanır. Kullandığınız PHP sürümünün mevcut popüler WordPress sürümleriyle uyumlu olduğundan emin olun (genellikle PHP 7.4 veya daha yüksek bir sürüm gereklidir) ve hata ayıklama özelliğini etkinleştirin. WordPress’in…wp-config.phpDosyada, ayarlar yapılmıştır.WP_DEBUG为trueBu, geliştirme sürecinde tüm uyarıları ve hataları gösterecek ve sorunları hızlı bir şekilde tespit etmenize yardımcı olacaktır.
Eklentilerin Temel Kavramları ve Yapı Planlaması
Standart bir WordPress eklentisi, en az bir PHP dosyası içeren bir klasördür ve WordPress’in belirli bir işlevini veya özelliğini genişletmek için kullanılır. Bu klasör, WordPress’in kurulum dizinine yerleştirilir./wp-content/plugins/Dosya dizininin içinde yer alır. Eklentinin ana dosyasının baş kısmında, WordPress’in eklentiyi tanıması ve yönetmesi için belirli meta bilgilerin bulunması gerekir. Planlama aşamasında, eklentinin temel işlevleri, oluşturulması gereken veri tabloları (varsa) ve WordPress’in menüleri, araç çubukları, kısa kodlar gibi sistemlerle nasıl entegre edileceği açıkça belirlenmelidir. Net bir planlama, sonraki geliştirme aşamalarında olası yapısal karışıklıkları önler.
Tavsiye edilen okuma Başlangıçtan ileri düzeye: WordPress eklenti geliştirme eksiksiz rehberi ve uygulamalı eğitim.。
İlk eklenti ana dosyasını oluşturun.
Her şey ana dosyadan başlar; bu, eklentinin giriş noktasıdır ve eklentinin temel bilgilerini tanımlamaktan ve çekirdek işlevleri yüklemekten sorumludur.
Plugin başlık bilgilerini yazın.
Eklentinin ana dosyasının baş kısmında, standart bir biçimde hazırlanmış eklenti bilgilerini içeren bir yorum bulunmalıdır. Bu yorum…/* ... */Paket, eklenti adını, açıklamasını, sürümünü, yazarını vb. içerir. WordPress’in arka uçtaki eklenti listesi sayfası bu bilgileri okur ve bunları görüntüler. Örneğin, en basit bir eklenti başlığı şu şekilde yazılabilir:
<?php
/**
* Plugin Name: 我的第一个自定义插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习WordPress插件开发的基础插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Bunlar arasında,Text DomainUluslararası çeviri için kullanılır; lütfen sonraki çeviri fonksiyonu çağrılarında kullanılan metin alanlarıyla tutarlı olmasına dikkat edin.
Eklentilerin etkinleştirilmesi ve devre dışı bırakılması için gerekli mantığı uygulayın.
Kullanıcılar eklentiyi “Etkinle” veya “Devre Dışı Bırak” seçeneklerine tıkladığında, bazı başlatma ve temizleme işlemlerinin yapılması gerekebilir. Bu işlemler, etkinleme ve devre dışı bırakma işlemlerini yöneten fonksiyonlar aracılığıyla gerçekleştirilir. İlgili fonksiyonlar şunlardır:register_activation_hook()和register_deactivation_hook()Aktifleştirme işlemleri genellikle özel veritabanı tabloları oluşturmak, başlangıç seçeneklerini ayarlamak gibi tek seferlik işlemler için kullanılır. Lütfen dikkat edin: Başlangıç kodlarını eklentinin ana yürütme dosyasına doğrudan yazmayın; bunun yerine bu kodları bir “kancalı fonksiyon” (hook function) içinde saklayın. Aksi takdirde bu kodlar her sayfa yüklendiğinde çalışacaktır.
// 注册激活钩子
register_activation_hook( __FILE__, 'my_first_plugin_activate' );
function my_first_plugin_activate() {
// 创建选项或数据库表
if ( ! get_option( 'my_plugin_options' ) ) {
add_option( 'my_plugin_options', [ 'default_key' => 'default_value' ] );
}
// 可能需要刷新WordPress的重写规则
flush_rewrite_rules();
}
// 注册停用钩子
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );
function my_first_plugin_deactivate() {
// 清理临时数据,但通常保留用户设置
// 例如:删除定时任务
wp_clear_scheduled_hook( 'my_daily_event' );
// 注意:一般不在此处删除数据库表或选项,卸载时会处理
} Çekirdek İşlev Geliştirme Uygulamaları
Temel yapıyı öğrendikten sonra, WordPress’in çekirdek genişletme mekanizmasına daha derinlemesine gireceğiz ve işlevler eklemek için eylem kancaları (action hooks) ve filtreler (filters) kullanacağız.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan İlk Özel Eklentinizi Oluşturun。
Eylem kancalarını kullanarak işlevler ekleyin.
Eylem Kancaları (Action Hooks), WordPress’in işlem akışının belirli noktalarına kendi kodunuzu eklemenize olanak tanır. Örneğin, bir makalenin sonuna otomatik olarak telif hakkı bilgileri eklemek istiyorsanız, bunu yapmak için Eylem Kancaları’ndan yararlanabilirsiniz.the_contentBu filtre, özel bir tür eyleme aittir. Daha tipik eylemler ise şunlardır:wp_enqueue_scriptsBu, ön uç betiklerini ve stillerini güvenli bir şekilde yüklemek için kullanılır.add_action()Bu fonksiyon, geri çağırma (callback) fonksiyonunuzu monte etmek için kullanılır.
// 在文章内容末尾添加自定义HTML
add_filter( 'the_content', 'my_content_filter' );
function my_content_filter( $content ) {
if ( is_single() ) {
$custom_html = '<div class="my-copyright">Bu metnin telif hakkı bu sitede saklıdır.</div>';
$content .= $custom_html;
}
return $content;
}
// 正确加载前端资源
add_action( 'wp_enqueue_scripts', 'my_plugin_enqueue_assets' );
function my_plugin_enqueue_assets() {
wp_enqueue_style(
'my-plugin-style',
plugins_url( 'assets/css/style.css', __FILE__ ),
[],
'1.0.0'
);
wp_enqueue_script(
'my-plugin-script',
plugins_url( 'assets/js/script.js', __FILE__ ),
[ 'jquery' ], // 声明依赖jQuery
'1.0.0',
true // 在页面底部加载
);
} Yönetim sayfası ve menüsü oluşturun.
Kullanıcıların arka planda eklentinizi yapılandırabilmesi için bir yönetim menüsü ve sayfaları oluşturmanız gerekiyor.add_menu_page()或add_submenu_page()Fonksiyon. Bu süreç genellikle aynı zamanda monte edilir.admin_menuEylem, bir “hook” (düğüm) üzerinde gerçekleşir. Geri çağırma fonksiyonunda (callback function), sayfanın HTML içeriğini çıkarmalı ve kullanıcı tarafından gönderilen form verilerini işlemelisiniz (genellikle WordPress’in ayar API’si kullanılır).settings_apiBasitleştirelim.
add_action( 'admin_menu', 'my_plugin_create_admin_menu' );
function my_plugin_create_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-plugin-settings', // 菜单slug
'my_plugin_settings_page', // 显示页面的回调函数
'dashicons-admin-generic', // 图标
80 // 位置
);
}
function my_plugin_settings_page() {
// 检查用户权限
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/tr/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、非ce等
settings_fields( 'my_plugin_options_group' );
do_settings_sections( 'my-plugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Eklenti Güvenliği, Optimizasyonu ve Yayınlanması
Profesyonel bir eklentinin, sadece işlevlerinin kusursuz olmasıyla kalmayıp, aynı zamanda güvenlik ve performans açısından da özen göstermesi gerekir; ayrıca yayınlanmadan önce son hazırlıkların da eksiksiz yapılması önemlidir.
Veri doğrulaması ve kod dönüşümünü (escape) gerçekleştirme
Güvenlik, eklenti geliştirmede en önemli önceliklerden biridir. Kullanıcılar veya dış kaynaklardan gelen tüm veriler (örneğin…)$_GET, $_POST, $_REQUESTHepsi güvenilir değildir. Verileri veritabanına kaydetmeden önce, verilerin beklenen formata uygun olduğundan emin olmak için doğrulama (validation) yapılmalıdır. Verileri HTML, JavaScript veya URL’ye çıkardığınızda, çapraz sitelik betik (XSS) saldırılarını önlemek için kaçırma (escaping) işlemi yapılmalıdır. WordPress, bu amaçlar için birçok yardımcı fonksiyon sunar.sanitize_text_field()、esc_html()、esc_url()和wp_kses_post()vs.
// 处理表单提交示例
if ( isset( $_POST['my_input'] ) ) {
// 1. 验证和清理输入
$clean_input = sanitize_text_field( wp_unslash( $_POST['my_input'] ) );
// 2. 处理数据...
update_option( 'my_saved_input', $clean_input );
// 3. 输出时进行转义
echo '<p>Girdiğiniz şey: `.esc_html(get_option('my_saved_input'))`.'</p>';
} Uluslararasılaştırma ve yerelleştirme hazırlıklarını yapın.
Eklentinizin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) hazırlıklarının yapılması gerekmektedir. Bu, tüm kullanıcıya yönelik metinlerin doğrudan koda yazılamayacağı ve bunun yerine WordPress’in çeviri fonksiyonları kullanılarak yapılandırılması gerektiği anlamına gelir. Özellikle bu işlem sıkça kullanılır.()Çevrilen metni yansıtmak için kullanılır._e()Doğrudan çıktı için kullanılır.esc_html()`` gibi karakterler, escape (kaçınma) işlemleri için kullanılır. Daha önce eklentinin baş kısmında bunları tanımlamıştınız.Text DomainTam burada kullanın. Daha sonra, Poedit gibi araçlar kullanarak oluşturabilirsiniz..potŞablon dosyası, çevirmenlerin kullanımı için hazırlanmıştır..po和.moÇeviri dosyası.
// 在代码中包装可翻译字符串
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'Settings saved successfully!', 'my-first-plugin' );
// 带占位符的翻译
printf(
/* translators: %s: User's name */
__( 'Welcome, %s!', 'my-first-plugin' ),
esc_html( $user_name )
); Hazırlanan eklenti yayın listesi
Eklentiyi WordPress resmi eklenti kütüphanesine göndermeden veya dağıtmadan önce, aşağıdaki kontrolleri tamamlayın: Kodun WordPress kodlama standartlarına uygun olduğundan emin olun; ayrıntılı bir dokümantasyon hazırlayın.readme.txtDosyaların formatı resmi gerekliliklere uygun olmalıdır. Farklı temalar ve diğer eklentilerle olan uyumluluğu da dahil olmak üzere kapsamlı bir işlevsellik testi yapılmalıdır. Eklenti klasörlerini sıkıştırırken yalnızca gerekli dosyaların dahil edildiğinden emin olun; sürüm kontrol sistemi klasörleri (örneğin…) içermemelidir..git) veya IDE yapılandırma dosyası.
Tavsiye edilen okuma WordPress eklenti geliştirmeye başlama kılavuzu: İlk işlevsel uzantınızı sıfırdan oluşturun.。
Özetle.
Sıfırdan profesyonel bir WordPress eklentisi geliştirmek, ortam hazırlığı, yapı planlaması, temel kodlama ve güvenli yayınlama gibi birçok aşamayı içeren sistematik bir iştir. Önemli olan, WordPress’in hook sistemi (eylemler ve filtreler) hakkında derinlemesine bilgi sahibi olmaktır; çünkü bu, eklentilerin işlevlerini genişletmenin temel mekanizmasıdır. Aynı zamanda, güvenlik ve uluslararasılaştırma (çok dilli destek) geliştirmenin temel gereksinimleri olarak kabul edilmeli ve sonradan eklenen özellikler olmamalıdır. WordPress tarafından sağlanan API’leri kullanmak, verileri dikkatli bir şekilde doğrulamak ve kod yapısını mantıklı bir şekilde planlamak gibi en iyi uygulamalara uyarak, sadece güçlü özelliklere sahip eklentiler oluşturmakla kalmaz, aynı zamanda bunların stabil, güvenli ve kolayca bakımı yapılabilir olmasını da sağlarsınız. Sonuç olarak, WordPress ekosistemine yüksek kaliteli ürünler katkıda bulunmuş olursunuz.
Sıkça Sorulan Sorular.
### için WordPress eklentisi geliştirmek için hangi programlama bilgilerine ihtiyaç vardır?
WordPress eklentileri geliştirmek için öncelikle PHP diliyi iyi bilmek gerekmektedir; çünkü WordPress kendisi PHP ile yazılmıştır. Aynı zamanda, ön uç görünümünü ve etkileşimini yönetebilmek için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmak önemlidir. Bunun yanı sıra, karmaşık veri işlemleriyle ilgilenirken bazı temel MySQL bilgilerinin de faydalı olacağı unutulmamalıdır.
WordPress eklenti kodumu nasıl hata ayıklarım?
En etkili yöntem şudur:wp-config.phpDosyada etkinleştirildi.WP_DEBUGBunu şu şekilde ayarlayın:define( 'WP_DEBUG', true );Böylece tüm PHP hataları, uyarıları ve bildirimleri görüntülenecektir. Daha karmaşık hata ayıklamaları için ise şu araçlar kullanılabilir:error_log()Fonksiyon, değişken bilgilerini sunucunun hata günlüğüne yazar veya sorguları ve işlemleri takip etmek için özel hata ayıklama eklentileri kullanır.
Eklentim, temalar ve diğer eklentilerle nasıl uyumlu çalışır?
Uyumluluğu artırmanın en iyi yöntemleri şunlardır: Her zaman WordPress’in resmi olarak sağladığı API’leri ve fonksiyonları kullanın; özel fonksiyonlardan veya doğrudan veritabanı işlemlerinden kaçının; fonksiyonlarınızın, sınıflarınızın ve seçenek adlarının çakışmasını önlemek için benzersiz bir önek ekleyin; mümkün olduğunda filtreler sağlayın.apply_filtersDiğer geliştiricilerin eklentinizin çıktısını değiştirmesine izin verin; ayrıca, eklentinize temanın tasarımını bozabilecek aşırı spesifik stiller eklemekten kaçının.
Eklentiler için ayrı bir veritabanı tablosu oluşturmak zorunda mıyız?
Her zaman öyle olmayabilir. Çoğu durumda, WordPress’in yerleşik veri depolama yöntemlerini tercih etmek daha iyidir; örneğin Özel Gönderi Türleri (Custom Post Types), Taksonomi (Taxonomy) veya Ayarlar Tabloları (Option Tables).wp_optionsBu API’ler tam olarak optimize edilmiş ve çekirdek sistemlerle derinlemesine entegre edilmiştir. Yalnızca veri yapınız çok karmaşık ve mevcut sistemlere uyarlanamıyorsa özel veri tabloları oluşturmayı düşünmelisiniz; çünkü bu durum bakım ve geçiş süreçlerini daha da zorlaştırır.
WordPress resmi eklenti dizinine eklentimi nasıl gönderebilirim?
Öncelikle, WordPress.org üzerinde bir hesap oluşturmanız ve eklentiyi göndermeniz gerekiyor. Eklentiniz, GPLv2 veya daha yüksek bir lisansla uyumlu olması, kodun temel standartlara uyması, doğru biçimde hazırlanmış olması gibi bir dizi gereksinimi karşılamalıdır.readme.txtDosyalar vb. Gönderildikten sonra, eklenti inceleme ekibi tarafından manuel olarak incelenecektir; bu süreç birkaç hafta sürebilir. İncelemeden geçtikten sonra, eklenti sürümlerini yönetmek için resmi SVN deposuna erişim hakkı elde edeceksiniz.
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
- WordPress alt teması nedir?
- WordPress Eklenti Geliştiricisi Olmak: Sıfırdan Bir’e Kapsamlı Rehber
- Sıfırdan Başlayın: Modern WordPress Tema Geliştirme Sürecinin Tamamı ve En İyi Uygulamaları
- WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Profesyonel Eklentiler Oluşturma