Eklentilerin temellerini ve geliştirme ortamının kurulmasını anlamak.
Kod yazmaya başlamadan önce, WordPress eklentilerinin temel kavramlarını öğrenmek ve uygun bir yerel geliştirme ortamı hazırlamak son derece önemlidir. Bir eklenti, esasen bir veya daha fazla PHP dosyası içeren bir katalogdur ve WordPress tarafından sağlanan “Hook” (Kancalar) sistemi aracılığıyla çekirdek işlevleri genişletir veya değiştirir. Eklentiler, temalardan farklıdır; çünkü temalar web sitesinin görünümünü değiştirmeye odaklanırken, eklentiler yeni özellikler eklemeye yöneliktir. Bir temayı değiştirmeniz bile eklentinin işlevlerini genellikle etkilemez.
Geliştirmeye başlamak için öncelikle yerel bir WordPress ortamına ihtiyacınız var. Bu, Local by Flywheel, MAMP, XAMPP gibi araçlar veya doğrudan Docker konteynerleri kullanarak kolayca sağlanabilir. WordPress’i yerel olarak kurduktan sonra, gerekli ayarları yapmanız ve sitenizi oluşturmanız gerekecektir.wp-content/pluginsİçindekiler. Burası tüm eklentilerin bulunduğu yerdir. Örneğin, yeni bir klasör oluşturun.my-first-pluginBu klasör içinde, genellikle klasörün adıyla aynı olan bir ana PHP dosyası oluşturmanız gerekmektedir. Örneğin:my-first-plugin.phpBu ana dosya, eklentinin giriş noktasıdır ve WordPress’e eklentinin adını, açıklamasını, sürümünü, yazarını ve diğer bilgileri bildirmek için kullanılan özel yorum satırlarını içerir.
Geliştirme ortamında bunu etkinleştirmenizi öneririm.WP_DEBUGMod. WordPress’in kök dizinindeki dosyayı açın.wp-config.phpDosyada aşağıdaki satırı bulun veya ekleyin:
Tavsiye edilen okuma WordPress eklenti geliştirme pratik rehberi: ilk eklentinizi sıfırdan bir'e oluşturma。
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false ); Bu, hataları ve uyarıları kaydedecektir.wp-content/debug.logDosyalar, geliştirme sürecinde sorunları hızlı bir şekilde tespit etmenize yardımcı olur. Aynı zamanda, güçlü bir kod editörü veya IDE (örneğin VS Code, PhpStorm) kullanmak geliştirme verimliliğinizi önemli ölçüde artırabilir; bu araçlar genellikle PHP ve WordPress için iyi sözdizimi desteği ve ipuçları sunar.
İlk eklenti dosyanızı oluşturun.
Dosya oluşturmaktan eklentinin etkinleştirilmesine kadar olan tüm süreci, basit bir “Hello World” eklenti oluşturarak adım adım gerçekleştireceğiz. Bu eklenti, web sitesinin yönetim arayüzünün üst kısmında bir hoş geldin mesajı gösterecektir.
Sizin eklenti dizininizde…my-first-pluginBurada, ana dosyayı oluşturuyoruz.my-first-plugin.phpDosya içeriğinin temel yapısı, eklentinin baş kısmındaki yorumlardan itibaren başlamalıdır:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个用于学习插件开发的示例插件,它将在后台显示欢迎信息。
* Version: 1.0.0
* Author: 开发者姓名
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Bu yorum başlıkları zorunludur; WordPress, eklentilerinizi “Eklentiler” yönetim sayfasında tanımak ve göstermek için bunlara ihtiyaç duyar.Text DomainUluslararasılaştırma (i18n – Internationalization) için kullanılır.Domain PathDil dosyalarının bulunduğu klasör belirtilmiştir (gerekirse).
Şimdi, temel özellikleri ekleyeceğiz. Bu örnekte, kullanacağımız…admin_noticesKancalar. Başlık yorumunun altına aşağıdaki kodu ekleyin:
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Pratik Bir Eğitim Kitabı。
// 使用 admin_notices 钩子在管理后台输出提示信息
add_action( ‘admin_notices’, ‘my_first_plugin_display_admin_greeting’ );
/**
* 在管理后台显示欢迎信息的函数
* @return void
*/
function my_first_plugin_display_admin_greeting() {
// 检查当前用户是否有权限,确保只在后台显示
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="notice notice-success is-dismissible">
<p><?php _e( ‘欢迎使用我的第一个插件!插件开发之旅正式开始!’, ‘my-first-plugin’ ); ?></p>
</div>
<?php
} Dosyayı kaydettikten sonra, WordPress web sitenizin arka planına giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim” adında bir eklentinin eklenti listesinde yer aldığını görmelisiniz. “Etkinle” butonuna tıklayın. Eklenti etkinleştirildikten sonra, herhangi bir arka plan yönetim sayfasını (örneğin Panoyu) yenileyin; kodumuzda tanımlanan hoş geldiniz mesajını içeren yeşil bir başarı bildirimi görmelisiniz. Bu, geliştirme ortamınızın ve eklenti yapınızın doğru olduğunu doğrulayan, minimal ancak tam bir işlevselliktir.
WordPress’ın Temel Teknolojileri: Hook’lar ve Filtreler
Kancaları (Hooks) anlamak ve ustaca kullanmak, WordPress eklenti geliştirmenin temelidir. Kancalar iki türe ayrılır: Eylemler (Actions) ve Filtreler (Filters). Eylem kancaları, belirli zaman noktalarında özel kodlar eklemenize ve bunları çalıştırmanıza olanak tanır; örneğin, bir makale yayınlandıktan sonra veya sayfa başlığı yüklendikten önce. Yukarıda kullandığımız…admin_noticesBu, bir eylem kancasıdır. Filtre kancaları ise süreçte oluşturulan veya iletilen verileri değiştirmenize olanak tanır; örneğin, bir makalenin başlık içeriğini veya bir eklentinin sorgu sonuçlarını değiştirebilirsiniz.
Bir özel eylem nasıl eklenir?
Eylem gerçekleştirildi.add_action()Fonksiyon ekleme. Sözdizimi şu şekildedir:add_action( ‘hook_name’, ‘your_function_name’, priority, accepted_args )Öncelik (priority), küçük bir tamsayıdır; sayı ne kadar küçükse işlem o kadar erken gerçekleşir. Varsayılan değer 10’dur. Örneğin, makale içeriğinin ardına bazı özel HTML kodları eklemek istiyorsanız…
add_action( ‘the_content’, ‘my_custom_content_append’ );
function my_custom_content_append( $content ) {
// 只在单篇文章主循环内生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$extra_content = ‘<div class="“my-custom-box”"><p>Bu, eklenti aracılığıyla eklenen özel içeriktir.</p></div>’;
$content .= $extra_content;
}
return $content;
} Lütfen dikkat edin, her ne kadar…the_contentBu bir filtredir (değiştirilmiş hali geri göndermesi gerekmektedir).$contentWordPress bunu da bir eylem tetikleme noktası olarak kullanır. Daha titiz bir yaklaşım ise…add_filter。
Bir özel filtre nasıl eklenir?
Filtre başarıyla geçti.add_filter()Fonksiyon ekleme. Sözdizimi ve…add_action()Benzer bir örnek, makale özetlerinin uzunluğunun değiştirilmesidir:
add_filter( ‘excerpt_length’, ‘my_custom_excerpt_length’, 999 );
function my_custom_excerpt_length( $length ) {
// 将默认的55个词改为20个词
return 20;
} Kendi “hook’larınızı (düğümlerinizı) oluşturarak, eklentinizin diğer geliştiriciler veya temalar tarafından da genişletilebilmesini sağlayabilirsiniz.do_action()Bir eylem hook’u tanımlamak için şunu kullanın:apply_filters()Bir filtre hook’u tanımlayın. Bu, modüler ve genişletilebilir eklentiler oluşturmanın anahtarıdır.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan İleri Seviyelere。
Eklenti Özelliklerinin Geliştirilmesi ve En İyi Uygulamalar
Eklentilerin işlevleri giderek karmaşıklaştıkça, iyi bir kod organizasyonu, güvenlik, sürdürülebilirlik ve performans son derece önemli hale gelir. Yaygın bir uygulama, kod yapısını organize etmek için nesne yönelimli programlama (OOP – Object-Oriented Programming) kullanmaktır; bu yaklaşımla ilgili işlevler ve veriler bir ana sınıf içinde kapsulanır.
Kodu nesne yönelimli programlama ile kapsülleyin.
Bir ana sınıf oluşturmak, eklentilerin durumunu ve yöntemlerini daha iyi yönetmeye yardımcı olur ve fonksiyon adı çakışmalarını önler. İşte basit bir OOP (Nesne Yönelimli Programlama) yapı örneği:
<?php
/**
* Plugin Name: 进阶示例插件
*/
if ( ! class_exists( ‘My_Advanced_Plugin’ ) ) {
class My_Advanced_Plugin {
/**
* 构造方法,用于初始化钩子
*/
public function __construct() {
add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
add_action( ‘admin_menu’, array( $this, ‘add_admin_menu_page’ ) );
add_filter( ‘the_title’, array( $this, ‘filter_post_title_prefix’ ), 10, 2 );
}
/**
* 注册一个自定义文章类型
*/
public function register_custom_post_type() {
$args = array(
‘public’ => true,
‘label’ => ‘我的产品’,
‘supports’ => array( ‘title’, ‘editor’, ‘thumbnail’ ),
‘has_archive’ => true,
);
register_post_type( ‘my_product’, $args );
}
/**
* 在文章标题前添加前缀的过滤器
* @param string $title 原标题
* @param int $id 文章ID
* @return string 修改后的标题
*/
public function filter_post_title_prefix( $title, $id = null ) {
if ( ! is_admin() && in_the_loop() ) {
$title = ‘[精品] ’ . $title;
}
return $title;
}
// ... 其他方法
}
// 实例化插件类
new My_Advanced_Plugin();
} Bu yapı, ilgili işlevleri bir araya getirir; bu sayede kod daha anlaşılır ve yönetimi daha kolay hale gelir.
Eklentilerin güvenliğini ve performansını sağlamak
Güvenlik, eklenti geliştirmede en öncelikli konudur. Kullanıcı girdilerine asla güvenmeyin. Tüm girdiler için…$_GET、$_POST或$_REQUESTElde edilen verilerin doğrulanması (Validation), temizlenmesi (Sanitization) ve escape işlemlerinin yapılması gerekmektedir. WordPress, bu işlemler için bir dizi yardımcı fonksiyon sunmaktadır:
* 验证:check_ajax_referer(), wp_verify_nonce()
* 清理:sanitize_text_field(), sanitize_email(), absint()
* 转义:esc_html(), esc_url(), wp_kses_post()
Herhangi bir veriyi HTML, özellik veya URL’ye göndermeden önce, uygun kaçış fonksiyonlarını kullanmanız şarttır. Performans açısından, her sayfa yüklendiğinde kaynak yoğun sorguların çalışmasını önlemek için hook’ları akıllıca kullanın. Önemli olmayan ve tekrarlanabilir sorgu sonuçlarını bir süreliğine saklamak için WordPress’in Transients API’sini kullanmayı düşünebilirsiniz.
Eklentinin ayar sayfasını gerçekleştirin.
Çoğu eklentinin, kullanıcıların ayarlamalar yapabileceği bir ayar sayfasına ihtiyacı vardır. Bu genellikle…add_options_page()或add_menu_page()Bu fonksiyonlar, monte edilmek üzere…admin_menuKancaların aşağıya indirilmesiyle bu işlem gerçekleştirilebilir. Seçeneklerin ayarlanması için WordPress’in Settings API’si kullanılmalıdır; bu sayede güvenli bir şekilde kayıt, saklama ve doğrulama işlemleri yapılabilir. Bu işlem, ilgili fonksiyonların WordPress API’si aracılığıyla çağrılmasını içerir.register_setting()、add_settings_section()和add_settings_field()Bu tür fonksiyonlar kullanmak, sadece güvenliği sağlamakla kalmaz (örneğin nonce doğrulama ile), aynı zamanda WordPress arayüzünün tutarlı bir stilini de korur.
Özetle.
WordPress eklenti geliştirme, yaratıcılığı işlevlere dönüştürme sürecidir ve eklentilerin temel yapısını anlamak ve yerel ortamı kurmakla başlar. En basit “Hello World” eklentisini oluşturarak, dosya oluşturmadan işlevlerin etkinleştirilmesine kadar olan tüm süreci uyguladık. Geliştirmenin özü, WordPress’in güçlü kancalama sistemini (eylemler ve filtreler) derinlemesine anlamak ve esnek bir şekilde kullanmaktadır; bu sistemler, WordPress çekirdeği ve diğer bileşenlerle etkileşim kurmanın aracıdır. Eklentinin işlevleri arttıkça, nesne yönelimli programlama kullanmak, güvenli kodlama kurallarına uymak (doğrulama, temizleme, escape işlemleri), ve ayar sayfalarını oluşturmak için Settings API’sini kullanmak, eklentinin stabil, güvenli, sürdürülebilir ve genişletilebilir olmasını sağlamanın anahtar adımlarıdır. Bu rehberlere ve en iyi uygulamalara uyarak, basit araçlardan karmaşık uygulamalara kadar çeşitli yüksek kaliteli WordPress eklentileri geliştirebilirsiniz.
Sıkça Sorulan Sorular.
###: WordPress eklentisi geliştirmek için hangi ön bilgilere ihtiyaç vardır?
PHP programlama dilinin temel bilgilerine sahip olmanız gerekmektedir; çünkü eklentiler esas olarak PHP ile yazılmıştır. Ayrıca, HTML, CSS ve JavaScript konularında temel bir bilgiye sahip olmanız, ön uç etkileşimli eklentiler oluşturmanıza yardımcı olacaktır. En önemlisi, WordPress’in temel kavramlarına aşina olmanız gerekmektedir: makaleler, sayfalar, kategoriler, kullanıcı rolleri ve en önemlisi de “hook” (eklemek) sistemi.
Geliştirilmekte olan bir WordPress eklentisini nasıl hata ayıklarım?
Geliştirme ortamında bunun etkinleştirilmesi şiddetle önerilir.WP_DEBUGİlgili ayarlar, metin içindeki “çevre kurulumu” bölümünde açıklanmıştır. Bu ayarlar, PHP hatalarını, uyarılarını ve bildirimlerini bir günlük dosyasına (log file) kaydeder. Ayrıca, isterseniz bunları kullanabilirsiniz.error_log()Fonksiyonlar veya yardımcı fonksiyonlar (helper functions) gibi…var_dump()İşbirliğiwp_die()Değişken değerlerini kontrol etmek için bunları çıktı olarak alın. Tarayıcı geliştirici araçlarının Konsol (Console) ve Ağ (Network) sekmeleri, JavaScript ve AJAX isteklerini hata ayıklamak için de çok önemlidir.
Eklentim farklı WordPress sürümleriyle nasıl uyumlu olabilir?
Eklenti kodunuzda, belirli fonksiyonların veya sınıfların mevcut WordPress sürümünde bulunup bulunmadığını kontrol etmelisiniz; ardından bunları kullanmalısınız. Bunun için uygun araçlar mevcuttur.function_exists()或is_admin()Şart kontrolü gibi işlemler için, eklentinin açıklamalarında, eklentinin başlık kısmındaki yorumlarda gerekli bilgiler bulunabilir.Requires at least:Gerekli en düşük WordPress sürümünü belirtmek için bu alanı kullanın. Eklentilerinizin en yeni WordPress çekirdeğiyle uyumluluğunu düzenli olarak test etmek iyi bir alışkanlıktır.
Eklentim için uluslararasılaştırma nasıl yapabilirim ve onu çok dilli olarak destekleyebilirim?
WordPress’in çeviri fonksiyonlarını kullanarak çevrilmesi gereken tüm metin dizelerini sarmanız gerekiyor. Örneğin, şu şekilde kullanabilirsiniz:__( ‘文本’, ‘your-plugin-text-domain’ )Tabii ki! Lütfen metni bana verin ve çevirisini yapayım._e( ‘文本’, ‘your-plugin-text-domain’ )Geri dönüşü doğrudan göstermek için, eklentinin başlık kısmındaki yorumlarda doğru ayarlamaları yapmanız gerekiyor.Text Domain和Domain PathArdından, Poedit gibi bir araç kullanarak oluşturun..potŞablon dosyası; çevirmenler bu dosyaya dayanarak içerikler oluşturabilirler..po和.moDil dosyası.
Geliştirme işlemi tamamlandıktan sonra, eklentiyi resmi eklenti kataloğuna nasıl gönderebilirim?
Öncelikle, WordPress resmi web sitesinde bir hesap oluşturmanız ve eklentiyi inceleme için göndermeniz gerekiyor. Kodunuz, güvenlik, kötü niyetli kodun bulunmaması ve GPL uyumluluğu da dahil olmak üzere resmi kodlama standartlarına ve kılavuzlarına uymalıdır. Eklentinizin dizin yapısı, ana PHP dosyasını ve bir…readme.txtBelgeler (belirli standartlara uygun formatlarda), isteğe bağlı ekran görüntüleri ve simgeler. İnceleme süreci biraz zaman alabilir; ekibimiz kodunuzu inceleyecek ve gerekliliklere uygun olup olmadığından emin olacaktır.
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