WordPress Eklentileri Temelleri ve Geliştirme Ortamı
WordPress eklentisi geliştirmek için öncelikle bunun ne olduğunu anlamak gerekiyor. Bir eklenti, esasen bir veya daha fazla PHP dosyasından oluşur ve belirli bir formatta başlık yorumları içerir; bu yorumlar sayesinde WordPress’e kendisini tanıtır. Eklentiler, WordPress’in sunduğu zengin API’ler (eylem kancaları, filtreler, veritabanı fonksiyonları vb.) aracılığıyla çekirdek işlevleri genişletir veya değiştirir; bunu yaparken çekirdek kodu değiştirmeye gerek kalmaz.
Geliştirmeye başlamak için bir yerel geliştirme ortamına ihtiyacınız var. Bu ortam genellikle bir yerel sunucu (örneğin XAMPP, MAMP veya Local by Flywheel), PHP (WordPress’in gerektirdiği sürümle uyumlu), bir MySQL veritabanı ve bir kod editörü (örneğin VS Code, PhpStorm) içerir. Geliştirme ve hata ayıklama işlemlerini yerel ortamda yapmanız şiddetle tavsiye edilir; böylece çevrimiçi web sitesine herhangi bir zarar verilmez.
Eklentinin temel dosya yapısı
En basit eklentiler yalnızca bir dosya içerebilir. Ancak kodun net ve sürdürülebilir olması için belirli bir yapıya uymak önerilir. Tipik bir eklenti dizini şunları içerebilir: Ana eklenti dosyası (örneğin…)your-plugin-name.phpBir tane, bir…includesKlasör (çekirdek işlev sınıflarını veya fonksiyonları içeren) ve bir tane daha…adminKlasör (arka planda kullanılan kodların saklandığı yer), bir tane.publicKlasör (ön uç ile ilgili kodların saklandığı), bir tane.assetsJavaScript, CSS ve resimlerin bulunduğu bir klasör; ayrıca isteğe bağlı dil paketleri ve şablon klasörleri de bulunmaktadır.
Tavsiye edilen okuma WordPress eklenti geliştirme eksiksiz rehberi: sıfırdan ileri düzey uygulama eğitimine kadar.。
Ana eklenti dosyası, eklentinin giriş noktasıdır ve dosyanın başındaki yorumlar son derece önemlidir. WordPress, bu yorumları okuyarak yönetim panelinde eklenti bilgilerini görüntüler.
İlk eklentinizi oluşturun.
Klasik bir “Hello World” örneğiyle başlayalım; bu, eklenti oluşturma sürecine ve standartlarına aşina olmanıza yardımcı olacaktır.
Ana eklenti dosyasını yazın.
Öncelikle, WordPress kurulum dizininizin altındaki…wp-content/pluginsKlasörün içinde, örneğin, yeni bir klasör oluşturun.my-first-pluginBu klasör içinde, “php_file_name.php” adında bir PHP dosyası oluşturun.my-first-plugin.php。
Bu dosyayı açın ve aşağıdaki kodu girin. Baştaki eklenti bilgi bloğu (Plugin Header) zorunludur; bu blok, WordPress’e bunun bir eklenti olduğunu bildirir.
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个学习插件开发的示例插件,它将在文章内容顶部显示“Hello World!”。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在文章内容前添加“Hello World”
*
* @param string $content 原始文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_hello_world( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p style="background-color:#f0f0f0; padding:10px;"><strong>Merhaba Dünya! Bu benim ilk eklentim.</strong></p>';
return $custom_text . $content;
}
return $content;
}
add_filter( 'the_content', 'mfp_add_hello_world' ); Dosyayı kaydettikten sonra, WordPress yönetim panelinize giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim”in eklenti listesinde yer aldığını görmelisiniz. Bu eklentiyi etkinleştirin, ardından web sitenizin bir makalesine gidin; “Hello World!” paragrafının makale içeriğinin en üstüne eklendiğini göreceksiniz.
Tavsiye edilen okuma Sıfırdan başlayarak WordPress eklenti geliştirmeyi öğrenmenize yardımcı olacak adım adım bir rehber.。
Koddaki kilit öğeleri anlamak
Bu kod, WordPress geliştirmenin temel kavramlarından biri olan “Filtreler”i (Filters) göstermektedir. Bir fonksiyon tanımladık.mfp_add_hello_worldMakalenin içeriğini alır$contentBir parametre olarak alın ve değiştirilmiş içeriği geri döndürün. Daha sonra, bunu kullanırız.add_filter()Bu fonksiyon, özel olarak oluşturulan bu fonksiyonu WordPress çekirdeğine bağlar (yani WordPress’in temel kod yapısına entegre eder).the_contentBu filtre, WordPress’in işlemlerini yürütürken kullanılıyor.the_content()Bu durumda, bu kancaya (hook) bağlanmış tüm fonksiyonlar sırayla çalıştırılır ve bu sayede çıktıyı değiştirmemize olanak tanınır.
Kod içindeki koşul kontrolü (condition judgment)is_single() && in_the_loop() && is_main_query()Değişikliklerimizin yalnızca ana sorgudaki tek bir makale üzerinde etkili olmasını ve makale listesi sayfası veya diğer yerleri etkilememesini sağlamak için bu yapılmaktadır. Bu, verimli ve yan etkisiz eklentiler yazmanın önemli bir uygulamasıdır.
Eklenti Çekirdek Geliştirme Teknolojileri
Güçlü ve profesyonel eklentiler geliştirmek için, WordPress’in sunduğu birkaç temel API’yi öğrenmek zorunludur.
Action Hook’ları ve Filter Hook’ları Kullanmak
Kancalar (Hooks), WordPress eklenti mimarisinin temel taşlarından biridir. İki türe ayrılırlar: Eylemler (Actions) ve Filtreler (Filters). Eylem kancaları, belirli yürütme noktalarında (örneğin makale yayınlanırken, yönetim paneli yüklenirken) tetiklenir ve bazı kodları çalıştırmanıza olanak tanır. Filtre kancaları ise verileri (örneğin makale içeriği, başlık) değiştirmenize izin verir ve ardından bu veriler WordPress tarafından kullanılır.
Kullanın.add_action()Montaj işlemleri gerçekleştirmek için kullanılır. Örneğin, bir eklenti etkinleştirildiğinde veritabanı tabloları oluşturmak yaygın bir ihtiyaçtır:
function mfp_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_data';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
data varchar(255) NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'mfp_create_custom_table' ); Burada kullanılmıştır.register_activation_hookBu, eklentinin etkinleştirildiğinde gerçekleştirilecek işlemleri belirtmek için kullanılan özel bir kayıt fonksiyonudur.
Tavsiye edilen okuma Sıfırdan başlayarak: Neden WordPress eklenti geliştirmeyi seçmelisiniz?。
Yönetim menüsü ve ayar sayfaları oluşturun.
Eklentiniz için bir arka plan ayarları sayfası sağlamak, profesyonel bir eklentinin belirleyici özelliklerindendir. WordPress’in Settings API’sini kullanarak, seçenek sayfalarını güvenli ve standart bir şekilde oluşturabilirsiniz.
Aşağıdaki kod, “Ayarlar” ana menüsüne nasıl bir alt menü sayfası ekleneceğini göstermektedir:
// 在管理后台初始化时添加菜单
add_action( 'admin_menu', 'mfp_add_admin_menu' );
function mfp_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-plugin-settings', // 菜单slug
'mfp_render_settings_page' // 用于渲染页面的回调函数
);
}
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( 'my-plugin-settings' ); // 输出设置区域
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
}
// 初始化设置
add_action( 'admin_init', 'mfp_settings_init' );
function mfp_settings_init() {
register_setting( 'mfp_settings_group', 'mfp_options' ); // 注册一个设置选项组
add_settings_section(
'mfp_section_basic',
'基本设置',
null,
'my-plugin-settings'
);
add_settings_field(
'mfp_field_text',
'示例文本框',
'mfp_field_text_render',
'my-plugin-settings',
'mfp_section_basic'
);
}
function mfp_field_text_render() {
$options = get_option( 'mfp_options' );
?>
<input type='text' name='mfp_options[text_field]' value='<?php echo esc_attr( $options['text_field'] ?? '' ); ?>'>
<p class="description">Bu, bir örnek metin kutusudur.</p>
<?php
} Eklenti Güvenliği, Uluslararasılaştırma ve Yayın Hazırlığı
Geliştirilen eklentiler, kullanıma sunulmadan önce güvenlik açıklarından arındırılmalı, uluslararası kullanıma uygun hale getirilmeli ve uygun bir şekilde paketlenmelidir.
Veri Doğrulama, Kod Kurtarma ve Güvenlik
Kullanıcı girdilerine veya harici verilere asla güvenmeyin. Tüm…$_GET、$_POST、$_REQUESTVeritabanından alınan verilerin de, kullanılmadan önce mutlaka doğrulanması (Validation) ve kaçırılması (Escaping) gerekmektedir.
- Doğrulama: Verilerin beklenen formata uygun olup olmadığını kontrol edin (örneğin, bir e-posta adresi veya sayı olup olmadığı). Bunu `is_email`, `is_digit` gibi fonksiyonlar kullanarak yapabilirsiniz.
is_email()、intval()、sanitize_text_field()。 - Eşleştirme: Verileri HTML, JavaScript veya URL'ye çıktı olarak verirken, XSS saldırılarını engellemek için özel karakterlerin doğru şekilde işlenmesini sağlayın. Aşağıdaki gibi fonksiyonlar kullanın:
esc_html()、esc_js()、esc_url()、wp_kses_post()。
SQL sorgularında, mutlaka kullanılmalıdır.$wpdb->prepare()SQL enjeksiyonunu önlemek için parametre hazırlıklarını belirli bir yöntemle yapın.
Eklentiyi uluslararası hale getirmek (plugin internationalization)
Uluslararasılaştırma (i18n), eklentinizin diğer dillere çevrilebilmesini sağlar. Bu işlem iki adımdan oluşur: Çevrilebilir metinlerin belirlenmesi ve metin dosyalarının yüklenmesi.
Öncelikle, ana eklenti dosyasının baş kısmında zaten tanımlanmıştır.Text Domain和Domain PathDaha sonra, eklentide çevrilmeye ihtiyaç duyan tüm metinlerin bulunduğu yerlerde, çeviri fonksiyonunu kullanarak bu metinleri sarın. Örneğin:__('Hello World', 'my-first-plugin')PHP’de çevirileri ekrana yazdırmak için kullanılır.esc_html_e('Settings', 'my-first-plugin')Kaçış karakteri olarak kullanılır ve ardından orijinal metin yeniden gösterilir.
Eklenti başlatıldığında (örneğin kullanıldığında)init(Bu eylem için çeviri dosyasının yüklenmesi gerekmektedir:
function mfp_load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'init', 'mfp_load_textdomain' ); Daha sonra, Poedit gibi araçları kullanarak oluşturabilirsiniz..potŞablon dosyası, çevirmenlerin kullanımı için hazırlanmıştır..po/.moDil dosyası.
Son Kontrol ve Paketleme
Yayınlamadan önce, lütfen aşağıdaki kontrolleri yapın:
1. Kod, WordPress’in kodlama standartlarına uygundur.
2. Tüm özellikler, etkinleştirme, devre dışı bırakma ve kaldırma işlemleri de dahil olmak üzere kapsamlı bir şekilde test edilmiştir.register_uninstall_hookVerileri temizleyin.
3. Tüm hata ayıklama kodları ve geçici çıktılar kaldırıldı.
4. Ayrıntılı bir şey oluşturuldu.readme.txtDosyanın formatı WordPress’in resmi gereksinimlerine uygun olmalıdır; aksi takdirde eklenti dizinindeki sayfada görüntülenmeyecektir.
5. Eklenti dizini adlarının ve ana dosya adlarının benzersiz olmasını sağlayın; diğer eklentilerle çakışmaları önleyin.
Son olarak, tüm eklenti klasörünü bir ZIP dosyası olarak sıkıştırın. Böylece WordPress arayüzü üzerinden doğrudan yükleyebilir veya WordPress’in resmi eklenti dizinine gönderebilirsiniz.
Özetle.
WordPress eklenti geliştirme, yaratıcılığı işlevselliklere dönüştürme sürecidir ve bu süreç, WordPress’in temel yapısına (özellikle de hook API’sine) derin bir anlayışa dayanır. Basit bir “Hello World” eklentisi oluşturarak başlayarak, yönetim arayüzleri oluşturmayı, verileri güvenli bir şekilde işlemeyi, veritabanlarıyla etkileşim kurmayı ve sonunda uluslararasılaştırmayı öğrenmek, her eklenti geliştiricisinin gelişim yoludur. Güvenli kodlama standartlarına uymak ve Settings API gibi standart arayüzleri kullanmak, eklentinin kalitesini, uyumluluğunu ve güvenliğini sağlamanın anahtarıdır. Sürekli pratik yaparak ve çekirdek kod ile diğer mükemmel eklentilere bakarak, profesyonel, güvenilir ve popüler WordPress eklentileri geliştirebilirsiniz.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?
Temel PHP programlama bilgisine sahip olmanız, HTML, CSS ve JavaScript’i anlamanız gerekmektedir. WordPress’in temel işlemleriyle (makaleler, sayfalar, menülerin yönetimi) aşina olmanız ve makale türleri, kategoriler, meta veriler gibi temel kavramları bilmek, geliştirme sürecinde büyük yardımcı olacaktır. Ayrıca MySQL veritabanı hakkında temel bilgilere sahip olmanız da faydalı olacaktır.
WordPress eklentimizi nasıl hata ayıklarız?
Öncelikle, 'den emin olun.wp-config.phpDosyada etkinleştirildi.WP_DEBUG和WP_DEBUG_LOGBu şekilde hata mesajları günlük dosyasına kaydedilir ve ziyaretçilere doğrudan gösterilmez. İkincisi, kullanılabilir.error_log()Fonksiyon, özelleştirilmiş hata ayıklama bilgilerini günlüğe yazar. Karmaşık mantık için, Xdebug gibi profesyonel hata ayıklama araçlarını IDE’lerle (örneğin PhpStorm) birlikte kullanmak en verimli yöntemdir.
Eklentim, üçüncü parti hizmetlerle (örneğin API’lerle) nasıl iletişim kurabilir?
WordPress, güçlü bir HTTP API sunar (örneğin…).wp_remote_get()、wp_remote_post()Bu araç, HTTP isteklerini işlemek için kullanılır ve yerel PHP fonksiyonlarına kıyasla daha üstündür.file_get_contents()Veya cURL, daha güvenli ve daha iyi bir uyumluluğa sahiptir. Bu fonksiyonları kullanırken olası hataları işlemeyi ve uygun bir zaman aşımı süresi ayarlamayı unutmayın. Sık sık çağrılması gereken API’ler için, performansı artırmak amacıyla Geçici (Transient) API’ler kullanmayı düşünebilirsiniz.
Eklentilerdeki sınıflar ve fonksiyonlar, çakışmaları önlemek için nasıl adlandırılmalıdır?
Diğer eklentilerin veya temaların fonksiyon adları, sınıf adlarıyla çakışmaları önlemek için benzersiz bir önek kullanmak zorundasınız. Genellikle, eklentinin kısaltması veya tam adı önek olarak kullanılması önerilir. Örneğin, eklentiniz “Super Tool” adını taşıyorsa, fonksiyon adları şu şekilde olabilir:stool_save_data()Sınıf adları şu şekilde olabilir:Super_Tool_AdminDaha modern ve güvenli bir yöntem, PHP ad alanlarını (Namespaces) kullanmaktır. Bu yöntem için eklentinizin çalıştığı ortamın PHP 5.3 veya daha yeni bir sürümü desteklemesi gerekmektedir.
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.
- Web Sitesi Kurma Sürecinin Tam Analizi: Sıfırdan Hayata Geçişe Kadar Teknik Uygulamalar ve SEO Optimizasyon Rehberi
- 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
- Kurumsal Web Sitesi Oluşturma Kılavuzu: Sıfırdan Başlayarak Profesyonel Seviyede Geliştirme Sürecinin Tam Analizi
- Web Sitesi Kurma: Başlangıçtan Uzmanlığa: Profesyonel Web Siteleri Oluşturmak İçin Kapsamlı Pratik Rehber ve Teknik Analiz