Neden WordPress eklenti geliştirme öğrenilmelidir?
WordPress, dünyanın en popüler içerik yönetim sistemi olarak, güçlü genişletilebilirliğini esas olarak eklenti mekanizmasına borçludur. Eklenti geliştirmeyi öğrenmek, mevcut eklentilerin işlevselliğiyle sınırlı kalmamanızı sağlar; projenizin ihtiyaçlarına göre özel çözümler oluşturabilir, müşterilere benzersiz özellikler sunabilir veya mükemmel fikirleri ürüne dönüştürüp toplulukla paylaşabilirsiniz. Bu beceriyi kazanmak, geliştirme verimliliğinizi ve pazar rekabet gücünüzü önemli ölçüde artırabilir.
Standart bir WordPress eklentisi, bağımsız bir PHP dosyası veya birden fazla dosyayı içeren bir katalogdur ve WordPress çekirdeğiyle bir dizi önceden tanımlanmış arayüz aracılığıyla etkileşim kurar. Geliştirme süreci esas olarak WordPress’in yapısını ve işleyişini anlamaya dayanır.Hooks(Sistemler, kendi kodlama standartlarına ve güvenlik uygulamalarına uygun olarak çalışır.)
İlk eklentinizi oluşturun.
Kod yazmaya başlamadan önce, yerel bir geliştirme ortamına ihtiyacınız olacak. XAMPP, MAMP veya Local by Flywheel kullanmanız önerilir. Ortam hazır olduktan sonra, kod yazmaya başlayabilirsiniz.wp-content/pluginsKataloğa ilk eklentinizi oluşturdunuz.
Tavsiye edilen okuma Sıfırdan başlayarak WordPress eklenti geliştirmeye ustalaşmak: Kapsamlı bir rehber ve uygulamalı çalışmalar.。
Ana eklenti dosyasını oluşturun.
Her eklentinin bir ana PHP dosyası olmalı ve dosyanın başında standart eklenti bilgilerini içeren açıklamalar bulunmalıdır. Bu dosya, eklentinin giriş noktasıdır ve adı genellikle eklentinin dizin adıyla aynıdır. Örneğin, “my-plugin” adında bir eklenti oluşturduğunuzda…my-first-pluginKataloğu ve içinde aynı adı taşıyan bir dosya oluşturun.my-first-plugin.phpDosya.
Dosyanın başındaki yorumlar çok önemlidir; WordPress, eklentinin temel bilgilerini bu yorumlar aracılığıyla tanır.
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Dosyayı kaydettikten sonra, WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. Yeni eklenen eklenti, eklenti listesinde görünecek ve oradan etkinleştirebilirsiniz. Şu an için herhangi bir özelliği yoktur.
İlk özelliği ekleyin.
Şimdi, bu eklentiye basit bir özellik ekleyelim: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyin. Bunun için WordPress’in bazı özelliklerinden yararlanmamız gerekecek.the_contentFiltre kancası (Filter Hook).
Eklentinin ana dosyasında, yorum bilgilerinin altına aşağıdaki kodu ekleyin:
Tavsiye edilen okuma WordPress Eklenti Geliştirme Rehberi: Sıfırdan Başlayarak İlk İşlevsel Eklentinizi Oluşturun。
// 在文章内容后添加自定义文本
function myfp_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 makale, “My First Plugin” tarafından desteklenmektedir.</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将函数挂载到‘the_content’过滤器
add_filter('the_content', 'myfp_add_footer_text'); Bu kod, bir fonksiyon tanımlamaktadır.myfp_add_footer_textMakalenin içeriğini alır$contentBir parametre olarak kullanılır. Fonksiyon içinde koşullu kontrol yoluyla, yalnızca belirli bir makale sayfasında ve ana sorgunun ana döngüsü içindeyken etkin hale gelmesi sağlanır; ardından özelleştirilmiş bir HTML metni eklenir. Son olarak, kullanılır.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. Eklentiyi aktive ettikten sonra herhangi bir makaleye bakarsanız, içeriğin alt kısmında eklenen metni göreceksiniz.
Özüne İnme: Hook’lar ve API’ler
WordPress eklenti geliştirmenin temeli, sistemin hook’larını (Kancalar) ve zengin API’sini anlamak ve bunları ustaca kullanmaktır. Bu, eklentilerin WordPress çekirdeğiyle güvenli ve standart bir şekilde iletişim kurmasını sağlayan bir araçtır.
Action ve Filter Hook’ları anlamak
Kancalar iki ana türe ayrılır: Eylem (Action) ve Filtre (Filter). Eylem kancaları, belirli bir zamanda özelleştirilmiş kodu “çalıştırmanıza” olanak tanır. Örneğin,wp_footerEylem, sayfanın en altındaki etiketin önünde tetiklenir; bunu şu şekilde yapabilirsiniz:add_action('wp_footer', 'your_function')İzleme kodunu veya özelleştirilmiş HTML’yi eklemek için buraya tıklayın.
Filtre hook’ları, verileri “değiştirmenize” olanak tanır. Verileri alır, fonksiyonunuz tarafından işlendikten sonra tekrar geri gönderir. Yukarıdaki örnekte, sayfa altı metninin eklendiği durum tipik bir filtre uygulamasıdır. Bir diğer yaygın örnek ise…excerpt_lengthFiltre, makale özetlerinin uzunluğunu değiştirmek için kullanılır.
// 修改摘要长度为20个单词
function myfp_custom_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'myfp_custom_excerpt_length'); WordPress veritabanı API’sini kullanmak
Eklentiler sık sık veri depolamaya ve okumaya ihtiyaç duyar. WordPress bunun için gerekli olan altyapıyı sağlar.wpdbVeritabanıyla güvenli bir şekilde etkileşim kurmak için sınıflar kullanılır. Basit anahtar-değer çiftleri verileri için, Options API’sinin kullanılması şiddetle tavsiye edilir.
Örneğin, kullanıcıların daha önce eklediğimiz sayfa altı metnini özelleştirebilmeleri için bir seçenek oluşturabiliriz.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Profesyonel Seviye Genişletmelere。
// 1. 创建可配置的页脚文本
function myfp_add_footer_text_v2($content) {
if (is_single() && in_the_loop() && is_main_query()) {
// 从数据库获取选项值,如果不存在则使用默认值
$footer_text = get_option('myfp_footer_text', '感谢阅读!本文由“我的第一个插件”提供支持。');
$custom_text = '<p><em>'`. esc_html($footer_text)`.'</em></p>';
$content .= $custom_text;
}
return $content;
}
add_filter('the_content', 'myfp_add_footer_text_v2'); Şimdi, metin içeriği şu şekilde kullanılabilir:get_option()Fonksiyon, veritabanından bilgileri okur. Daha sonra, kullanıcıların bu değeri değiştirebileceği bir yönetim sayfasına ihtiyacımız var.
Eklenti Yönetim Sayfası Oluşturma
Eklentiyi daha profesyonel ve kullanışlı hale getirmek için bir ayar sayfası eklemek gereklidir. Bu genellikle WordPress’in yönetim menüsü API’si aracılığıyla yapılır.
Yönetim menüsü ve alt sayfalar ekleyin.
Eklentilere bağımsız bir üst düzey menü ekleyebiliriz veya onu “Ayarlar” veya “Araçlar” menüsünün bir alt menüsü olarak kullanabiliriz. Burada onu “Ayarlar” menüsüne ekliyoruz.
Öncelikle, kullanın.add_action()Bir fonksiyonu şuna monte etmekadmin_menuBu fonksiyona bir menü öğesi ekleyin.
// 添加管理菜单
function myfp_add_admin_menu() {
add_options_page(
'我的第一个插件设置', // 页面标题
'我的插件设置', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单slug
'myfp_options_page_html' // 用于渲染页面的回调函数
);
}
add_action('admin_menu', 'myfp_add_admin_menu'); add_options_page()Fonksiyon, “Ayarlar” menüsü altında bir alt sayfa oluşturacaktır. Kullanıcı bu menüye tıkladığında, WordPress belirttiğimiz geri çağırma fonksiyonunu (callback function) çağıracaktır.myfp_options_page_htmlSayfa içeriğini çıkarın.
Oluşturulan ayar sayfası formu
Ardından, basit bir ayar formunu renderlamak için bir geri çağırma (callback) fonksiyonu tanımlayın. Bu form, belirtilen bir adrese gönderilecektir.options.phpBu, WordPress’in ayarları işleme standardıdır.
// 渲染设置页面
function myfp_options_page_html() {
// 检查用户权限
if (!current_user_can('manage_options')) {
return;
}
?>
<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('myfp_settings');
// 输出设置章节和字段
do_settings_sections('my-first-plugin');
// 提交按钮
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Kayıt Ayarları, Bölümler ve Alanlar
Sadece formlar yeterli değil, aynı zamanda bunları kullanmamız gerekiyor.register_setting(), add_settings_section()和add_settings_field()Bu fonksiyonlar, WordPress’e hangi ayar seçeneklerimizin olduğunu bildirmek için kullanılır.
// 初始化插件设置
function myfp_settings_init() {
// 注册一个设置项‘myfp_settings’,它包含一个字段‘myfp_footer_text’
register_setting('myfp_settings', 'myfp_footer_text');
// 在页面‘my-first-plugin’上添加一个设置章节
add_settings_section(
'myfp_section',
'页脚文本设置',
null, // 章节描述回调函数,这里不需要
'my-first-plugin'
);
// 在上述章节中添加一个字段
add_settings_field(
'myfp_field_footer_text',
'自定义页脚文本',
'myfp_field_footer_text_html', // 渲染字段HTML的回调函数
'my-first-plugin',
'myfp_section',
['label_for' => 'myfp_footer_text']
);
}
add_action('admin_init', 'myfp_settings_init');
// 渲染文本输入字段
function myfp_field_footer_text_html() {
// 获取数据库中保存的值
$value = get_option('myfp_footer_text');
?>
<input type="text" id="myfp_footer_text" name="myfp_footer_text" value="<?php echo esc_attr($value); ?>" class="regular-text">
<p class="description">Bu metin, her makalenin sonunda görüntülenecektir.</p>
<?php
} Şimdi, WordPress arka planını yenileyin; “Ayarlar” menüsünde “Benim Eklentilerim” seçeneğini göreceksiniz. Bu sayfaya girerek özel alt bilgi metnini değiştirebilir ve kaydedebilirsiniz. Bu değişiklikler, web sitesinin ön yüzündeki (ön plan) makale içeriklerini de otomatik olarak güncelleyecektir.
Özetle.
Bu kılavuz, sizi WordPress eklenti geliştirmenin temel adımlarından geçiriyor: Standart başlık bilgilerini içeren temel bir eklenti dosyası oluşturmaktan, eylemler ve filtreler aracılığıyla WordPress’e yeni özellikler eklemeye, ardından verileri Option API kullanarak saklamaya ve son olarak tam bir arka uç yönetim arayüzü oluşturmaya kadar. Tüm bu süreç, WordPress geliştirmenin modüler ve hook tabanlı felsefesini yansıtmaktadır. Bu temel bilgileri öğrendikten sonra, özel makale türleri, kısa kodlar, REST API entegrasyonu, AJAX işlemleri ve eklentilerin uluslararasılaştırılması gibi daha ileri seviye konuları keşfedebilirsiniz. Unutmayın ki, iyi bir kod yapısı, güvenli veri işleme ve kullanıcı dostu bir arayüz, mükemmel eklentiler oluşturmanın anahtarıdır.
Sıkça Sorulan Sorular.
Bir eklenti geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?
PHP programlama diliyle ilgili temel bilgilere sahip olmanız gerekmektedir; değişkenler, fonksiyonlar, koşullu ifadeler ve döngüler gibi kavramları bilmelisiniz. Ayrıca, ön uç çıktısını ve stilini işlemek için HTML ve CSS konusunda temel bir bilgiye sahip olmanız önemlidir. Veri depolamayı anlamak açısından MySQL’in temel işlemlerine aşina olmak faydalıdır; ancak WordPress’in API’si veritabanı iletişiminin çoğunu zaten kapsamaktadır.
Geliştirilmekte olan bir eklentiyi nasıl hata ayıklarsınız?
En etkili yöntem, WordPress’in hata ayıklama (debugging) modunu etkinleştirmektir.wp-config.phpDosyada,WP_DEBUGSabitler şöyle tanımlanır:trueBu, tüm PHP hatalarını, uyarılarını ve bildirimlerini ekranda gösterecektir. Aynı zamanda, bunları kullanmak da mümkündür.error_log()Fonksiyon, hata ayıklama bilgilerini sunucunun hata günlüğüne yazar veya tarayıcı geliştirici araçlarının Console ve Network panellerini kullanarak ön uç ayıklaması yapar.
Eklentiler, çok dilli desteği nasıl sağlar?
WordPress, çok dilli destek sağlamak için “uluslararasılaştırma (i18n)” ve “yerelleştirme (l10n)” süreçlerini kullanır. Eklenti kodunda, çevrilmeye ihtiyaç duyan tüm metin dizeleri belirli bir format kullanılarak işlenmelidir.__()或_e()Bu metni doğrudan Türkçeye çevirmek için bir çeviri aracı kullanılabilir. Ancak, metnin içindeki bazı kısımların (örneğin, `%s`, `%1$s`, `{{var}}`, `:name`, URL’ler, sayılar, noktalama işaretleri ve satır sonları) belirli bir amaç için kullanıldığı ve bu nedenle doğrudan çevirinin anlamlı olmayabileceği belirtilmiştir. Bu nedenle, metnin.potŞablon dosyalarını kullanarak farklı dillerde içerikler oluşturulabilir.zh_CN.poSon olarak, eklentinin ana dosyasının baş kısmındaki “Text Domain” bölümünde kendi metin alanınızı tanımlayın ve başlatma işlemi sırasında bunu kullanın.load_plugin_textdomain()Function loading.
Geliştirilen eklentiyi resmi kataloga nasıl yayınlarım?
Öncelikle, eklentinizin WordPress’in resmi kodlama standartlarına, gizlilik politikasına ve GPL uyumluluğu gereksinimlerine tam olarak uyduğundan emin olmanız gerekiyor. Daha sonra, WordPress.org üzerinden bir SVN deposu talep edin. Eklentinizin kodunu (ana dosyaları, kaynak dosyaları ve çeviri dosyaları dahil) bu SVN deposuna yükleyin./trunkİçerik tablosu. Yeni sürümler SVN etiketleri aracılığıyla yayınlanır. Resmi katalog, SVN deponuzdan otomatik olarak kodu senkronize eder ve insanlar tarafından incelendikten sonra görüntülenir.
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