Hazırlık İşlemleri ve Geliştirme Ortamının Kurulması
Kod yazmaya başlamadan önce, profesyonel ve verimli bir geliştirme ortamı başarının yarısıdır. WordPress eklenti geliştirme için bu, XAMPP, Local by Flywheel veya DevKinsta gibi yerel bir sunucu ortamına ihtiyacınız olduğu anlamına gelir. Ortamınızın hedef dağıtım ortamıyla aynı veya daha yüksek bir PHP sürümü (PHP 7.4+ önerilir) ve MySQL/MariaDB veritabanı çalıştırdığından emin olun.
Bundan sonra, kaliteli bir kod editörüne ihtiyacınız olacak. Visual Studio Code, PhpStorm veya Sublime Text, sözdizimi vurgulama, kod tamamlama ve hata ayıklama özellikleri sunan mükemmel seçeneklerdir ve geliştirme verimliliğinizi önemli ölçüde artırabilirler.
WordPress eklentilerinin temel yapısını anlamak çok önemlidir. En basit bir eklenti sadece tek bir PHP dosyası olabilir; ancak profesyonel eklentiler genellikle modüler bir yapıya sahiptir. Başlangıç için atılacak en önemli adım, ana eklenti dosyasını oluşturmaktır. Ana eklenti dosyasının baş kısmındaki yorumlar, eklentinin “kimlik kartı”dır ve WordPress’e eklentinin adı, açıklaması, sürümü, yazarı gibi temel bilgilerini sağlar. Bu bilgi bloğu, belirli bir yorum formatına sıkı sıkıya uymalıdır.
Tavsiye edilen okuma WordPress eklenti geliştirmeye başlama kılavuzu: İlk özel eklentinizi sıfırdan oluşturun.。
Örneğin, adı “…” olan bir…my-awesome-plugin.phpAna dosyanın baş kısmı aşağıdaki gibi görünebilir:
<?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 doğrudan WordPress’in arka planındaki “Eklentiler” sayfasında görünecek ve kullanıcıların eklentiniz hakkındaki ilk izlenimleri oluşturacaktır.
Eklentilerin temel yaşam döngüsünü anlamak
Eklentinin yaşam döngüsü, WordPress’in eklenti dizinindeki tüm ana dosyaları yüklemesiyle başlar. Eklentiniz etkinleştirildiğinde, WordPress ana dosyanın en üst kısmındaki kodu çalıştırır. Bu nedenle, en iyi uygulama tüm temel kodu belirli kontrollerden geçirecek şekilde kapsamlı bir yapı içinde tutmaktır.ABSPATHConstantların bulunduğu koşullu ifadelerde, doğrudan erişimi önlemek için bazı önlemler alınır. Eklentilerin yaşam döngüsündeki kritik noktalar arasında “aktifleme”, “devre dışı bırakma” ve “kaldırma” işlemleri yer alır; bu işlemler, ilgili kurulum, temizleme veya veri silme işlemlerinin gerçekleştirilmesine olanak tanır.
Core Architecture and Hook System
WordPress’in gücünün ve esnekliğinin temeli, “Kancalar” (Hooks) sisteminde yatmaktadır. Kancalar iki ana türe ayrılır: Eylemler (Actions) ve Filtreler (Filters). Bunları anlamak ve ustaca kullanmak, profesyonel eklenti geliştirmenin temel taşlarındandır.
Eylem kancaları, WordPress’in belirli anlarında (örneğin, bir makale yayınlanmadan önce veya bir tema yüklendikten sonra) kendi kodunuzu eklemenize olanak tanır. Bunu kullanabilirsiniz.add_action()Bu fonksiyon, özel fonksiyonunuzu bu anlara “monte eder”. Örneğin, yönetim arayüzünün alt kısmına bir satır metin ekleyebilirsiniz:
Tavsiye edilen okuma WordPress Eklenti Geliştirme: Sıfırdan Başlayarak Özel İşlevlere Sahip Eklentiler Oluşturma。
function myplugin_admin_footer_text() {
echo '<p>Eklentimi kullandığın için teşekkür ederim!</p>';
}
add_action( 'admin_footer', 'myplugin_admin_footer_text' ); Filtre hook’ları, WordPress veya diğer eklentilerin işleme sırasında ürettiği verileri değiştirmenize olanak tanır. Bunu kullanabilirsiniz.add_filter()Fonksiyonlar, metin içeriğini, seçenek değerlerini, sorgu sonuçlarını vb. değiştirmek için kullanılır. Örneğin, bir makalenin başlığını değiştirmek için…
function myplugin_modify_title( $title ) {
return '前缀:' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' ); Eklenti sınıfları oluşturma ve kodu düzenleme
Biraz daha karmaşık özelliklere sahip eklentiler için, kodu organize etmek amacıyla nesne yönelimli programlama (OOP) ve sınıflar kullanmak daha iyi bir seçenektir. Bu, fonksiyon adı çakışmalarını önlemeye ve kod yapısını daha net, daha kolay bakım yapılabilir hale getirmeye yardımcı olur. Tipik bir eklenti sınıfı aşağıdaki gibi görünebilir:
class My_Awesome_Plugin {
private static $instance = null;
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
$this->define_constants();
$this->init_hooks();
}
private function define_constants() {
define( 'MY_PLUGIN_VERSION', '1.0.0' );
define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
}
private function init_hooks() {
add_action( 'init', array( $this, 'load_textdomain' ) );
add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
}
public function load_textdomain() {
load_plugin_textdomain( 'my-awesome-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
public function add_admin_menu() {
// 添加管理菜单的代码
}
}
// 启动插件
My_Awesome_Plugin::get_instance(); Bu tek örnek (singleton) deseni, eklentinin temel sınıfının yalnızca bir kez oluşturulmasını sağlar.
Yönetim arayüzü oluşturma ve veri işleme
Çoğu eklentinin, kullanıcılarla etkileşim kurmak için bir arka plan ayar sayfasına ihtiyacı vardır. WordPress, menü sayfaları, alt menü sayfaları ve seçenek sayfaları oluşturmak için zengin bir API sunar; ayrıca ayar API’sini kullanarak verileri güvenli bir şekilde kaydetmeyi ve doğrulamayı sağlar.
Öncelikle, kullanmanız gereken şey…add_menu_page()或add_options_page()Bir yönetim sayfası oluşturmak için `register_page` gibi fonksiyonları kullanın. Daha sonra, bu sayfanın geri çağırma (callback) fonksiyonunda bir HTML formu görüntüleyin. Form verilerini güvenli ve standart bir şekilde işlemek için WordPress’in “Ayarlar API’si” (Settings API) kullanılmasını şiddetle öneririz. Bu API, yetki doğrulamasını, güvenli olmayan alanları ve seçenekleri otomatik olarak yönetir.
Ayar API’sini kullanarak seçenek sayfası oluşturun.
API ayarlaması üç temel fonksiyonu içerir:register_setting()Bir dizi seçeneği kaydetmek için kullanılır.add_settings_section()Bu kod, sayfaya bir bölge eklemek için kullanılır. Ayrıca…add_settings_field()Bu bölgeye belirli alanlar eklemek için kullanılır.
Tavsiye edilen okuma WordPress Eklenti Geliştirmeyi Sıfırdan Öğrenin: Prensipler, Uygulamalar ve İleri Seviye Teknikler。
Aşağıda, bir metin alanı içeren bir ayar sayfasının nasıl oluşturulacağını gösteren basitleştirilmiş bir örnek bulunmaktadır:
// 在 init 钩子中注册设置
add_action( 'admin_init', 'myplugin_register_settings' );
function myplugin_register_settings() {
register_setting( 'myplugin_settings_group', 'myplugin_option_name' );
add_settings_section( 'myplugin_main_section', '主设置', null, 'myplugin-settings-page' );
add_settings_field( 'myplugin_text_field', '示例文本', 'myplugin_text_field_callback', 'myplugin-settings-page', 'myplugin_main_section' );
}
// 字段的回调函数,输出HTML
function myplugin_text_field_callback() {
$option = get_option( 'myplugin_option_name' );
echo '<input type="text" name="myplugin_option_name" value="' . esc_attr( $option ) . '" />';
}
// 在 admin_menu 钩子中添加菜单
add_action( 'admin_menu', 'myplugin_create_menu' );
function myplugin_create_menu() {
add_options_page( '我的插件设置', '我的插件', 'manage_options', 'myplugin-settings-page', 'myplugin_settings_page_html' );
}
// 设置页面的HTML结构
function myplugin_settings_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( 'myplugin_settings_group' );
do_settings_sections( 'myplugin-settings-page' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Eklentilerin uluslararasılaştırılması, güvenliği ve yayınlama hazırlıkları
Profesyonel bir eklenti, küresel kullanıcılara yönelik olmalıdır. Uluslararasılaştırma (i18n), eklentideki metin dizelerinin çevrilebilir bir formata dönüştürülmesi anlamına gelir. Bunun için WordPress tarafından sağlanan araçları kullanmanız gerekmektedir.__()、_e()Tüm kullanıcıya yönelik metinleri bu fonksiyonlarla sarın ve eklentinin baş kısmındaki yorumlarda bunları doğru bir şekilde ayarlayın.Text Domain和Domain Path。
Güvenlik, eklenti geliştirmenin can damarındır. Tüm kullanıcı girdilerini doğrulamalı (Validation), temizlemeli (Sanitization) ve escape işlemi yapmalısınız.sanitize_text_field()、esc_html()、wp_kses_post()、intval()Verileri işlemek için `await`, `for`, `while` gibi fonksiyonlar kullanılır. HTML, JavaScript veya URL’ye çıktı yapılırken de `\\`, `%` gibi karakterleri uygun şekilde dönüştürmek için ilgili escape fonksiyonları kullanılmalıdır.esc_attr()、esc_js()、esc_url()。
Nihai kod incelemesini ve paketlemeyi gerçekleştirin.
Yayınlamadan önce kapsamlı testler yapın ve kodu inceleyin. Kodun WordPress kodlama standartlarına uygun olup olmadığını kontrol edin; PHP uyarıları veya hataların olmadığından emin olun (ayarlar).WP_DEBUG(Test için “true” değerini kullanın.) Tüm hata ayıklama kodlarını ve yorumlardaki hassas bilgileri kaldırın.
Son olarak, eklenti dizinlerini bir ZIP dosyası olarak sıkıştırmanız gerekiyor. Bu ZIP dosyası, ana eklenti dosyanızı ve diğer tüm dizinleri doğrudan içermelidir (örneğin:/assets, /includes, /languagesBir ek üst klasör yerine, doğrudan WordPress arayüzündeki “Eklenti Yükle” özelliği aracılığıyla yükleme yapılabilmesi için bir klasör oluşturmalısınız. Eklentiniz için net ve anlaşılır bir ad belirleyin.readme.txtWordPress.org’un format gereksinimlerine uygun olarak hazırlanan dosyalar, resmi kataloglara gönderilmesi veya profesyonel dağıtım için de gereklidir.
Özetle.
Sıfırdan başlayarak profesyonel bir WordPress eklentisi geliştirmek, ortam ayarlamaları, mimari tasarım, API kullanımı, arayüz geliştirme, güvenlik önlemleri ve uluslararasılaştırma gibi birçok konuyu içeren kapsamlı bir süreçtir. Temel nokta, WordPress’in hook sisteminin derinlemesine anlaşılması ve sürdürülebilirliği sağlamak için modüler, nesne yönelimli bir kod yapısının kullanılmasıdır. Aynı zamanda, güvenlik en iyi uygulamalarına ve uluslararasılaştırma standartlarına sıkı sıkıya bağlı kalmak, bir eklentinin olgunlaşması ve profesyonelleşmesi için kritik öneme sahiptir. Bu rehberdeki adımları takip ederek, yapısal olarak net, işlevsel olarak stabil, güvenli ve dünya genelindeki kullanıcılar tarafından kolayca kullanılabilir bir WordPress eklentisi geliştirebilirsiniz.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için PHP bilmek zorunda mıyım?
Evet, PHP WordPress’in temel programlama dili olduğundan, PHP’yi (özellikle de nesne yönelimli programlamayı) derinlemesine öğrenmek eklenti geliştirmek için gereklidir. Aynı zamanda, HTML, CSS, JavaScript ve temel MySQL/SQL bilgileri de işlevsel ve kullanıcı dostu eklentiler geliştirmenize yardımcı olacaktır.
Eklentimdeki fonksiyon adlarının diğer eklentilerle çakışmasını nasıl önleyebilirim?
En etkili yöntem, ad alanları (Namespaces – PHP 5.3 ve üzeri gerektirir) kullanmaktır veya tüm fonksiyon ve sınıf adlarının önüne benzersiz bir önek eklemektir. Örneğin, eklentinizin kısaltması “myPlugin” ise…mapO halde, fonksiyonun adı şu şekilde adlandırılabilir:map_initialize_pluginSınıf adları şu şekilde adlandırılabilir:Map_Admin_SettingsNesne yönelimli programlama kullanarak ve kodu sınıflar içinde kapsülleyerek, genel (global) ad alanlarının kirlenmesini de büyük ölçüde azaltabilirsiniz.
Eklentim için bir veritabanı tablosu oluşturulması gerekiyor; bunu ne zaman yapmalıyım?
Veritabanı tablolarının oluşturulması işlemi, eklentinin etkinleştirildiği sırada yapılmalıdır. Bunu, ilgili işlemlere bağlantı (hook) kurarak gerçekleştirebilirsiniz.register_activation_hookBu kancayı, tablo oluşturma SQL komutlarını çalıştırmak için kullanın. Mutlaka bunu yapın.dbDelta()Bu fonksiyon, CREATE TABLE komutunu gerçekleştirmek için kullanılır ve oldukça akıllıdır; yeni tablolar oluşturabilir veya mevcut tabloların yapısını verileri kaybetmeden güncelleyebilir.
Eklentime nasıl bir widget eklerim?
WordPress’in yerleşik özelliklerini genişleterek bunu yapabilirsiniz.WP_WidgetKendi özel araçlarınızı oluşturmak için sınıflar kullanabilirsiniz. Miras aldığınız bir sınıftan türetilen bir sınıf oluşturmanız gerekiyor.WP_WidgetSınıfı alın ve onu yeniden yazın.__construct()、widget()、form()和update()Yöntem. Sonra kullanın.register_widget()Fonksiyon çalışıyor.widgets_initKüçük araç sınıfınızı hook içinde kaydedin.
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 alt teması nedir?
- WordPress Eklenti Geliştiricisi Olmak: Sıfırdan Bir’e Kapsamlı Rehber
- Sıfırdan Başlayın: Modern WordPress Tema Geliştirme Sürecinin Tamamı ve En İyi Uygulamaları
- WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Uzmanlığa Kadar Profesyonel Eklentiler Oluşturma