Eklenti Geliştirme Öncesi Hazırlık İşlemleri
Kod yazmaya başlamadan önce, uygun bir geliştirme ortamı oluşturmanız ve WordPress eklentilerinin temel yapısını anlamanız gerekmektedir. Bu, sunucu ortamının, metin editörünün veya entegre geliştirme ortamının seçimi ile eklenti dosyalarının düzenlenmesi konusunda net bir anlayışı içerir.
Geliştirme ortamı kurmak
Verimli bir yerel geliştirme ortamı çok önemlidir. PHP, MySQL ve Apache/Nginx içeren bir yerel sunucu hızlı bir şekilde kurmak için XAMPP, MAMP veya Local by Flywheel gibi araçların kullanılması önerilir. Bu araçlar çevrimiçi ortamı simüle eder ve üretim sitesini etkilemeden geliştirme ve hata ayıklama işlemlerini yapmanıza olanak tanır. Aynı zamanda, Visual Studio Code veya PhpStorm gibi güçlü bir kod editörü seçin; bu editörler PHP, HTML, JavaScript ve CSS için mükemmel sözdizimi vurgulama, kod önerileri ve hata ayıklama özellikleri sunar.
Eklentinin temel yapısını anlamak.
WordPress eklentileri esasen, WordPress'in içinde bulunan bir veya daha fazla programdır. /wp-content/plugins/ Katalogdaki PHP dosyaları. Her eklentinin en az bir ana dosyası olmalıdır ve bu dosyanın adı genellikle benzersizdir, örneğin… my-first-plugin.phpBu ana dosyanın baş kısmında, “Eklenti Başlık Bilgileri” (Plugin Header Information) adı verilen özel bir yorum bulunmaktadır. WordPress, bu bilgileri okuyarak eklentinizi arka plan yönetim arayüzünde tanır ve gösterir. İyi bir eklenti yapısı, farklı işlevlere sahip kodların farklı alt klasörlere ayrılmasını sağlamalıdır. /includes/ Çekirdek sınıf dosyalarını saklamak için kullanılır./js/ 和 /css/ Ön uç kaynaklarını (front-end resources) saklamak için kullanılır./languages/ Uluslararasılaştırılmış dosyalar için kullanılır.
Tavsiye edilen okuma WordPress eklenti geliştirme eksiksiz rehberi: sıfırdan yayınlanmaya kadar.。
İlk eklenti dosyanızı oluşturun.
Şimdi, ilk eklentinin temel dosyasını oluşturmaya başlayalım. Eklentinin başlık bilgilerini yazarak başlayacağız ve eklentinin düzgün çalışıp çalışmadığını doğrulamak için basit bir işlev ekleyeceğiz.
Plugin başlık bilgilerini yazın.
Eklentinin ana dosyasının başında standart bir başlık yorumu bulunmalıdır. Bu yorum bloğu, WordPress’e eklentinin adı, açıklaması, sürümü, yazarı gibi meta verileri sağlar. İşte en temel örnek:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个用于学习的简单 WordPress 插件,它将在文章底部添加一段自定义文本。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Bu kod, eklentinin ana PHP dosyasının en üst kısmına yerleştirilmelidir. Bu dosyayı şu adrese kaydedin: /wp-content/plugins/my-first-plugin/my-first-plugin.php Daha sonra, WordPress yönetim paneline girdiğinizde “Eklentiler” sayfasını açın. Orada “İlk Eklentim” adında yeni bir eklentinin göründüğünü göreceksiniz ve bunu etkinleştirebilirsiniz. Şu an için bu eklentinin herhangi bir özelliği yoktur.
İlk basit fonksiyonun uygulanması
Eklenti etkinleştirildikten sonra, klasik bir özellik gerçekleştireceğiz: Her makalenin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyeceğiz. Bunun için şu araçları kullanacağız: the_content Filtreler: Ana dosyanızı değiştirin ve başlık bilgilerinin hemen altına aşağıdaki kodu ekleyin:
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 文章原始内容。
* @return string 修改后的内容。
*/
function mfp_add_footer_text( $content ) {
// 仅在主查询的单篇文章页面显示
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Okuduğunuz için teşekkür ederiz! Bu makaleyi [İlk Eklentim] adlı projemiz tarafından sizlerle paylaşıyoruz.</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将自定义函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'mfp_add_footer_text' ); Dosyayı kaydettikten sonra, arka planı yenilemeye gerek kalmadan web sitesindeki herhangi bir makaleye doğrudan erişin; makalenin sonunda eklediğimiz metni göreceksiniz. Bu örnek, WordPress eklenti geliştirmenin temel modellerinden birini göstermektedir: WordPress’in temel işlemlerine müdahale etmek için “kancalar” (Hooks) kullanılması.add_filter Bu, filtreleri bağlamak için kullanılan bir fonksiyondur. the_content İçeriği değiştirmek için kullanılabilecek birçok filtreden sadece biridir.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Profesyonel Eklentiler Oluşturma。
Eklentinin temel işlevlerinin geliştirilmesi
Temel bilgilere sahip olduktan sonra, daha güçlü özellikleri keşfedebiliriz; örneğin yönetim sayfaları oluşturmak ve kodu sınıflar içinde düzenlemek gibi. Bu, daha karmaşık ve daha kolay bakımı yapılan eklentiler oluşturmamıza yardımcı olur.
Bir eklenti yönetim menüsü ve ayar sayfası oluşturun.
Birçok eklenti, kullanıcılara yapılandırma seçenekleri sunmayı gerektirir. Bu genellikle WordPress arayüzüne bir menü sayfası ekleyerek sağlanır. Aşağıda, üst düzey bir menü sayfası eklemenin bir örneği bulunmaktadır:
/**
* 在后台管理菜单中添加一个顶级菜单项
*/
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限要求
'mfp-settings-page', // 菜单 slug
'mfp_render_settings_page', // 用于渲染页面的回调函数
'dashicons-admin-generic', // 图标(可选)
80 // 菜单位置(可选)
);
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );
/**
* 渲染设置页面的回调函数
*/
function mfp_render_settings_page() {
?>
<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
// 输出安全隐藏字段
settings_fields( 'mfp_settings_group' );
// 输出设置区块
do_settings_sections( 'mfp-settings-page' );
// 输出保存按钮
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Bu kod şu amaçla kullanılır: add_menu_page Fonksiyona yeni bir menü öğesi eklendi ve bu öğe için belirli bir ayar yapıldı. mfp_render_settings_page Bir fonksiyon, sayfa HTML’sini oluşturmak için kullanılır. Sayfaya kaydedilebilir form alanları eklemek için ise bununla birlikte başka araçların da kullanılması gerekir. register_setting, add_settings_section 和 add_settings_field Ayar öğelerini kaydetmek ve tanımlamak için `wait` gibi fonksiyonlar kullanılır.
Kodu nesne yönelimli programlama ile organize etmek
Biraz daha karmaşık özelliklere sahip eklentiler için, nesne yönelimli yaklaşımı kullanarak verileri ve işlevleri sınıflar içinde kapsayabilirsiniz. Bu sayede kod yapısı daha anlaşılır hale gelir ve isim çakışmaları azalır. İşte basit bir sınıf yapısı örneği:
class MyFirstPlugin {
/**
* 构造方法,用于初始化钩子
*/
public function __construct() {
add_action( 'init', array( $this, 'init' ) );
add_filter( 'the_content', array( $this, 'modify_content' ) );
}
/**
* ‘init’ 钩子的回调函数
*/
public function init() {
// 插件初始化代码,例如注册短代码、自定义文章类型等
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
/**
* 修改文章内容的回调函数
*/
public function modify_content( $content ) {
// 类内部实现功能逻辑
if ( is_single() ) {
$content .= '<p>Bu, sınıf metodu tarafından eklenen içeriktir.</p>';
}
return $content;
}
}
// 实例化插件类
new MyFirstPlugin(); İşlevleri bir araya getirerek (kapsüllenerek)… MyFirstPlugin Sınıf içinde, ilgili tüm özellikler ve metotlar aynı etki alanı (scope) içinde toplanmıştır. array( $this, ‘method_name’ ) Bu dilin sözdizimi, sınıf metotlarını WordPress’in işlevlerine (hook’lara) bağlamayı sağlar. Bu yaklaşım, orta ve büyük ölçekli eklentiler geliştirirken önerilen bir yöntemdir.
Eklenti Yayını ve Bakımı
Geliştirme işlemi tamamlandıktan sonra, eklentinin güvenli ve verimli olduğundan emin olmanız ve diğer kullanıcılara dağıtmaya hazır hale getirmeniz gerekmektedir. Bu süreç, güvenli kodlama, performans optimizasyonu ve nihai yayın hazırlıklarını içerir.
Tavsiye edilen okuma Başlangıçtan ileri düzeye: WordPress eklenti geliştirme eksiksiz rehberi ve uygulamalı eğitim.。
Güvenlik ve Veri Doğrulama
Eklenti güvenliği son derece önemlidir. Kullanıcı tarafından girilen verilere veya doğrudan veritabanından alınan verilere asla güvenmeyin. Herhangi bir veriyle işlem yapmadan önce, verilerin doğrulanması, temizlenmesi ve uygun şekilde işlenmesi (örneğin: escape işlemleri yapılması) gerekmektedir.
* 验证 (Validation):检查数据是否符合预期格式(如是否为邮箱、数字)。可以使用 filter_var Veya WordPress’in sanitize_* Seri fonksiyonlar.
* 清理 (Sanitization):在将数据存入数据库或用于输出前,移除其中不安全的字符。例如,使用 sanitize_text_field Metin girdisini işle.
* 转义 (Escaping):在将数据输出到 HTML、JavaScript 或 URL 时,必须根据上下文进行转义,以防止跨站脚本攻击。WordPress 提供了 esc_html, esc_js, esc_url 和 esc_attr Ve diğer fonksiyonlar.
Örneğin, veritabanından alınan bir değişkeni çıkardığınızda:
// 假设 $user_input 是从数据库获取的文本
echo '<div class="message">'`. esc_html($user_input)`.'</div>';
// 或者用于 HTML 属性
echo '<input type="text" value="' . esc_attr( $user_input ) . '">'; Performans optimizasyonu ve en iyi uygulamalar.
Mükemmel bir eklenti, web sitesinin performansı üzerinde en az etkiye sahip olmalıdır. Aşağıdaki en iyi uygulamalara uyun:
* 按需加载资源:使用 wp_enqueue_script 和 wp_enqueue_style Bu yöntemle, sadece ihtiyaç duyulan sayfalarda CSS ve JavaScript dosyalarınız yüklenir. wp_enqueue_scripts Hook (ön uç) ve admin_enqueue_scripts Arka planda çalışan bir “kancaya” (hook) ihtiyaç var; bu kancayla montaj işlemi gerçekleştirilebilir.
* 合理使用钩子:避免在每次页面加载时都执行大量不必要的代码。将你的函数挂载到最合适的钩子上,并利用条件标签(如 is_admin(), is_single()Kodun çalışma alanını sınırlamak için kullanılır.
* 数据库查询优化:尽量减少直接 SQL 查询,优先使用 WordPress 的 API(如 WP_Query, get_postsEğer özel bir sorgu yapılması gerekiyorsa, lütfen doğru araçların veya yöntemlerin kullanıldığından emin olun. $wpdb Sınıfları oluşturun ve sorgu önbelleğini iyi bir şekilde yönetin.
* 提供卸载清理选项:考虑在用户删除插件时,是否需要清理插件创建的数据(如数据库表、选项等)。可以通过注册一个卸载钩子(在单独的文件中)来实现。
Özetle.
Bu makale, sizi WordPress eklenti geliştirmenin temel adımlarını keşfetmeye götürdü. Geliştirme ortamını oluşturmak ve temel yapıları anlamakla başladık; ardından işlevsel ilk eklenti dosyasını adım adım oluşturduk, arka plan yönetim arayüzü eklemeyi ve kodu nesne yönelimli bir yaklaşımla düzenlemeyi inceledik. Son olarak, güvenlik, performans ve yayınlama hazırlığının önemini vurguladık. Unutmayın ki, eklenti geliştirmenin özü, WordPress’in geniş hook (bağlantı noktası) sistemini ustaca kullanarak platformun özelliklerini genişletmektir. Güvenli kodlama standartlarına uymak, performansı optimize etmek ve kodu düzenli tutmak sayesinde, hem güçlü hem de güvenilir eklentiler geliştirebilir ve böylece tüm dünyadaki WordPress topluluğuna katkıda bulunabilirsiniz. Becerilerinizi geliştirmenin en iyi yolu, sürekli pratik yapmak ve temel kodları ile diğer mükemmel eklentilerin kaynak kodlarını incelemektir.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için PHP’de ustalaşmak gerekiyor mu?
Uzman seviyesine ulaşmak zorunda olmasanız da, sağlam bir PHP temeli olması şarttır. PHP dilbilgisi, fonksiyonlar, diziler, nesne yönelimli programlama gibi kavramları anlamanız gerekmektedir; çünkü WordPress’ün çekirdeği ve eklentileri, temaları PHP ile yazılmıştır. Ayrıca, ön uç etkileşimli eklentiler geliştirmek için HTML, CSS ve JavaScript konularına hakim olmanız çok önemlidir.
WordPress eklentimizi nasıl hata ayıklarız?
Öncelikle, emin olun ki sizin… wp-config.php WordPress’un hata ayıklama modunu dosyada etkinleştirin. WP_DEBUG Constantın değeri `true` olarak ayarlanmıştır. Bu, PHP hatalarını, uyarılarını ve bildirimlerini ekranda gösterir veya bir günlük dosyasına kaydeder. Ayrıca, error_log Query Monitor gibi araçlar veya eklentiler, değişken değerlerini ve işlem akışını izlemek için kullanılır. Tarayıcının geliştirici araçları (Console ve Network sekmanları) ise JavaScript ve AJAX isteklerini hata ayıklamak için son derece önemlidir.
Eklentim farklı WordPress sürümleriyle nasıl uyumlu olabilir?
Geliştirme sırasında, resmi dokümantasyona düzenli olarak göz atmalı ve farklı sürümlerdeki fonksiyonların kullanımdan kaldırılma durumlarını ve yapılan değişiklikleri öğrenmelisiniz. Geriye dönük uyumluluk sağlamak için koşullu mantık ve sürüm kontrolü kullanın. Örneğin, bunu şu şekilde yapabilirsiniz: function_exists() Belirli bir fonksiyonun kullanılabilir olup olmadığını kontrol edin; kullanılamıyorsa alternatif bir çözüm sunun. Ayrıca, eklentinin readme.txt dosyasında test ettiğiniz WordPress sürüm aralığını açıkça belirtin.
Eklentim için uluslararasılaştırmayı (internationalization) nasıl gerçekleştirebilirim?
WordPress, uluslararasılaştırma (i18n) işlemlerini gerçekleştirmek için GNU gettext teknoloji yığınını kullanır. __() 或 _e() Bu fonksiyonlar, çevrilmeye ihtiyaç duyan tüm metinleri kapsar. Daha sonra, Poedit gibi POT (PO File Template) dosyası oluşturma araçları kullanılarak çeviri şablonları oluşturulur ve çevirmenler bu şablonlar yardımıyla ilgili dildeki .mo ve .po dosyalarını hazırlarlar. Son olarak, load_plugin_textdomain() Fonksiyon, eklentinin başlatılması sırasında dil dosyalarını yükler.
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