Eklentileri Anlamak: WordPress mimarisinin genişletilmesinin temel taşı
WordPress eklentileri, esasen PHP dilinde yazılmış bir dizi kod dosyasından oluşur. Bu eklentiler, WordPress tarafından sağlanan standart arayüzler aracılığıyla çekirdek sistemle etkileşime girer ve böylece çekirdek kodu değiştirmeden web sitelerine yeni özellikler ekler veya mevcut işlevleri değiştirir. Bir eklenti, sadece birkaç satırlık kod içerebileceği gibi, yüzlerce dosyadan oluşan ve tam bir uygulama niteliği taşıyan karmaşık yapılar da olabilir.
Eklentilerin temel değeri modülerliğindedir. “Hemen kullanılabilir” ilkesini benimserler ve web sitesi yöneticilerinin belirli ihtiyaçlara göre işlevleri esnek bir şekilde birleştirmelerine olanak tanır. Teknik açıdan bakıldığında, eklentiler WordPress ile esas olarak iki mekanizma aracılığıyla etkileşim kurar: Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks). Eylem Kancaları, belirli zaman noktalarında (örneğin sayfa yüklendikten önce, makale yayınlandıktan sonra) özelleştirilmiş kodları çalıştırmanıza olanak tanır; Filtre Kancaları ise WordPress’in çalışma sırasında ürettiği verileri (örneğin makale içeriği, başlık, menü öğeleri vb.) değiştirmenize imkan verir.
WordPress’in eklenti dizin yapısını anlamak da çok önemlidir. Tüm eklentiler aşağıdaki dizinde saklanır:/wp-content/plugins/Katalogda, her eklentinin genellikle kendine ait bir ana klasörü bulunur ve bu klasörün adı benzersiz ve açıklayıcı olmalıdır. Bu klasörde en az bir ana PHP dosyası bulunmalıdır; bu dosyanın başlık kısmındaki yorumlar, WordPress’in eklentiyi tanıması için gerekli tüm meta bilgileri içerir.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Gerçek Uygulamalara Kadar Detaylı Anlatım。
İlk eklentinizi oluşturun: Temel dosyalardan başlayın
Eklenti oluşturmaya başlamak için, öncelikle…/wp-content/plugins/Katalogda yeni bir klasör oluşturun, örneğin…my-first-pluginDaha sonra, bu klasör içinde ana PHP dosyasını oluşturun; dosya adı genellikle klasör adıyla aynı olur, örneğin:my-first-plugin.php。
Plugin başlık bilgilerini yazın.
Her WordPress eklentisi, standart bir PHP yorum bloğu ile başlamalıdır; buna “Eklenti Başlığı” (Plugin Header) denir. WordPress, bu bilgileri okuyarak arka planda eklentinin adını, açıklamasını, sürümünü ve diğer özelliklerini yönetim arayüzünde gösterir. Aşağıda…my-first-plugin.phpDosyanın temel içeriği:
<?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
* Domain Path: /languages
*/ Bu yorumda,Plugin NameBu alan tek zorunlu alandır; diğer alanlar isteğe bağlıdır. Ancak eklentinin bütünlüğü ve profesyonelliği açısından, mümkün olduğunca tüm alanları doldurmanız önerilir.Text Domain和Domain PathEklentilerin uluslararasılaştırılması (i18n) ve yerelleştirilmesi için kullanılır.
Basit bir işlevi gerçekleştirin.
Şimdi, bu eklentiye basit bir özellik ekleyelim: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyelim. Bunun için…the_contentBu filtre kancası… Ana PHP dosyasının başlık bilgilerinin hemen altına aşağıdaki kodu ekleyin:
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit; // 如果ABSPATH未定义,则退出
}
/**
* 在文章内容末尾添加自定义文本
* @param string $content 原始文章内容
* @return string 修改后的文章内容
*/
function myfp_add_text_to_content( $content ) {
// 确保仅在主循环的单篇文章页面执行
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Bu metni “Benim İlk Eklentim” sizin için sunuyor.</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将我们的函数挂载到‘the_content’过滤器上
add_filter( 'the_content', 'myfp_add_text_to_content' ); Bu kod, bir fonksiyon tanımlamaktadır.myfp_add_text_to_contentMakalenin içeriğini alır$contentBir parametre olarak kullanın ve ardından koşullu etiketleri (conditional tags) kullanın.is_single()Kontrol edin ve yalnızca tek bir makale sayfasının ana sorgusunda, içeriğin sonuna bir HTML metni eklenmesini sağlayın. Son olarak,add_filter()Bu fonksiyon, özel olarak oluşturulan bu fonksiyonu WordPress’e bağlar (yani WordPress’in mevcut fonksiyon yapısına ekler).the_contentFiltre üzerinde.
Tavsiye edilen okuma WordPress eklenti geliştirme rehberi: ilk eklentinizi sıfırdan bir'e oluşturma.。
Çekirdek geliştirme standartlarına uyun.
WordPress’in kodlama standartlarına uymak, yüksek kaliteli, bakımı kolay ve güvenli eklentiler geliştirmenin temelidir. Bu durum sadece kod stilini değil, aynı zamanda güvenlik uygulamalarını ve mimari tasarımı da kapsar.
Kod Yapısı ve Adlandırma Kuralları
WordPress’in PHP kodu esas olarak aşağıdaki standartlara ve kurallara uygundur:WordPress PHP kodlama standartları.Önemli noktalar şunları içerir: Fonksiyonları ve değişkenleri, küçük harfler ve alt çizgi (-) ayırıcılar kullanarak adlandırmak (örneğin:myplugin_do_somethingSınıf adları büyük köpekbalığı sırtı (camel case) adlandırma yöntemiyle yazılır (örneğin:MyPlugin_Admin_SettingsDeğişkenler genellikle küçük harflerle yazılır; sabitler ise tamamen büyük harflerle ve alt çizgi (-) ile ayrılır (örneğin: ...).MYPLUGIN_VERSION)。
Tüm eklenti kodlarının, fonksiyonlar, sınıflar veya ad alanları içinde düzgün bir şekilde organize edilmesi gerekmektedir; böylece genel (global) alanlarda istenmeyen etkilerin (side effects) oluşması önlenir. Eklenti fonksiyonlarınız ve sınıf adlarınıza, WordPress çekirdeği, diğer eklentiler veya temaların fonksiyon adlarıyla çakışmamak için özel bir önek eklemeniz önerilir. Örneğin, eklentinin adının kısaltmasını kullanabilirsiniz.
Güvenlik en öncelikli görevdir.
Güvenlik, eklenti geliştirmenin her aşamasına entegre edilmelidir. En önemli ilke şudur: Kullanıcı girdilerine asla güvenmeyin. Dış kaynaklardan alınan tüm veriler (örneğin…)$_GET, $_POST, $_COOKIEVeritabanı sorgulamalarında, tarayıcıya çıktı olarak gönderilmeden önce veya dosya sistemi işlemleri öncesinde, verilerin doğrulanması, temizlenmesi veya escape işlemlerinin yapılması gerekmektedir.
HTML sayfalarına çıkarılan veriler için…esc_html(), esc_attr()Bu fonksiyonlar kullanılarak karakterler escape edilmelidir. Veritabanı işlemleri için mutlaka belirli yöntemlerin kullanılması gerekmektedir.$wpdbSınıf tarafından sağlanan metotlar (örneğin…)$wpdb->prepare()SQL enjeksiyonlarını önlemek için bu önlemler alınmalıdır. Dosya sistemi işlemleri gerçekleştirilirken, WordPress’in dosya sistemi API’si kullanılmalıdır. Örneğin:WP_Filesystem。
Ayrıca, kullanıcı haklarını kontrol etmek son derece önemlidir. Yönetim işlemleri gerçekleştirmeden veya hassas verilere erişmeden önce, mutlaka ilgili hakları kullanın.current_user_can()Fonksiyon, mevcut kullanıcının ilgili yetkiye (Capability) sahip olup olmadığını doğrular. Örneğin…‘manage_options’。
Tavsiye edilen okuma Sıfırdan Bir: WordPress Eklenti Geliştirmenin Temel Becerilerini Adım Adım Öğrenin。
Eklenti Geliştirmenin İleri Seviye Uygulamaları
Eklentilerin işlevleri daha karmaşık hale geldiğinde, iyi bir mimari tasarım ve gelişmiş özelliklerin uygulanması özellikle önemli hale gelir.
Yönetici ayarları sayfasını oluşturun.
Çoğu eklentinin, kullanıcıların ayarlamalar yapabileceği bir arka plan sayfasına ihtiyacı vardır. Genellikle, bu sayfa…add_menu_page()或add_submenu_page()Fonksiyon, WordPress’un yönetim menüsüne eklendi. En iyi uygulama, ayar sayfasıyla ilgili tüm kodu (HTML formları, seçeneklerin kaydedilme mantığını vb.) bir sınıf veya bağımsız bir dosya içinde paketlemektir.
Öncelikle, kullanın.add_action( ‘admin_menu’, ‘myplugin_add_admin_menu’ )Menüyü kaydetmek için buraya gelin. Geri çağırma fonksiyonunda…myplugin_add_admin_menuBurada, sayfa başlıklarını, menü başlıklarını, yetkileri, menü slug’larını ve sayfa içeriğini renderlemek için kullanılan geri çağırma fonksiyonlarını tanımlayabilirsiniz. Ayar seçeneklerinin kaydedilmesi için WordPress’in Settings API’sini kullanmanız önerilir; bu API, güvenli olmayan doğrulamaları ve ayarların serileştirilmiş şekilde saklanmasını otomatik olarak işler.
Eylem ve filtre kancalarını etkili bir şekilde kullanın.
WordPress’in hook sisteminde uzmanlaşmak, gelişmiş eklenti (plugin) geliştirmenin anahtarıdır. Mevcut hook’ları kullanmanın yanı sıra, kaliteli eklentiler kendi işlevleri için özel hook’lar da sağlamalıdır; böylece diğer geliştiriciler eklentinizi genişletebilirler.
Kullanın.do_action( ‘myplugin_custom_hook’, $some_data )Bir eylem kancası (action hook) oluşturun ki diğer geliştiriciler bu noktada kod ekleyebilsinler. Kullanımı şu şekildedir:apply_filters( ‘myplugin_filter_data’, $data_to_filter )Bir filtre düğümü (filter hook) oluşturarak diğer geliştiricilerin eklentinizdeki bazı verileri değiştirmelerine izin verin.
Bu tasarım deseni, eklentilerin genişletilebilirliğini ve esnekliğini büyük ölçüde artırmaktadır. Örneğin, bir eklentinin verileri kaydetmeden önce bir filtre işlemi ekleyebilirsiniz; böylece diğer eklentiler bu verileri değiştirebilir. Ya da bir görev tamamlandıktan sonra bir eylem tetikleyici kullanarak sonraki günlük kayıt veya bildirim işlemlerini gerçekleştirebilirsiniz.
Eklentilerin etkinleştirilmesi ve devre dışı bırakılması işlemleri
Kullanıcılar eklentiyi etkinleştirdiğinde veya devre dışı bıraktığında, veritabanı tabloları oluşturmak, varsayılan ayarları başlatmak veya geçici verileri temizlemek gibi tek seferlik görevler gerçekleştirmeniz gerekebilir. Bu işlemler, etkinleştirme ve devre dışı bırakma işlemleri için oluşturulan “hook” (düğüm) mekanizmaları aracılığıyla gerçekleştirilebilir.
Ana eklenti dosyanızda, şunu kullanın:register_activation_hook( FILE, ‘myplugin_activate’ )Aktivasyon sırasında çalıştırılacak fonksiyonları tanımlayın. Dikkat edilmesi gereken bir nokta, aktivasyon işlemi sırasında kullanılan fonksiyonların içinde tanımlanmamış olabilecek fonksiyonların (örneğin, yalnızca belirli yönetim sayfalarında yüklenen API’ler) çağrılmasından kaçınılması gerektiğidir. Ayrıca, karmaşık başlatma işlemleri (örneğin veritabanı tablolarının oluşturulması) için her aktivasyonda yeniden deneme yapmak yerine, daha sağlam bir “veritabanı sürüm kontrolü” mekanizması kullanılmalıdır.
Özetle.
WordPress eklenti geliştirme, yaratıcılığı somut web sitesi özelliklerine dönüştüren güçlü bir beceridir. Temeli, WordPress’in kancalama sistemi (eylemler ve filtreler) anlamak ve bunu bir araç olarak kullanarak kodlama standartlarına ve güvenlik kurallarına uygun PHP kodu yazmaktır. Doğru eklenti başlık bilgilerini yazmaktan başlayarak, özellikleri adım adım gerçekleştirmek; kullanıcı girdilerini doğrulamak, dönüştürmek ve çıktıyı temizlemek, eklentinin güvenli ve stabil olmasının temel taşlarıdır. Becerileriniz geliştikçe, yapılandırma sayfaları oluşturmak, başkalarının genişletmesi için özel kancalar oluşturmak ve eklentinin yaşam döngüsünü uygun şekilde yönetmek, eklentinizi “kullanılabilir”den “profesyonel” ve “güvenilir” seviyeye taşıyacaktır. Bu işlevleri ve en iyi uygulamaları takip ederek, verimli, güvenli ve kolayca bakımı yapılabilecek WordPress eklentileri geliştirebilirsiniz.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?
WordPress eklentisi geliştirmek için PHP programlama dilinin temel bilgilerine hakim olmak gerekmektedir; bu bilgiler değişkenler, fonksiyonlar, sınıflar ve temel sözdizimi içerir. Aynı zamanda, ön uç görünümünü ve etkileşimini yönetebilmek için HTML, CSS ve JavaScript konularında temel bir bilgiye sahip olmak önemlidir. En önemlisi, WordPress’in temel yapısını, özellikle de Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks)’ın çalışma mekanizmalarını anlamaktır.
Kendi geliştirdiğiniz eklentiyi nasıl hata ayıklar ve test edersiniz?
WordPress’ın etkinleştirilmesini öneririm.WP_DEBUGBu mod, PHP hatalarını ve uyarılarını bir günlük dosyasına veya ekrana yazdırır, böylece sorunları hızlı bir şekilde tespit etmenize yardımcı olur. Bunu yapmak için...wp-config.phpDosyada tanımlanmıştır.define( ‘WP_DEBUG’, true );Onu açın. Ayrıca, tarayıcı geliştirici araçlarını kullanarak konsolu ve ağ isteklerini incelemek; ve Query Monitor gibi profesyonel hata ayıklama eklentilerinden yararlanmak, hata ayıklama sürecini büyük ölçüde kolaylaştırabilir. Kod mantığı testleri için “geliştirirken aynı zamanda test etme” ilkesine uymalı ve işlevleri farklı senaryolarda (çeşitli sayfalar, kullanıcı rolleri) doğrulamalısınız.
Eklentiler geliştirirken, diğer eklentilerle çakışmaları nasıl önleyebiliriz?
Çatışmaları önlemenin ana yolu, tüm fonksiyonlarınızı, sınıflarınızı, sabitlerinizi ve küresel değişkenlerinizi benzersiz bir önek kullanarak adlandırmaktır. Bu önek yeterince özgün olmalı ve tercihen eklentinin adı veya bir kısaltması olmalıdır. Örneğin, eklentiniz “Awesome Gallery” ise, benzer bir önek kullanabilirsiniz.ag_或awesome_gallery_Öncelikle, bir kod parçasının başına belirli bir önek eklemek, kodun diğer kısımlardan ayrılmasını sağlar. İkincisi, kodu sınıflar veya ad alanları (namespace’lar) içinde saklamak da etkili bir izolasyon yöntemidir. CSS ve JavaScript kodlarını üretirken, seçicilerin (selectors) spesifik olmasına dikkat edilmelidir; ayrıca, eklenti adlarının konteyner elemanların ID’si veya sınıf adı olarak kullanılması düşünülebilir.
Eklenti tamamlandıktan sonra, onu resmi eklenti kataloğuna nasıl gönderebilirim?
Eklentiyi WordPress.org’un resmi eklenti dizinine göndermek için öncelikle WordPress.org’da bir hesap oluşturmanız ve eklentinin adını inceleme için göndermeniz gerekmektedir. İnceleme onaylandıktan sonra, eklenti kodunuzu size atanmış SVN deposuna SVN (Subversion) aracılığıyla göndermeniz gerekmektedir. Eklenti kodunun, standartlara uygun eklenti başlık bilgilerini ve bir…readme.txtDosya, eklentiyi tanımlamak için belirli bir format kullanır ve tüm WordPress geliştirme ve güvenlik kurallarına uygundur. Gönderildikten sonra, eklenti bir inceleme ekibi tarafından kod açısından incelenir. İncelemeden geçtikten sonra, katalogda herkese açık olarak yayınlanabilir.
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 Eklenti Geliştiricisi Olmak: Sıfırdan Bir’e Kapsamlı Rehber
- WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Profesyonel Eklentiler Oluşturma
- WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – İlk Özel Eklentinizi Oluşturun
- Sıfırdan Bir: İlk WordPress Eklentinizi Adım Adım Geliştirmek İçin Kapsamlı Rehber