İnternetin geniş dünyasında, WordPress güçlü genişletilebilirliği sayesinde içerik yönetim sistemleri arasında önemli bir yere sahiptir. Bu genişletilebilirliğin temelini oluşturan ise eklentilerdir. WordPress eklentileri sayesinde, web sitenize hayal edebileceğiniz her türlü özelliği ekleyebilirsiniz. Bu makale, sıfırdan başlayarak ilk WordPress eklentinizin nasıl oluşturulacağını adım adım gösterecek ve eklentilerin temel yapısını ile geliştirme sürecini derinlemesine anlamanıza yardımcı olacaktır.
WordPress Eklentileri Temelleri ve Geliştirme Ortamı Kurulumu
Kodlamaya başlamadan önce, WordPress eklentilerinin doğasını anlamak ve uygun bir geliştirme ortamı oluşturmak çok önemlidir. Bir eklenti, esasen WordPress standartlarına uygun bir veya daha fazla PHP dosyasından oluşur ve belirli bir işlevi yerine getirmek için kullanılır.钩子(Hooks) Çekirdek sistemlerle etkileşim kurar.
Eklentinin temel tanımı
Her eklentinin benzersiz bir ana dosyası olmalı ve bu dosyanın baş kısmında, eklentinin bilgilerini belirten ve belirli bir biçimde yazılmış bir yorum bulunmalıdır. Bu yorum, WordPress’in eklenti yönetim sayfasında eklentinin adını, açıklamasını, sürümünü ve diğer meta verilerini tanımasını ve göstermesini sağlar.
Tavsiye edilen okuma Eklenti geliştirmenin sırları: ilk uzantınızı sıfırdan oluşturun.。
Yerel Geliştirme Ortamı Ayarları
Geliştirmeyi verimli ve güvenli bir şekilde yürütmek için yerel sunucu ortamını kullanmanız şiddetle tavsiye edilir. XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları tercih edebilirsiniz. Temel gereksinimler; PHP’nin (hedef sunucunuzla uyumlu bir sürümünün) kurulması, MySQL/MariaDB ve Apache/Nginx’in yüklü olmasıdır. Daha sonra, en yeni WordPress çekirdek dosyalarını indirip kurulumunu tamamlamanız gerekir.
İlk eklentinizi oluşturun: Selamlaşma Aracı
Şimdi, basit bir eklenti oluşturmaya başlayalım. Bu eklentinin işlevi, web sitesindeki makalelerin sonuna otomatik olarak özelleştirilmiş bir selam mesajı eklemektir.
Öncelikle, WordPress’te… wp-content/plugins Dizin içinde, “” adında yeni bir klasör oluşturun. my-first-greeting-pluginDaha sonra, bu klasör içinde ana PHP dosyasını oluşturabilirsiniz; dosyanın adı “main.php” olabilir. my-first-greeting-plugin.php。
Eklenti Başlık Bilgisi Beyanı
Ana dosyayı açın ve eklentiyi tanımlamak için aşağıdaki kodu girin:
<?php
/**
* Plugin Name: 我的第一个问候语插件
* Plugin URI: https://yourwebsite.com/my-first-greeting-plugin
* Description: 这是一个练习用的插件,用于在文章末尾添加问候语。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-greeting-plugin
*/ Dosyayı kaydettikten sonra, WordPress yönetim panelinin “Eklentiler” sayfasına gidin. Yeni eklenen eklentiyi eklenti listesinde görmelisiniz ve onu etkinleştirebilirsiniz. Elbette, şu an için herhangi bir özelliği yok.
Tavsiye edilen okuma WooCommerce E-ticaret Sitelerinin Performansını Optimize Etmenin 10 Temel Tekniği ve Pratik Rehberi。
Köklü özellikleri eklemek için hook’lar kullanın.
WordPress’ün çalışması, “kancalar” (hooks) mekanizmasına büyük ölçüde bağlıdır ve bu mekanizma şu şekilde ayrılır:动作钩子(Eylem Kancaları) ve过滤器钩子(Filtre Kancaları – Filter Hooks): Makale içeriğinin ardına metin eklemek istiyoruz ve bunun için belirli fonksiyonları kullanmamız gerekiyor. the_content Bu filtre hook’u.
Ana dosyanın başlık kısmındaki yorumların hemen altına aşağıdaki fonksiyonları ve işlevleri ekleyin:
// 定义向文章内容添加问候语的函数
function mfgp_add_greeting_to_content( $content ) {
// 确保只在主循环的单篇文章页面显示
if ( is_single() && in_the_loop() && is_main_query() ) {
$greeting = '<p style="color:#666; font-style:italic;">Bu makaleyi okuduğunuz için teşekkür ederiz! Güzel bir gün geçirmenizi dileriz!</p>';
$content .= $greeting;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器钩子上
add_filter( 'the_content', 'mfgp_add_greeting_to_content' ); Dosyayı kaydedip eklentiyi aktive ettikten sonra, web sitesindeki herhangi bir makaleyi açın ve sayfanın sonuna kadar kaydırın; eklenen selamı görmelisiniz. Bu basit örnek sayesinde, eklenti geliştirmedeki en temel kavramları uygulamış oldunuz: eklentiyi tanımlamak, işlevsel fonksiyonlar yazmak ve…add_filter或add_actionFonksiyonu doğru kancaya (hook) monte edin.
Eklenti özellikleri geliştirildi: Yönetim ayarları sayfası eklendi.
Olgun bir eklenti genellikle kullanıcıların arka planda yapılandırmalar yapmasına izin verir. Şimdi, selamlaşma eklentisine basit bir ayar sayfası ekleyeceğiz; böylece yöneticiler gösterilecek metni özelleştirebilecekler.
Yönetim menü öğesini oluşturun.
Öncelikle, kullanmamız gereken şeyler…add_actionBir kancalar (hook), bir fonksiyonu çağırır ve bu fonksiyon daha sonra belirli işlemleri gerçekleştirir. add_options_page Bu fonksiyon, WordPress arayüzünün “Ayarlar” menüsüne bir alt sayfa ekler.
Ana dosyaya aşağıdaki kodu eklemeye devam edin:
Tavsiye edilen okuma Sıfırdan Bir: WordPress Eklenti Geliştirme Kapsamlı Rehberi ve Pratik Eğitim Kursu。
// 添加设置菜单
function mfgp_add_admin_menu() {
add_options_page(
'问候语插件设置', // 页面标题
'自定义问候语', // 菜单标题
'manage_options', // 权限要求(管理员)
'my-greeting-plugin', // 菜单 Slug
'mfgp_settings_page_html' // 用于输出页面内容的回调函数
);
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' ); Ayarlama sayfasını oluşturma ve verileri kaydetme işlemleri
Şimdi, yukarıdaki geri çağırma fonksiyonunu tanımlamamız gerekiyor. mfgp_settings_page_html Sayfa ayarlarını görüntülemek ve HTML formunu işlemek, ayrıca form verilerinin kaydedilmesini sağlamak gerekiyor. WordPress, bu işlemi kolaylaştırmak için bir ayar API’si sunar; ancak süreci daha iyi anlamak adına önce temel yöntemleri kullanacağız.
// 定义设置页面的 HTML 结构
function mfgp_settings_page_html() {
// 检查用户权限
if ( !current_user_can( 'manage_options' ) ) {
return;
}
// 处理表单提交(非设置API方式)
if ( isset( $_POST['mfgp_greeting_text'] ) ) {
// 验证 Nonce 确保请求来源安全
check_admin_referer( 'mfgp_save_settings' );
// 清理并保存输入的数据
$greeting_text = sanitize_textarea_field( $_POST['mfgp_greeting_text'] );
update_option( 'mfgp_custom_greeting', $greeting_text );
echo '<div class="notice notice-success is-dismissible"><p>Ayarlar kaydedildi!</p></div>';
}
// 获取已保存的问候语
$saved_greeting = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
?>
<div class="wrap">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form method="post" action="">
<?php wp_nonce_field( 'mfgp_save_settings' ); ?>
<table class="form-table">
<tr>
<th scope="row"><label for="mfgp_greeting_text">Özelleştirilmiş selamlaşma mesajı</label></th>
<td>
<textarea name="mfgp_greeting_text" id="mfgp_greeting_text" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_greeting ); ?></textarea>
<p class="description">Bu metin, her makalenin sonunda görüntülenecektir.</p>
</td>
</tr>
</table>
<?php submit_button( '保存更改' ); ?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Ön uç çıktı fonksiyonunu güncelle
Son olarak, önceki ön uç çıktı fonksiyonunu değiştirmemiz gerekiyor; böylece bu fonksiyon veritabanındaki seçeneklerden veri alabilecek.get_optionSelamlama mesajlarını, sabit olarak kodlanmış metinler yerine bu dosyalardan okuyun.
function mfgp_add_greeting_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
// 从数据库选项中获取问候语,如果没有则使用默认值
$greeting_text = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
if ( ! empty( $greeting_text ) ) {
$greeting = '<p style="color:#666; font-style:italic;">' . esc_html( $ebrik_metni ) . '</p>';
$content .= $greeting;
}
}
return $content;
} Artık, yöneticiler “Ayarlar” -> “Özel Selamlama Mesajı” sayfasında görüntülenen metni istedikleri gibi değiştirebilirler ve ön uçtaki gösterim anında güncellenir.
Eklenti yayın hazırlıkları: Uluslararasılaştırma ve güvenlik güçlendirmeleri
Eklentiyi başkalarıyla paylaşmadan veya resmi kataloga göndermeden önce, özellikle uluslararasılaştırma ve güvenlik iyileştirmeleri konusunda bazı önemli işlemler yapılması gerekmektedir.
Metnin uluslararasılaştırılmasını gerçekleştirmek
Uluslararasılaştırma (i18n), eklentinizin diğer dillere çevrilebilmesini sağlar. Kullanıcıya yönelik tüm metinleri belirli fonksiyonlar kullanarak sarmanız gerekir. Eklentimizdeki metinleri şu şekilde değiştirin:
1. Eklentinin baş kısmındaki yorumlarda zaten tanımladık. Text Domain。
2. Kod içinde kullanın. () 或 esc_html() Bir fonksiyon, bir dizeyi sarar (yani dizeyi alır ve üzerinde işlemler yapar). Örneğin:
// 在设置页面函数中
$greeting_text = get_option( 'mfgp_custom_greeting', __( ‘感谢您阅读本文!祝你拥有美好的一天!’, ‘my-first-greeting-plugin’ ) );
echo ‘<h1>’ . esc_html__( ‘问候语插件设置’, ‘my-first-greeting-plugin’ ) . ‘</h1>’// Ön uç çıktı fonksiyonunda (Dikkat: Ön uç çıktısının genellikle çevrilmesine gerek yoktur, ancak bir tema veya kullanıcı kararıyla farklı olabilir)
// Ancak selamlama ifadesinin kendisi birden fazla dilde olması gerekiyorsa, daha karmaşık bir mantığa ihtiyaç duyulabilir. 3. Poedit gibi araçlar kullanarak oluşturun. .pot Şablon dosyası; çevirmenler bu dosyaya dayanarak içerikler oluşturabilirler. .po 和 .mo Dosya.
Güvenlik önlemlerini güçlendirin.
Güvenlik son derece önemlidir. Bazı güvenlik fonksiyonları kullanmış bulunuyoruz, örneğin…sanitize_textarea_field、esc_html、esc_textarea和wp_nonce_fieldAyrıca, şunlara da dikkat etmek gerekmektedir:
* 权限检查:在管理页面函数开始处使用 current_user_can Kontrol edin.
* 数据验证与清理:对所有用户输入(如 $_POST, $_GET)进行验证(是否符合预期格式)和清理(移除非法字符)。
* 非竞态条件更新:对于重要的选项,考虑使用 wp_options Tablo oluştururken daha güvenli bir yöntem, Settings API’sini kullanmaktır; bu API, rekabetçi olmayan (nonce) değerler ve yetki kontrollerini içerir.
Özetle.
Bu kılavuz aracılığıyla, bir WordPress eklentisinin oluşturulmasından yayınlanmasına kadar olan tüm süreci tamamladık. Eklentilerin temellerini anlamakla başladık ve standart başlık bilgileri içeren bir ana dosya oluşturduk; ardından, basit bir selamlaşma özelliği aracılığıyla WordPress’in en temel “hook” (düğüm) mekanizmasını uyguladık; daha sonra eklentimize bir arka plan ayarları sayfası ekleyerek kullanıcıların ayar yapabilmesini sağladık; son olarak, yayınlamadan önceki önemli adımları, yani uluslararasılaştırmayı ve güvenliği güçlendirmeyi inceledik. Her adımda, WordPress’in temel fonksiyonları ve en iyi uygulamaları yer aldı. Bu temel bilgileri öğrendikten sonra, daha karmaşık ve yaratıcı eklentiler geliştirmeyi deneyebilir ve dünya çapındaki WordPress ekosistemine katkıda bulunabilirsiniz.
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 ve CSS’yi anlamanız gerekmektedir. Ayrıca WordPress’in temel işlemleriyle (makaleler, sayfalar, menüler vb.) ilgili bilgilere sahip olmanız beklenir. Nesne yönelimli programlama (OOP) konusunda bilgi sahibi olmanız zorunlu değildir; ancak büyük eklentiler geliştirmenizde büyük fayda sağlayacaktır.
Neden eklentim etkinleştirildikten sonra arka plan menüsünde görünmüyor?
En yaygın neden, yetki sorunlarıdır. Lütfen fonksiyonu çağırdığınızda ilgili yetkilerin doğru olduğundan emin olun.add_options_pageBenzer fonksiyonlar kullanılırken, ikinci parametre (capability) doğru şekilde ayarlanmış mıdır? ‘manage_options’Ayrıca, fonksiyonunuzun doğru bir şekilde geçirildiğinden emin olun.add_action( ‘admin_menu’, ...)Kancalar monte edildi ve hiçbir dilbilgisi hatası, fonksiyonun çalışmamasına neden olmadı. Kodun başına bunu ekleyebilirsiniz.error_logBu fonksiyonu hata ayıklamak için kullanabilirsiniz.
WordPress eklentimizi nasıl hata ayıklarız?
Öncelikle, emin olun ki sizin… wp-config.php Dosyada WordPress hata ayıklama modu etkinleştirilmiştir: define( ‘WP_DEBUG’, true ); 和 define( ‘WP_DEBUG_LOG’, true );Bu şekilde hata mesajları kaydedilecektir. /wp-content/debug.log Dosyada. İkincisi, tarayıcı geliştirici araçlarının “Konsol” ve “Ağ” sekmelerini kullanarak ön uç hatalarını ayıklayabilirsiniz. Karmaşık mantıklar için…error_log( print_r( $variable, true ) );Değişken değerlerini loglara yazmak yaygın bir yöntemdir.
Eklentim diğer eklentiler veya temalarla nasıl uyumlu olur?
Mümkün olan en yüksek uyumluluğu sağlamak için eklentiniz şunları yapmalıdır: 1) Tüm fonksiyonları, sınıfları, değişkenleri ve seçenekleri benzersiz bir önek kullanarak adlandırmalısınız (tıpkı bizim yaptığımız gibi).mfgp_1) Adlandırma çakışmalarını önlemek için.
2) Ön veya arka uç stilini değiştirmeden önce mümkün olduğunda benzersiz seçici sınıf adları kullanın.
3) Mümkün olduğunda filtre kancaları sağlayın.apply_filtersDiğer geliştiricilerin eklentinizin davranışlarını değiştirmesine izin verin. 4) WordPress'in temel veritabanı tablolarını veya dosyalarını doğrudan değiştirmekten kaçının.
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.
- Profesyonel web sitelerini kolayca oluşturun: WordPress’ten başlayarak ustalığa ulaşmanız için kapsamlı bir rehber
- WooCommerce Kılavuzu: Sıfırdan Başlayarak Güçlü Bir WordPress E-Ticaret Sitesi Oluşturma
- 2026 SEO Optimizasyonu Pratik Rehberi: Başlangıçtan Uzmanlığa Kadar Sistematik Stratejiler
- WordPress Temel Başlangıç Kılavuzu: Sıfırdan İlk Profesyonel Web Sitenizi Oluşturun
- Neden bir çevrimiçi mağaza oluşturmak için WooCommerce kullanmalıyız?