WordPress eklenti geliştirme, WordPress’in temel özelliklerini genişletmenin temel yoludur. Bu sayede geliştiriciler, WordPress’in çekirdek kodunu değiştirmeden web sitelerine ihtiyaç duydukları herhangi bir özelliği ekleyebilirler. İster basit kısa kodlar olsun, ister karmaşık e-ticaret sistemleri olsun, tüm bunlar eklentiler aracılığıyla gerçekleştirilebilir. Eklenti geliştirme becerilerine hakim olmak, WordPress’i derinlemesine özelleştirebilmeniz ve belirli iş ihtiyaçlarınızı karşılayabilmeniz anlamına gelir; hatta yaratıcılığınızı yayınlanabilir ürünlere dönüştürebilirsiniz.
WordPress Eklenti Geliştirme Temelleri ve Ortam Kurulumu
Kod yazmaya başlamadan önce, uygun bir geliştirme ortamı oluşturmanız ve eklentinin temel yapısını anlamanız gerekmektedir.
Geliştirme Ortamı Hazırlığı
Etkili bir yerel geliştirme ortamı şarttır. Local by Flywheel, XAMPP veya MAMP gibi araçları kullanarak PHP, MySQL ve Apache/Nginx içeren entegre bir ortamı hızlı bir şekilde kurmanız önerilir. Kullandığınız PHP sürümünün en yeni WordPress sürümü gereksinimleriyle uyumlu olduğundan emin olun. Ayrıca, VS Code,PhpStorm gibi kullanışlı bir kod editörü ve hata ayıklamak için gerekli olan tarayıcı geliştirici araçları da mutlaka bulunmalıdır.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun。
Eklentinin temel yapısı ve ana dosya
Her eklentinin, eklentinin giriş noktası olan bir ana dosyası olmalıdır. Bu ana dosya genellikle eklentinin adıyla adlandırılır, örneğin… my-awesome-plugin.phpDosya başlığında belirli eklenti bilgileri içeren notlar bulunmalıdır; bu, WordPress’in eklentileri tanımasının anahtarı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 yorum, eklentinin WordPress arka plan yönetim arayüzünde görüntülenen adını, açıklamasını, sürümünü ve diğer bilgilerini tanımlamaktadır.Text Domain 和 Domain Path Uluslararası çeviri için kullanılır.
Eklenti katalogu organizasyonu
Düzenli bir eklenti dizini, uzun vadeli bakım için yardımcı olur. Tipik bir dizin yapısı şunları içerebilir:
Ana dosya. my-awesome-plugin.php (Pluginin kök dizininde bulunur.)
- includes/ İçerik: Temel işlev sınıflarını veya fonksiyon dosyalarını depolamak için.
- admin/ İçerik: Arka uç yönetim arayüzüyle ilgili kodların depolanması.
- public/ İçerik: Öncü görüntüleme ile ilgili kodları depolamak için.
- assets/ İçerik: CSS stil sayfaları, JavaScript komut dosyaları ve resimleri depolamak için kullanılır.
- languages/ İçerik: Uluslararasılaştırılmış çeviri dosyalarının (.po/.mo) depolanması.
Çekirdek Geliştirme Kavramları ve Hooks Mekanizması
WordPress eklenti geliştirmenin temel felsefesi “Kancalar (Hooks) ve Geri Çağrılar (Callbacks)”dır. Kancalar sayesinde, kodunuz belirli zaman noktalarında WordPress’in temel işleyiş sürecine dahil edilebilir.
Action Hook’lar ve Filter Hook’lar
Kancalar esas olarak iki türe ayrılır: Eylem (Action) ve Filtre (Filter).
Eylem kancaları, belirli olaylar gerçekleştiğinde özel kodlarınızı çalıştırmanıza olanak tanır; örneğin, bir makale yayınlandıktan sonra veya yönetim sayfası yüklendiğinde. add_action() Bu fonksiyon, bir şeyi monte etmek için kullanılır.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun。
function myplugin_send_notification( $post_id ) {
// 当文章发布时,执行发送通知的代码
wp_mail( '[email protected]', '新文章发布', "文章ID: $post_id 已发布。" );
}
add_action( 'publish_post', 'myplugin_send_notification' ); Filtre hook’ları, verileri değiştirmenize olanak tanır. Veriler kullanılmadan önce (örneğin veritabanına kaydedilmeden veya tarayıcıya gönderilmeden önce), üzerlerinde değişiklikler yapabilirsiniz. add_filter() İşlev.
function myplugin_modify_title( $title ) {
// 在所有文章标题前添加文本
return '【精选】' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' ); Özel bir kancalar (hook) oluşturun.
Mükemmel eklentiler, yalnızca çekirdek düğümleri (core hooks) kullanmakla kalmamalı, aynı zamanda diğer geliştiricilere özel düğümler (custom hooks) de sunmalıdır. do_action() Bir eylem kancası oluşturun ve bunu kullanın. apply_filters() Bir filtre hook’u oluşturun.
// 在插件代码的某个位置定义一个动作钩子
do_action( 'myplugin_after_processing', $data );
// 定义一个过滤器钩子,允许其他代码修改 $output
$output = apply_filters( 'myplugin_output_filter', $default_output, $param1, $param2 ); Eklenti özelliklerinin oluşturulması: Seçenekler, kısa kodlar ve veritabanı ile etkileşim
Bir eklentinin tamamlanmış hali genellikle yapılandırma seçenekleri, ön uç görünümü ve veri depolama özellikleri sunmalıdır.
Yönetim seçenekleri sayfası oluşturun.
WordPress’in Settings API’sini kullanarak güvenli ve standartlaştırılmış yönetim sayfaları oluşturabilirsiniz. Bu işlem, kayıt ayarlarının oluşturulmasını, ayar alanlarının ve bölümlerinin eklenebilmesini içerir.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myplugin-settings', // 菜单slug
'myplugin_settings_page' // 回调函数,用于输出页面HTML
);
}
// 注册设置、字段和章节的代码...
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>Eklenti ayarlarım.</h1>
<form action="/tr/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'myplugin_settings_group' );
do_settings_sections( 'myplugin-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Kısa kod özelliğini gerçekleştirme
Kısa kodlar, kullanıcıların makalelerine veya sayfalara eklentileri kolayca entegre etmelerini sağlar. add_shortcode() Fonksiyon kaydediliyor.
add_shortcode( 'myplugin_show_message', 'myplugin_shortcode_callback' );
function myplugin_shortcode_callback( $atts ) {
// 解析短代码属性
$attributes = shortcode_atts( array(
'text' => '默认消息',
), $atts );
// 返回要显示的内容
return '<div class="myplugin-message">'`. esc_html($attributes['text'])`.'</div>';
} Kullanıcılar editörde bir şeyler yazabilirler. [myplugin_show_message text="你好,世界!"] Onu kullanmak için.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Gerçek Uygulamalara Kadar Uzmanlaşma Yolculuğu。
Veritabanı ile etkileşim kurmak
Veri depolamaya ihtiyaç duyan eklentiler için, WordPress tarafından sağlanan veritabanı işleme sınıflarının kullanılması önerilir. $wpdbÖzel bir tablo oluşturulurken, bunun eklentinin etkinleştirme işlemleri sırasında gerçekleştirilmesi gerekmektedir.
register_activation_hook( __FILE__, 'myplugin_create_table' );
function myplugin_create_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data'; // 加上前缀
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
value text,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
} Veri sorgularken, aşağıdakiler kullanılmalıdır: $wpdb->prepare() SQL enjeksiyon saldırılarını önlemek için…
Eklenti Güvenliği, Performansı ve Yayın Hazırlığı
Geliştirilen eklentiler, kullanıcılara sunulmadan önce güvenlik açısından güçlendirilmeli, performansı optimize edilmeli ve standartlara uygun hale getirilmelidir.
Güvenlik İyi Uygulamaları
Güvenlik en önemli önceliktir. Kullanıcı girdilerinden kaynaklanan tüm durumlar için… $_GET, $_POST, $_COOKIEElde edilen verilerin hepsinin doğrulanması, temizlenmesi ve uygun şekilde işlenmesi gerekmektedir.
Doğrulama: Verilerin beklenen formatla uyumlu olup olmadığını kontrol edin (örneğin e-posta adresi, sayısal değerler).
Temizleme (Sanitizasyon): Verileri temizleyin ve güvenli olmayan karakterleri kaldırın. Aşağıdaki gibi fonksiyonları kullanın. sanitize_text_field(), sanitize_email()。
Kaçma (Escaping): Verileri HTML, JavaScript veya URL'ye çıktı olarak vermeden önce onları kaçırın. Örneğin, encodeURIComponent veya escape fonksiyonlarını kullanabilirsiniz. esc_html(), esc_js(), esc_url()。
Aynı zamanda, WordPress’in yerleşik nonce (rastgele sayı) mekanizmasını da kullanın.wp_nonceBu mekanizma, isteklerin geçerliliğini doğrulamak ve çapraz sitelik istek sahteciliği (CSRF) saldırılarını önlemek için kullanılır.
Performans Optimizasyonu Teknikleri
Eklentilerde gereksiz veritabanı sorguları veya yoğun işlemler yapmaktan kaçının. Tekrarlanan sorgu sonuçları için, WordPress’in “Transient” (Geçici Veriler) API’sini kullanarak önbellekleme yapmayı düşünebilirsiniz.
// 尝试从缓存中获取数据
$data = get_transient( 'myplugin_expensive_data' );
if ( false === $data ) {
// 缓存中没有,执行耗时操作获取数据
$data = myplugin_expensive_query_function();
// 将数据缓存12小时
set_transient( 'myplugin_expensive_data', $data, 12 * HOUR_IN_SECONDS );
} Eklentinin devre dışı bırakılması veya kaldırılması sırasında, ilgili işlemlerin doğru bir şekilde gerçekleştirildiğinden emin olun. register_deactivation_hook 和 register_uninstall_hook Oluşturduğunuz geçici dosyaları, planlanmış görevleri (Cron Job’lar) ve özel veritabanı tablolarını (isteğe bağlı) temizleyin.
Uluslararasılaştırma ve Nihai Yayın
Kullanın. (), _e() Çok dili desteklemek için, tüm kullanıcı tarafından görülebilen metinleri içeren fonksiyonları paketleyin. Örneğin:echo esc_html( ‘Hello World’, ‘my-awesome-plugin’ );Ardından Poedit gibi bir araç kullanarak bunu oluşturun. .pot Şablon dosyaları ve çeviri dosyaları.
Yayınlamadan önce, kodunuzun WordPress kodlama standartlarına uygun olduğundan emin olun ve açıklayıcı bir dokümantasyon hazırlayın. readme.txt Son olarak, eklentiyi bir ZIP dosyası olarak sıkıştırın ve ardından WordPress’in resmi eklenti dizinine gönderin veya diğer kanallar aracılığıyla dağıtın.
Özetle.
WordPress eklenti geliştirme, fikirleri gerçeğe dönüştürme sürecidir. Temel hook (bağlantı noktası) mekanizmalarını anlamaktan, yönetim arayüzleri ve kısa kodlar oluşturmaya, ve son derece önemli olan güvenlik ile performans optimizasyonlarına kadar her adımda dikkatli bir yaklaşım gereklidir. En iyi uygulamalara uyarak, yapılandırılmış, güvenli ve güvenilir kodlar yazmak sadece güçlü özellikler oluşturmakla kalmaz, aynı zamanda eklentinin sürdürülebilirliğini ve uyumluluğunu da sağlar. WordPress’in çekirdek API’sini ve topluluk standartlarını sürekli öğrenmek, mükemmel bir eklenti geliştiricisi olmanın anahtarıdır.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?
WordPress ve eklentileri esas olarak PHP ile yazıldığı için PHP programlama diline dair temel bilgilere sahip olmanız gerekmektedir. Ayrıca, ön uç görünümünü ve etkileşimini yönetmek için HTML, CSS ve JavaScript konularında temel bir bilgi birikimine sahip olmanız faydalı olacaktır. MySQL veritabanının temel kavramlarına (ekleme, silme, değiştirme, sorgulama gibi) aşina olmanız da yardımcı olacaktır; ancak WordPress’in… $wpdb Sınıflar, çoğu işlemi basitleştirir.
WordPress eklentimizi nasıl hata ayıklarız?
Öncelikle, 'den emin olun. wp-config.php Dosyada etkinleştirildi. WP_DEBUG 和 WP_DEBUG_LOG Bu bir sabittir ve hata mesajlarını kaydedecektir. /wp-content/debug.log Dosyada. İkincisi, kullanılabilir. error_log() Fonksiyon, özelleştirilmiş hata ayıklama bilgileri çıkarır. Ayrıca, AJAX isteklerini ve JavaScript hatalarını ayıklamak için tarayıcı geliştirici araçlarının “Ağ” (Network) ve “Konsol” (Console) panelleri kullanılır. Profesyonel IDE’ler (örneğin PhpStorm), güçlü kesme noktası ayıklama özellikleri de sunar.
Eklentim, özel bir veritabanı tablosu oluşturmalı mı?
Bu, ihtiyaca bağlıdır. Eğer verileriniz oldukça özelleştirilmiş bir yapıya sahipse ve WordPress’in yerleşik makale türleri (Custom Post Type) veya Seçenekler API’si (Options API) aracılığıyla etkili bir şekilde saklanamıyorsa, özel tablolar oluşturmak mantıklıdır. Örneğin, karmaşık günlük kayıtlarını veya ilişkisel verileri saklamak için. Ancak, veriler doğal olarak “makaleler” olarak (özelleştirilmiş meta verilerle birlikte) temsil edilebiliyorsa, özel makale türlerini kullanmak genellikle daha iyi bir seçenektir; çünkü bu, WordPress ekosistemiyle (sorgular, izin yönetimi gibi özelliklerle) otomatik olarak uyum sağlar.
Eklentimi daha fazla WordPress sürümüyle uyumlu hale getirmek için ne yapabilirim?
Çok yeni veya kullanımdan kaldırılmış fonksiyonlardan kaçının. Geliştirme sırasında, WordPress’in resmi Codex’ine veya Developer Handbook’ına bakın; fonksiyonların hangi sürümlerde eklenip hangi sürümlerde kullanımdan kaldırıldığına dikkat edin. Kodunuzda koşullu ifadeler kullanarak bu durumları kontrol edebilirsiniz. function_exists() Bir geri dönüş planı sunun. Örneğin:if ( function_exists( ‘wp_is_block_theme’ ) ) { ... }Aynı zamanda, eklentinin ana dosyasının baş kısmındaki yorumlarda, testlerden geçen WordPress sürüm aralığını açıkça belirtin.
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 Özel Geliştirme İçin Mutlaka Okunması Gereken Kılavuz: Tema Oluşturmadan Eklenti Yazımına Kadar Tam Bir Uygulama Rehberi
- WordPress teması nedir? Başlangıçtan ileri seviyeye kadar kapsamlı bir rehber
- Web sitenizin performansını ve güvenliğini artırmak için mutlaka yüklemeniz gereken 10 WordPress eklentisi:
- 2026'da web sitesi performansını ve güvenliğini artırmak için kurulması gereken en iyi 10 WordPress eklentisi önerisi.
- WooCommerce’u Derinlemesine Analiz Etmek: Sıfırdan Başlayarak Güçlü Bir WordPress E-Ticaret Sitesi Oluşturmak