核心概念与准备工作
WordPress eklenti geliştirme, WordPress’in temel özelliklerinin dışında, web sitesinin işlevlerini genişletmek ve geliştirmek için bağımsız PHP kod modülleri yazmayı ifade eder. Bunun nasıl çalıştığını anlamak, başarının ilk adımıdır. WordPress, olay tabanlı (kancalar ve filtreler) ve nesne yönelimli programlama yaklaşımlarını kullanır. Bir eklenti, esasen bir veya daha fazla PHP dosyasından oluşur ve WordPress tarafından önceden tanımlanmış arayüzler aracılığıyla çekirdek ile etkileşime girerek güvenli işlevler ekler.
Geliştirme işlemine başlamadan önce, stabil bir yerel veya test sunucu ortamına ihtiyacınız vardır. XAMPP, Local by Flywheel veya DevKinsta gibi yerel sunucu yazılımlarını kurmanız şiddetle tavsiye edilir. Aynı zamanda, bir kod editörüne (örneğin VS Code veya PhpStorm) sahip olduğunuzdan ve WordPress’in hata ayıklama (debugging) modunun açık olduğundan emin olun.wp-config.phpDosyada bazı sabitler (constantlar) ayarlanmıştır:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false ); EtkinleştirWP_DEBUG_LOGDaha sonra, hata bilgileri kaydedilecektir./wp-content/debug.logDosyada bulunan bu bilgiler, sorunların tespit edilmesi açısından son derece önemlidir.
Tavsiye edilen okuma WordPress Tema Geliştirme İleri Seviye Rehberi: Başlangıçtan Uzmanlığa Kadar Pratik Bir Eğitim Kitabı。
İlk eklentinizi oluşturun.
Bir eklenti oluşturmak için öncelikle şu adımları izleyin:/wp-content/plugins/Katalog altında özel bir klasör oluşturun, örneğin…my-first-pluginBu klasörde, genellikle klasör adıyla aynı olan bir ana PHP dosyası oluşturmanız gerekmektedir.my-first-plugin.php。
Plugin başlık bilgilerini yazın.
Her WordPress eklentisinin standart bir eklenti başlık yorumuna ihtiyacı vardır; bu, WordPress’in eklentiyi tanımasını sağlayan bir “kimlik kartı”dır. Bu yorum, ana dosyanın başında ve belirli bir formatta yer almalıdır.Plugin NameAyrıca açıklamalar, sürümler, yazarlar gibi diğer bilgiler de çok önemlidir.
<?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
* Domain Path: /languages
*/ Bu yorum, eklentinizin WordPress arka planındaki “Eklentiler” listesinde görünmesini ve yukarıda belirtilen bilgilerin gösterilmesini sağlayacaktır.Text Domain和Domain PathBu, eklentinin uluslararasılaştırılması (çevirisi) için hazırlanmıştır.
Temel bir işlevi gerçekleştirin.
Şimdi, eklentiye basit bir özellik ekleyelim: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyelim. Bunun için WordPress’in “filtreleri” (Filters) kullanılacaktır. Filtreler, verilerin veritabanına kaydedilmesinden veya tarayıcıya gönderilmesinden önce değiştirilmesine olanak tanır.
Kullanacağız.the_contentBu filtre için, ana eklenti dosyanızda, başlık yorumlarının hemen ardından aşağıdaki kodu ekleyin:
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun。
// 在文章内容末尾添加自定义文本
function myfp_add_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = ‘<p><em>Bu makaleyi okuduğunuz için teşekkür ederiz! “My First Plugin” tarafından desteklenmektedir.</em></p>’;
$content .= $custom_text;
}
return $content;
}
add_filter( ‘the_content’, ‘myfp_add_text_to_content’ ); Dosyayı kaydettikten sonra, WordPress arayüzüne girip bu eklentiyi etkinleştirin. Tek bir makaleyi incelediğinizde, eklenen metni içeriğin sonunda göreceksiniz.myfp_add_text_to_contentBu, bizim tanımladığımız bir fonksiyondur ve makale içeriğini alır.$contentBelirtilen koşullar sağlandığında (yani tek bir makale olduğunda ve ana döngü içindeyken), bir metin parçası ekleyin ve ardından değiştirilmiş içeriği geri döndürün.add_filter()Bu fonksiyon, özel olarak oluşturulan bu fonksiyonu belirli bir yere (örneğin, bir sisteme veya bir nesneye) bağlar (mounts).the_contentFiltre üzerinde.
Kancaları ve filtreleri kullanarak etkileşim oluşturma
WordPress eklentilerinin en güçlü yanı, zengin kancalar (hooks) sistemidir. Bu kancalar Action Hooks (Eylem Kancaları) ve Filter Hooks (Filtre Kancaları) olarak ikiye ayrılır. Action Hooks, belirli anlarda kodu “çalıştırmanıza” olanak tanır; Filter Hooks ise verileri “değiştirmenize” imkan verir.
Eylem kancalarını kullanarak yönetim menüsü ekleyin.
Diyelim ki eklentiye bir ayar sayfası eklemek istiyoruz ve bunun için eylem kancaları (action hooks) kullanmamız gerekiyor.admin_menuWordPress’un arka plan yönetim menüsü oluşturulurken tetiklenir.
// 添加插件设置页面到后台菜单
function myfp_add_admin_menu() {
add_menu_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘myfp-settings’, // 菜单slug
‘myfp_settings_page’, // 用于显示页面内容的回调函数
‘dashicons-admin-generic’, // 图标(可选)
80 // 菜单位置
);
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );
// 定义设置页面的显示内容
function myfp_settings_page() {
?>
<div class="“wrap”">
<h1><?php esc_html_e( ‘我的插件设置’, ‘my-first-plugin’ ); ?></h1>
<p><?php esc_html_e( ‘这是你的第一个插件设置页面。’, ‘my-first-plugin’ ); ?></p>
<form method="“post”" action="/tr/“options.php”/" data-trp-original-action="“options.php”">
<?php
// 后续可以在这里添加设置字段
settings_fields( ‘myfp_settings_group’ );
do_settings_sections( ‘myfp-settings’ );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Eklentiyi etkinleştirdikten sonra, arka planda sol tarafta “Benim Eklentilerim” adında yeni bir menü öğesi göreceksiniz. Buna tıklayarak özelleştirilmiş ayarlar sayfasına gidebilirsiniz.add_menu_pageFonksiyonlar çok önemlidir; bir üst düzey menü sayfası kaydetti.
Kısa kodlar oluşturarak sayfa işlevlerini geliştirin.
Kısa kodlar (Shortcodes), kullanıcıların makalelerde veya sayfalarda eklentilerin özelliklerini kolayca kullanmalarını sağlayan güçlü araçlardır. Bunları kullanabilirsiniz.add_shortcode()Bir kısa kodu kaydetmek için bir fonksiyon kullanılır.
// 创建一个显示当前时间的短代码
function myfp_current_time_shortcode( $atts ) {
// 使用 shortcode_atts 设置默认属性并合并用户输入
$attributes = shortcode_atts( array(
‘format’ => ‘Y-m-d H:i:s’,
), $atts );
// 根据属性格式化当前时间
$current_time = date( $attributes[‘format’] );
// 返回要显示的内容,确保进行转义
return ‘<p>Mevcut zaman: ’. esc_html($current_time).‘</p>’add_shortcode( ‘show_time’, ‘myfp_current_time_shortcode’ ); Şimdi, kullanıcılar makale düzenleyicisine içerik girebiliyorlar.[show_time format=“F j, Y”]Biçimlendirilmiş güncel tarihi göstermek için kullanılır. Kısa kod işleyicisi.myfp_current_time_shortcodeAlınan özellikler dizisini kullanarak, sayfaya eklenmesi gereken HTML içeriğini döndürün.
Tavsiye edilen okuma WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Kişiselleştirilmiş Web Siteleri Oluşturmanın Kapsamlı Rehberi。
Eklenti güvenliği ve en iyi uygulamalar.
Eklentiler geliştirirken, güvenlik en önemli faktördür. Güvenli olmayan kodlar, web sitesinin saldırıya uğramasına neden olabilir. Aşağıdaki en iyi uygulamalara uymak çok önemlidir.
Veri Doğrulama, Kaçınma ve Temizleme
Kullanıcılardan veya dış kaynaklardan gelen tüm veriler (örneğin…)$_GET, $_POST, $_COOKIEHepsi güvenilmezdir. Bunları veritabanı sorgularında kullanmadan veya tarayıcıya çıkarmadan önce işlemek zorundasınız.
- Tarayıcıya gönderilirken, verilerin saf metin formatında görüntülendiğinden emin olmak için escape (kaçış) fonksiyonları kullanılmalıdır; bu, XSS (Cross-Site Scripting) saldırılarını önlemek için gereklidir. WordPress, farklı bağlamlar için çeşitli escape fonksiyonları sunmaktadır.
esc_html()(Bir HTML öğesinin içinde kullanılır)esc_attr()(HTML özniteliklerinde kullanılır)esc_url()(Kullanımı: URL’lerde) vewp_kses_post()(Güvenli HTML etiketlerinin geçmesine izin verilir.) - Veritabanı ile etkileşimde bulunurken, hazırlık ifadeleri (prepared statements) kullanın: Değişkenleri asla doğrudan SQL sorgularına eklemeyin. Bunun yerine, hazırlık ifadeleri kullanarak sorguları oluşturmalısınız.
$wpdb->prepare()Yöntemler veya daha gelişmiş API’ler gibi…WP_QueryÖrneğin:
global $wpdb;
$user_id = 123;
$safe_query = $wpdb->prepare( “SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d”, $user_id );
$results = $wpdb->get_results( $safe_query ); Burada%dBu bir yer tutucudur.$wpdb->prepare()Güvenli bir şekilde işlenecektir.$user_idDeğişkenler.
Seçenek ayarlarını ve güvenliği gerçekleştirme
Eklentilere yapılandırılabilir ayar seçenekleri eklerken, WordPress Settings API’sini kullanmalısınız. Bu API, Nonce doğrulamasını, yetki kontrolünü ve ayarların kaydedilmesini otomatik olarak gerçekleştirir; bu da güvenlik sürecini büyük ölçüde basitleştirir.
Öncelikle, kullanın.register_setting()Bir ayar seçenek grubu oluşturun ve ardından bunu kullanın.add_settings_section()和add_settings_field()Bir alan ekleyin. Daha önce oluşturulan yönetim menüsü geri çağırma fonksiyonuna.myfp_settings_pageİçeriden çağrılansettings_fields( ‘myfp_settings_group’ )和do_settings_sections( ‘myfp-settings’ )Gerekli tüm güvenlik alanları ve kayıt ayarları bölümü görüntülenecektir. Bu, manuel olarak işlem yapmaktan daha kolaydır.$_POSTVeriler çok daha güvenli ve güvenilir olmalı.
Özetle.
Basit bir eklenti başlık yorumu yazmaktan başlayarak, eylem (action) ve filtre (filter) hook’larını kullanarak WordPress çekirdeğiyle etkileşime geçmeye, kısa kodlar (shortcodes) oluşturmaya ve yönetim sayfalarını yönetmeye kadar eklenti geliştirmenin temel adımlarını attınız. Güvenliğin her zaman öncelikli olduğunu unutmayın; verileri dikkatli bir şekilde doğrulayın, escape edin ve temizleyin. Ayrıca WordPress’in sunduğu Settings API gibi güvenlik araçlarını aktif olarak kullanın. Eklenti geliştirme, sürekli öğrenme gerektiren bir süreçtir. Çekirdek kodları inceleyerek, resmi dokümantasyonları okuyarak ve topluluğa katılarak, işlevsel, güvenli ve popüler WordPress eklentileri geliştirebilirsiniz.
Sıkça Sorulan Sorular.
Eklenti geliştirmek için PHP’yi mükemmel derecede bilmek zorunda mıyım?
Evet, sağlam bir PHP temeli gereklidir; çünkü WordPress kendisi PHP ile yazılmıştır. PHP dilinin sözdizimini, fonksiyonlarını, sınıflarını, ad alanlarını (namespace’leri) ve diğer kavramlarını anlamanız gerekir. Ayrıca, HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız da ön uç (frontend) özelliklerinin geliştirilmesinde büyük fayda sağlayacaktır.
Eklenti kodumu nasıl hata ayıklarım?
En etkili yöntem, daha önce bahsedilen özelliği etkinleştirmektir.WP_DEBUG、WP_DEBUG_LOG和WP_DEBUG_DISPLAYAyrıca, şunlar da kullanılabilir:error_log()Bu fonksiyon, özelleştirilmiş hata ayıklama bilgilerini günlüğe yazar veya Xdebug gibi profesyonel hata ayıklama araçlarını kod düzenleyicinizle birlikte kullanarak satır satır hata ayıklaması yapmanıza olanak tanır.
Eklentime dil çevirileri nasıl eklemeliyim?
Öncelikle, eklentinin baş kısmındaki yorumlarda doğru ayarlamaları yapın.Text Domain(Örneğin ‘my-first-plugin’) veDomain Path(Örneğin ‘/languages’). Daha sonra, kodun içinde çevrilmesi gereken tüm metinlerin bulunduğu yerlerde, benzer bir yöntem kullanın.__( ‘Hello World’, ‘my-first-plugin’ )或esc_html_e( ‘Settings’, ‘my-first-plugin’ )Çeviri fonksiyonu… Son olarak, Poedit gibi araçlar kullanılarak çeviri işlemi tamamlanır..potŞablon dosyası ve bunun üzerine farklı diller için içeriklerin oluşturulması..po和.moÇeviri dosyasını belirtilen yere koyun./languagesKatalogun içinde.
Geliştirilen eklentiyi WordPress resmi kataloğuna nasıl yayınlarım?
WordPress’in resmi eklenti kataloğuna eklenti göndermeniz gerekiyor. Göndermeden önce, kodunuzun WordPress kodlama standartlarına uygun olduğundan, ayrıntılı dokümantasyon ve açıklamalar içerdiğinden ve herhangi bir üçüncü taraf ticari kütüphanenin telif hakkı sorununa sahip olmadığından emin olun. Gönderimden sonra bir inceleme süreci başlar ve inceleme onaylandığında eklentiniz tüm dünyadaki kullanıcılar tarafından aranabilir ve yüklenebilir hale gelir.
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 Temel Başlangıç Kılavuzu: Sıfırdan İlk Profesyonel Web Sitenizi Oluşturun
- Kurumsal Web Sitesi Kurma için Tek Duraklı Çözüm: Sıfırdan Hayata Geçişe Kadar Tam Uygulama Kılavuzu
- Önsöz: Neden WordPress ile geliştirme yapmayı seçtik?
- Web sitesi oluşturma kılavuzu: Profesyonel bir web sitesini sıfırdan oluşturmanın eksiksiz süreci.
- Mükemmel bir WordPress temasını nasıl seçer ve özelleştirirsiniz?