Sıfırdan başlamak: WordPress eklenti geliştirme altyapısı.
Bir WordPress eklentisi geliştirmek istiyorsanız, öncelikle temel yapısını anlamanız gerekir. Bir eklentinin en temel dosyası ana dosyasıdır ve genellikle eklentinin adıyla adlandırılır. Örneğin:my-first-plugin.phpBu dosya, eklentinin tüm işlevsel kodlarını içermekle kalmaz; daha da önemlisi, dosyanın en üst kısmındaki eklenti bilgilerini içeren başlık yorumlarıdır. Bu başlık bölümü, WordPress’in eklentiyi tanımasında kilit bir rol oynar.
Eklenti başlık yorumlarında belirli meta verilerin bulunması gerekmektedir. İş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://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Bu dosyayı oluşturdum ve onu belirli bir yere koydum./wp-content/plugins/Dizinin ardından, WordPress arka planındaki “Eklentiler” sayfasında bu eklentiyi görebilir ve etkinleştirebilir veya devre dışı bırakabilirsiniz. Bundan sonra, eklenti kodunun yükleme ve çalıştırma sırasını anlamak çok önemlidir. WordPress, eklentileri yüklerken bunları alfabetik sıraya göre yükler./wp-content/plugins/Katalogdaki tüm geçerli eklenti ana dosyaları. Dolayısıyla, eklentiniz diğer eklentilerin işlevlerine bağımlıysa, başka bir eklentinin zaten yüklendiğini varsayamazsınız. Bu durumda, kullanmanız gereken…plugins_loadedBu eylem hook’u, kodun doğru zamanda çalıştırılmasını sağlamak için kullanılır.
Tavsiye edilen okuma WordPress eklenti geliştirme rehberi: Sıfırdan başlayarak ticari düzeyde uzantılar oluşturmaya kadar.。
Hook’ları Derinlemesine Anlama: Eylem ve Filtre Mekanizmaları
WordPress eklenti geliştirmenin temel felsefesi “Kancalar” (Hooks)’dır. Kancalar, WordPress’in çekirdeğine, temalara veya diğer eklentilere ait işlem akışlarına kendi kodunuzu eklemenizi sağlar; bunu orijinal dosyaları değiştirmeden yapabilirsiniz. Kancalar esas olarak iki kategoriye ayrılır: Eylem Kancaları (Action Hooks) ve Filtre Kancaları (Filter Hooks).
Eylem kancaları, belirli bir olay meydana geldiğinde özel fonksiyonlarınızı çalıştırmanıza olanak tanır. Örneğin, bir makale yayınlandığında…publish_post), kaynakların web sayfasının üst kısmında yüklenmesi sırasında (wp_enqueue_scriptsVeya yönetim arayüzünden başlatılırken (admin_initBir eylem kancası (action hook) kullanmak istiyorsanız, şunları yapmanız gerekmektedir:add_action()Fonksiyon, geri çağırma fonksiyonunuzu (callback function) o “kancaya” (hook) monte eder.
add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
// 在WordPress初始化时执行
// 例如,注册一个自定义文章类型
} Filtre hook’ları, verileri değiştirmek için kullanılır. Size, kendisine iletilen değişkenleri durdurma ve değiştirme imkanı verir; ardından bu değişkenleri geri gönderirsiniz. Örneğin, bir makalenin içeriğini değiştirmek için bunu kullanabilirsiniz.the_contentAyrıca, alıntıların uzunluğunu değiştirebilirsiniz.excerpt_lengthVeya sorgu sonuçlarını değiştirin.the_postsFiltreleri kullanmak için bir çağrı yapmanız gerekmektedir.add_filter()İşlev.
add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
// 修改文章标题
return '前缀:' . $title;
} Özel bir kancalar (hook) oluşturun.
WordPress tarafından sağlanan yüzlerce yerleşik eklenti bağlantısının (hook) yanı sıra, gelişmiş eklenti geliştiricileri diğer geliştiricilerin kullanımı için kendi eklenti bağlantılarını da oluşturabilirler.do_action()Bir eylem kancası (action hook) oluşturmak için kullanın.apply_filters()Bir filtre hook’u oluşturmak için…
// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );
// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value ); Eklenti Özelliklerinin Oluşturulması: Güvenlik ve En İyi Uygulamalar
Eklentilerin işlevlerini yazarken, güvenlik en önemli faktördür. Kullanıcı girdilerine asla güvenmeyin. Formlar, URL parametreleri, çerezler gibi dış kaynaklardan gelen tüm verilerin doğrulanması, temizlenmesi ve escape işleminden geçirilmesi gerekir.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan Başlayarak Özelleştirilmiş İşlevler Oluşturma。
Veri Doğrulama ve Kaçınma (Data Validation and Escaping)
Girdi için kullanın.sanitize_text_field()、sanitize_email()、intval()Bu fonksiyonlar temizlik için kullanılır. HTML sayfalarına çıkarılan veriler için ise…esc_html()、esc_attr()或wp_kses_post()Kaçak betik saldırılarını (Cross-Site Scripting – XSS) önlemek için karakterlerin özel şekillerde yazılması gerekmektedir. Bu işleme “ekranlama” (escaping) denir.
$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );
// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>'; Veritabanı ile etkileşim kurmak
WordPress sunmaktadır.$wpdbKüresel nesneler doğrudan veritabanı işlemleri için kullanılır, ancak WordPress’in yerleşik fonksiyonları tercih edilmelidir.get_post()、update_option()Ve benzerleri. Eğer SQL kullanmak zorundaysanız, lütfen bunu mutlaka yapın.$wpdb->prepare()SQL enjeksiyonunu önlemek için yöntemler.
global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
$wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
); Yönetim menüsü ve sayfaları ekleyin.
Eklentiler için bir yapılandırma sayfası oluşturmak yaygın bir ihtiyaçtır. Bunu yapmak için şu yöntemleri kullanabilirsiniz:add_menu_page()或add_options_page()Bu fonksiyonlar, arka planda menü öğeleri ekler. Bu fonksiyonların…admin_menuAksiyon hook’unda çağrılır.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myplugin-slug', // 菜单别名
'myplugin_settings_page' // 用于呈现页面的回调函数
);
}
function myplugin_settings_page() {
// 输出设置页面HTML
echo '<div class="wrap"><h1>Ayarlar</h1></div>';
} Eklenti yayınlamaya hazırlanıyor: Uluslararasılaştırma ve kod organizasyonu
Eklentinin işlevleri geliştirildikten sonra, daha geniş bir kullanıcı kitlesine ulaşmak ve bakımını kolaylaştırmak için uluslararasılaştırma (internationalization) ve kod organizasyonuna (code organization) dikkat etmek gerekmektedir.
Eklentiyi uluslararası hale getirmek (plugin internationalization)
Uluslararasılaştırma (i18n), eklentinizin diğer dillere çevrilebilmesini sağlar. Bunun için WordPress’in çeviri fonksiyonlarını kullanmanız gerekir.__()、_e()、_x()Tüm kullanıcılar tarafından görülebilen string’leri bir araya getirin ve bunları eklentinin baş kısmında beyan edin.Text Domain(Örneğin)my-first-plugin)。
// 在代码中
$greeting = __( 'Hello, World!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );
// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。 Modüler kod organizasyonu
Tüm kodun ana dosyada bir araya getirilmesinden kaçının. İyi bir uygulama, farklı işlevlere sahip kodların ayrı ayrı dosyalara bölünmesidir..phpDosyalar içeride bulunmakta ve bunlar ana dosya aracılığıyla içerilmektedir. Örneğin:
- includes/admin/ Katalog, arka planda kullanılan ilgili kodları içerir.
- includes/public/ Katalog, ön uç (front-end) ile ilgili kodları içermektedir.
- includes/class-*.php Ana sınıf tanımlarının saklandığı yer.
- assets/css/ 和 assets/js/ Stil şemalarını ve betikleri burada saklar.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Özel İşlevler Oluşturmanın Temel Teknikleri。
Nesne yönelimli programlama kullanarak kodu daha iyi organize edebilir, fonksiyon adı çakışmalarını önleyebilir ve yeniden kullanılabilirliği artırabilirsiniz. Bir ana sınıf tanımlayın ve yapıcısında (constructor) gerekli tüm işlemleri (hook’ları) yerine getirin.
class My_First_Plugin {
public function __construct() {
add_action( 'init', array( $this, 'init_method' ) );
add_filter( 'the_content', array( $this, 'filter_content' ) );
}
public function init_method() {
// 初始化
}
public function filter_content( $content ) {
return $content . '<p>Eklenti içeriği ekleme</p>';
}
}
new My_First_Plugin(); Özetle.
WordPress eklenti geliştirme, özel özelliklerin WordPress ekosistemine sorunsuz bir şekilde entegre edilmesi sürecidir. Bu sürecin temeli, standartlara uygun bir eklenti başlık dosyasıyla başlar. Geliştirmenin özü, eylem kancaları (action hooks) ve filtre kancaları (filter hooks) kullanılarak WordPress’in işleyişinin olay tabanlı bir şekilde genişletilmesi veya değiştirilmesidir. Kodlama sırasında güvenliği en üst düzeye çıkarmak, verilerin sıkı bir şekilde doğrulanması, temizlenmesi ve dönüştürülmesi gerekmektedir. Eklentinin işlevleri arttıkça, iyi bir kod organizasyonu (nesne yönelimli tasarım ve modüler dosya yapıları dahil) ve uluslararasılaştırma desteği, eklentinin sürdürülebilirliğini, profesyonelliğini ve kullanıcı kapsamını artırmanın anahtar adımlarıdır. Bu en iyi uygulamalara uyarak, güçlü, güvenli ve dağıtımı kolay WordPress eklentileri oluşturabilirsiniz.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?
PHP dilinin temellerini öğrenmeniz gerekiyor; çünkü WordPress ve eklentileri PHP ile yazılmıştır. Ayrıca, ön uç görünümü ve etkileşimi yönetmek için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. En önemlisi, WordPress’in temel işleyiş sürecini ve eklenti geliştirmenin temel mekanizması olan “Hook” (Kancalar) sistemini anlamanızdır.
Eklentimdeki fonksiyon adlarının diğer eklentilerle çakışmasını nasıl önleyebilirim?
En iyi uygulama, nesne yönelimli programlama (OOP – Object-Oriented Programming) kullanmaktır; böylece işlevleriniz bir sınıf içinde kapsüllenir ve sınıf içindeki metot adları bağımsız hale gelir. Eğer prosedürsel programlama kullanılıyorsa, tüm fonksiyonlar, sınıflar ve sabitler için benzersiz bir önek eklenmelidir. Bu önek, eklentinizin kısaltması veya marka adı olabilir.myplugin_或acme_Ve tüm kod boyunca tutarlılığı sağlayın.
Eklentinin JavaScript ve CSS dosyalarını nerede yüklemeliyim?
Doğruluğu ve performansı sağlamak için, HTML şablonlarınızda asla kaynak dosyalarına doğrudan bağlantı kurmayın. Bunun yerine WordPress tarafından sağlanan “enkoleme” (enqueue) fonksiyonlarını kullanmalısınız. Ön uç kaynaklar için bu fonksiyonlar, sayfaların daha hızlı yüklenmesine yardımcı olur.wp_enqueue_script()和wp_enqueue_style()Ve bunu şu yere monte edin:wp_enqueue_scriptsAksiyon kancalarına (action hooks) bağlanır. Yalnızca arka uç yönetim arayüzünde kullanılan kaynaklar için, bu kaynaklar ilgili kancalara monte edilir.admin_enqueue_scriptsKancada.
Eklentiler, kendi ayarlarını ve verilerini nasıl saklar?
Basit ve tek değerli ayarlar için WordPress Option API’sini kullanabilirsiniz.add_option()、get_option()和update_option()İşlevler. Daha karmaşık ve yapılandırılmış veriler için (örneğin, form girişleri listesi), özel veritabanı tabloları oluşturulmalıdır. Bunlar kullanılabilir.dbDelta()Fonksiyon, eklenti etkinleştirildiğinde (…) çalışır.register_activation_hookTablo yapısını güvenli bir şekilde oluşturun veya güncelleyin.
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