Neden kendi WordPress eklentinizi geliştirmeyi seçtiniz?
WordPress’in dünyanın en popüler içerik yönetim sistemi olmasının arkasında, güçlü eklenti yapısı büyük bir rol oynamaktadır. Eklentiler, geliştiricilere çekirdek kodu değiştirmeden web sitelerine neredeyse her türlü özellik eklemelerine olanak tanır. Kendi eklentilerinizi geliştirerek, son derece özelleştirilmiş ihtiyaçları karşılayabilir, belirli iş sorunlarını çözebilir, web sitesinin performansını artırabilir ve hatta bu çözümleri ürün haline getirip toplulukta veya pazarda paylaşabilirsiniz. Eklenti geliştirme becerilerine sahip olmak, WordPress’in işleyişini derinlemesine kontrol edebileceğiniz anlamına gelir; pasif bir tema kullanıcısından aktif bir özellik yaratıcısına dönüşebilirsiniz.
WordPress’in eklenti mimarisini anlamak ilk adımdır. Tüm eklentiler aşağıdaki yerde bulunur:/wp-content/plugins/Dizin içinde, her eklentinin kendine ait bir klasörü vardır. WordPress, bu dizindeki ana PHP dosyalarını tarayarak eklentileri tanır ve yükler. Bu modüler tasarım, işlevlerin ayrılmasını, güvenliğini ve sürdürülebilirliğini sağlar.
İlk WordPress eklentinizi oluşturun.
Eklenti oluşturmak için temel dosya yapısını oluşturma
En basit WordPress eklentisi bile en az bir ana PHP dosyasına ihtiyaç duyar. Öncelikle, adı “main.php” olan bir dosya oluşturalım…my-first-pluginBelirtilen klasöre gidin ve içinde ana dosyayı oluşturun.my-first-plugin.phpBu dosyanın başlık kısmındaki yorumlar çok önemlidir; çünkü WordPress’e eklentinin meta bilgilerini sağlamak için kullanılırlar.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Özel Özellikler Oluşturma。
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习WordPress插件开发的示例插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Yukarıdaki kodu içeren dosyayı şu klasöre koyun:/wp-content/plugins/Daha sonra WordPress arayüzünün “Eklentiler” sayfasına girin; orada bu eklentiyi görebilir ve etkinleştirebilirsiniz. Şu an için herhangi bir özelliği olmasa da, uygun bir eklenti çerçevesi oluşturmayı başardınız.
Eklentiye basit bir özellik ekleyin.
Bu eklentiye temel bir özellik ekleyelim: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyin. Bunun için WordPress’in filtre kancalarını (filter hooks) kullanmamız gerekecek.the_content。
在my-first-plugin.phpBaşlık yorumunun hemen altına aşağıdaki kodu ekleyin:
// 在文章内容后添加自定义文本
function myfp_add_footer_text( $content ) {
// 确保只在主循环的单篇文章页面添加
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = '<p><em>Bu makaleyi okuduğunuz için teşekkür ederiz. Sizlere “Benim İlk Eklentim” tarafından sunulmuştur.</em></p>';
$content .= $footer_text;
}
return $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. Fonksiyon içinde koşullu etiketler aracılığıyla işlem yapılır.is_single()Bu değerlendirmeleri yaparak, metnin yalnızca tek bir makale sayfasına eklendiğinden emin olun. Son olarak…add_filter()Fonksiyon, bizim özelleştirdiğimiz fonksiyonu sisteme monte eder.the_contentBu filtreyi kullanarak bir dosya kaydettikten sonra, herhangi bir makaleyi incelediğinizde, eklediğimiz metnin artık makalenin alt kısmında yer aldığını göreceksiniz.
WordPress eklenti geliştirme konusunda en iyi uygulamalara uyun.
Kod güvenliğini ve veri doğrulamasını sağlayın.
Eklentilerde kullanıcı girdilerini veya çıktı verilerini işlerken güvenlik en öncelikli konudur. WordPress, geliştiricilere veri doğrulama, kod dönüştürme ve temizleme işlemleri için birçok fonksiyon sunar. Kesinlikle bu fonksiyonları doğrudan kullanmayın.$_GET、$_POST或$_REQUESTDeğişkenler.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Üzerine Derinlemesine Analiz: Sıfırdan Özelleştirilmiş İşlevler Oluşturarak Eklenti Genişletme。
Örneğin, bir ID’yi bir URL parametresinden alıp veritabanı sorgusunda kullanırken şu şekilde yapılmalıdır:
// 安全地获取并验证一个URL整数参数
$item_id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : 0;
if ( $item_id > 0 ) {
// 使用 $item_id 进行安全查询
global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE id = %d", $item_id );
$result = $wpdb->get_row( $query );
} Burada,absint()Fonksiyon, girdiyi zorunlu olarak negatif olmayan bir tamsayıya dönüştürür.$wpdb->prepare()Bu yöntem, SQL enjeksiyon saldırılarını önlemek için SQL ifadelerini güvenli bir şekilde hazırlamak amacıyla kullanılır. HTML sayfalarına çıkarılan her türlü dinamik veri için bu yöntemin kullanılması gerekir.esc_html()、esc_attr()或wp_kses_post()Bu fonksiyonlar, karakterlerin özel anlamlarını ortadan kaldırmak için kullanılır (yani “escape” işlemi yapılır).
Çevirilebilir ve uluslararasılaştırılabilir destek sağlamak
Eklentinizin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için uluslararasılaştırma (i18n) şarttır. Bu, tüm kullanıcıya yönelik metin dizelerinin WordPress’in çeviri fonksiyonları aracılığıyla işlenmesini gerektirir.
Daha önce eklenen metni çevirmeyi destekleyecek şekilde kodu değiştirin.
function myfp_add_footer_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
// 使用 __() 函数使字符串可翻译
$footer_text = sprintf(
'<p><em>%s</em></p>',
esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' )
);
$content .= $footer_text;
}
return $content;
} Biz kullanıyoruz.esc_html__( ‘字符串’, ‘text-domain’ )Gelen metni paketleyin. Bunun içinde…my-first-pluginBu, eklentinin baş kısmında tanımlanan bir metin alanıdır (Text Domain) ve çevirilerin bağımsızlığını sağlar. Daha sonra, çevirmenler bu alanı kullanabilirler..potBu dosya, eklentiniz için farklı dillerde içerikler oluşturmanıza olanak tanır..moÇeviri dosyası.
Sürdürülebilir kod yazmak ve nesne yönelimli programlama kullanmak
Basit eklentiler için prosedürsel programlama yeterli olabilir. Ancak işlevleri karmaşık olan eklentiler için nesne yönelimli programlama (OOP) kullanmak, kodu daha iyi organize etmeye, okunabilirliği ve sürdürülebilirliği artırmaya yardımcı olur.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Gerçek Uygulamalara Kadar Özel İşlevler Oluşturma。
Aşağıda, eklentimizi sınıflar kullanarak yeniden yapılandıran bir örnek bulunmaktadır:
class My_First_Plugin {
/**
* 构造函数,用于初始化动作和过滤器
*/
public function __construct() {
add_action( 'init', array( $this, 'load_textdomain' ) );
add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
}
/**
* 加载插件文本域用于国际化
*/
public function load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
/**
* 在文章内容后添加文本
*/
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = sprintf(
'<p><em>%s</em></p>',
esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' )
);
$content .= $footer_text;
}
return $content;
}
}
// 初始化插件类
new My_First_Plugin(); İşlevleri bir araya getirerek (kapsüllenerek)…My_First_PluginSınıflarda kod yapısı daha net hale gelmiştir; bu sayede genel (global) ad alanlarının neden olduğu sorunlar önlenebilmiş ve işlevlerin genişletilmesi daha kolay hale gelmiştir.
Eklentiye yönetim arayüzü ve ayar seçenekleri ekleyin.
Yönetim menüsü ve seçenek sayfası oluşturun.
Birçok eklenti, kullanıcılara yapılandırma seçenekleri sunmayı gerektirir. WordPress, arka planda menü ve alt menü sayfaları eklemek için bir API sağlar. Kullanılmasını öneririz.add_options_page()Fonksiyon, eklentinin ayar sayfasını “Ayarlar” ana menüsüne ekler; bu da WordPress’in kullanıcı deneyimi standartlarına uygundur.
class My_First_Plugin_Admin {
public function __construct() {
add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
add_action( 'admin_init', array( $this, 'register_settings' ) );
}
public function add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的第一个插件', // 菜单标题
'manage_options', // 所需权限
'myfp-settings', // 菜单slug
array( $this, 'render_settings_page' ) // 回调函数
);
}
public function register_settings() {
register_setting( 'myfp_settings_group', 'myfp_footer_text' );
add_settings_section( 'myfp_main_section', '主要设置', null, 'myfp-settings' );
add_settings_field( 'myfp_text_field', '页脚文本', array( $this, 'render_text_field' ), 'myfp-settings', 'myfp_main_section' );
}
public function render_text_field() {
$value = get_option( 'myfp_footer_text', '默认的感谢文本。' );
echo '<input type="text" name="myfp_footer_text" value="' . esc_attr( $value ) . '" class="regular-text" />';
}
public function 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( 'myfp_settings_group' );
do_settings_sections( 'myfp-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
}
}
// 仅在管理后台加载管理类
if ( is_admin() ) {
new My_First_Plugin_Admin();
} Eklenti özelliklerini ayar seçenekleriyle bağlantılı hale getirin.
Ayar sayfası oluşturulduktan sonra, ön uç işlevlerini değiştirmemiz gerekiyor; böylece kullanıcıların kaydettiği seçenek değerleri kullanılacak ve sabit olarak kodlanmış metinler yerine bunlar kullanılacaktır.
Güncellemeden önceMy_First_Pluginclass içindekiadd_footer_to_contentYöntem:
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
// 从数据库选项获取用户自定义的文本,如果不存在则使用默认翻译
$saved_text = get_option( 'myfp_footer_text' );
$footer_text = ! empty( $saved_text ) ? esc_html( $saved_text ) : esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' );
$content .= sprintf( '<p><em>%s</em></p>', $footer_text );
}
return $content;
} Artık, eklentinin alt kısmındaki metin arka plan ayarları sayfası aracılığıyla özelleştirilebilmektedir. Bu sayede işlevler ile yapılandırmalar birbirinden ayrılmış olup, eklentinin esnekliği büyük ölçüde artırılmıştır.
Özetle.
WordPress eklenti geliştirme, temel altyapıyı anlamaktan başlayarak güvenlik, uluslararasılaştırma, kod organizasyonu ve kullanıcı etkileşimi konularına doğru adım adım ilerleyen bir süreçtir. Önemli olan, WordPress’in kodlama standartlarına ve topluluk tarafından belirlenen en iyi uygulamalara uymaktır; bu standartlar arasında sağlanan “eylemler” (Actions) ve “filtreler” (Filters) sistemlerinin kullanımı, veri güvenliğinin sağlanması, çok dilli destek ve kullanımı kolay bir yönetim arayüzünün oluşturulması yer alır. Basit bir işlevsellik içeren bir eklenti oluşturarak başlayabilir, ardından bu eklentiye ayar seçenekleri ekleyip nesne yönelimli bir kod yapısına dönüştürebilirsiniz. Unutmayın ki, mükemmel bir eklenti sadece çalışan bir şey değil; aynı zamanda güvenli, verimli, kolayca bakımı yapılan ve uluslararası kullanıcılara uygun bir eklentidir.
Sıkça Sorulan Sorular.
WordPress eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?
Sağlam bir PHP programlama temeline sahip olmanız gerekmektedir; çünkü eklentiler çoğunlukla PHP ile yazılmaktadır. Aynı zamanda, ön uç arayüzlerini ve etkileşimleri oluşturmak için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. WordPress’in temel kavramlarını anlamak – temalar, makale türleri, kategoriler, meta veriler ve en önemlisi eklenti mekanizmaları (eylemler ve filtreler) – başarılı bir eklenti geliştirmenin anahtarıdır. Karmaşık verileri işlemek için MySQL veritabanının temel işlemlerine aşina olmak da oldukça faydalıdır.
Geliştirilmekte olan bir WordPress eklentisini nasıl hata ayıklarsınız?
Öncelikle, 'den emin olun.wp-config.phpDosyada etkinleştirildi.WP_DEBUG和WP_DEBUG_LOGBu, PHP hatalarını ve uyarılarını kaydedecektir./wp-content/debug.logDosyada, hatalı bilgilerin doğrudan kullanıcıya gösterilmesinden kaçınılmalıdır. İkincisi, bunun yerine belirli yöntemler kullanılabilir.error_log()Fonksiyon, özelleştirilmiş hata ayıklama bilgilerini aynı log dosyasına yazdırır. Değerleri kontrol etmek için…print_r()或var_dump()Fonksiyonlar ve bunlarla birlikte kullanılan araçlar/düzenlemeler…echo ‘’;Verileri formatlayın, ancak bunu yalnızca geliştirme ortamında yapın. Ayrıca, JavaScript ve AJAX isteklerini ayarlamak için tarayıcı geliştirici araçlarının (F12) Console ve Network panellerini kullanın.
Eklentim, üçüncü parti hizmetler veya API’lerle nasıl etkileşim kurabilir?
Üçüncü parti API’lerle etkileşim kurmak, eklentilerin işlevlerini genişletmenin yaygın bir yoludur. WordPress’ta, yerleşik HTTP API’lerinin (örneğin) kullanılması önerilir.wp_remote_get(), wp_remote_post()İstekleri başlatmak için bu yöntemi kullanın; çünkü bu yöntem uyumluluk, zaman aşımı ve güvenlik gibi sorunları ele alır. Hassas verileri aktarırken mutlaka HTTPS kullanın. Alınan API yanıtları genellikle JSON formatında gelir ve bunların çözümlenmesi gerekmektedir (JSON’ı çözmek için uygun araçlar kullanılmalıdır).json_decode()XML verilerini işleyin ve hata yönetimini sağlayın; örneğin HTTP durum kodlarını ve API’nin döndürdüğü hata kodlarını kontrol edin. API anahtarları gibi hassas bilgilerin, dosyalarda sabit olarak kodlanmak yerine eklenti ayarlarında saklanması önerilir.
Küçük bir eklenti geliştirdim ve bunu WordPress’in resmi eklenti dizinine nasıl gönderebilirim?
Öncelikle, eklentinizin tamamen GPL lisansına uyduğundan, kod kalitesinin yüksek olduğundan ve herhangi bir kötü amaçlı veya tanıtım içeren bağlantı içermediğinden emin olmanız gerekiyor. WordPress.org’da bir hesap oluşturun ve ardından “Geliştiriciler” bölümüne giderek eklentinizi gönderin. Standartlara uygun eklenti başlık bilgilerini ve diğer gerekli dosyaları içeren, sıkıştırılmış bir eklenti paketi (ZIP formatında) sunmanız gerekmektedir.readme.txtDosya (eklentiyi tanımlamak için belirli bir format kullanılır), isteğe bağlı ekran görüntüleri ve simgeler de dahildir. Gönderimden sonra, eklenti inceleme ekibi dosyaları inceleyecektir; bu süreç birkaç hafta sürebilir. İncelemeden geçtikten sonra, kodunuzu yönetmek için resmi bir SVN deposu alacaksınız ve kullanıcılar eklentinizi doğrudan WordPress arayüzünden arayıp yükleyebilecekler.
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 web sitelerinin performansını ve güvenliğini artırmak için 10 önerilen eklenti:
- WooCommerce Eklenti Yapılandırması ve Kullanım Rehberi: Sıfırdan Bir E-Ticaret Sitesi Kurmak
- Önsöz: Neden WordPress ile geliştirme yapmayı seçtik?
- Web sitenizi hızlandırın: Kapsamlı CDN (Content Delivery Network) çözümleri ve en iyi uygulama rehberi
- 2026 Yılı Web Sitesi Kurma Rehberi: Sıfırdan Hayata Geçiş İçin Tam Teknoloji Yapısı ve En İyi Uygulamalar