WordPress Eklenti Geliştirme: Başlangıçtan Uzmanlığa – Kendi Özel İşlevlerinizi Oluşturmayı Adım Adım Öğrenin

3 dakika okuma.
2026-03-19
2026-06-03
2,113
Aşağıdaki bağlantılar üzerinden alışveriş yaptığınızda, sizin için ek bir maliyet olmadan komisyon kazanıyorum.

WordPress Eklenti Geliştirme Ortamının Hazırlanması

İlk satır kodu yazmaya başlamadan önce, uygun bir geliştirme ortamı verimli çalışmanın temel taşıdır. Bu, eklentinizin farklı WordPress ortamlarında sorunsuz bir şekilde çalışmasını sağlamakla kalmaz, aynı zamanda hata ayıklama ve test süreçlerini de büyük ölçüde kolaylaştırır.

Yerel Geliştirme Ortamının Kurulması

Yerel ortamda geliştirme yapılmasını, doğrudan çevrimiçi sunucularda işlem yapmaktan çok daha güçlü bir şekilde öneririm. XAMPP, MAMP, Local by Flywheel veya Docker gibi araçları kullanarak PHP, MySQL ve Apache/Nginx içeren bir yerel sunucu ortamı hızlı bir şekilde kurabilirsiniz. Kullandığınız PHP sürümünün hedef WordPress sürümüyle uyumlu olduğundan emin olun; genellikle WordPress resmi olarak belirli bir PHP sürüm aralığı önerir.

Kod Düzenleyicileri ve Araç Seçimi

Güçlü bir kod editörü seçmek çok önemlidir; örneğin VS Code, PhpStorm veya Sublime Text gibi. Bu editörler genellikle sözdizimi vurgulama, kod önerileri, sürüm kontrolü entegrasyonu gibi özellikler sunar. Ayrıca, WordPress ile ilgili bazı kod parçaları (snippet’ler) veya eklentiler (plugins) yüklemek işlemlerinizi hızlandırabilir.add_actionadd_filterYaygın olarak kullanılan fonksiyonların yazımı.

Tavsiye edilen okuma WordPress Eklenti Geliştirmeyi Sıfırdan Öğrenin: Özel Özellikler Oluşturma ve En İyi Uygulamalar

Eklentinin ana dosyasını oluşturun.

Her WordPress eklentisinin bir ana PHP dosyası olmalı ve dosyanın baş kısmında standart eklenti bilgileri açıklamaları bulunmalıdır. Bu dosya, eklentinin giriş noktasıdır. Örneğin, “My Custom Greeting” adında bir eklenti oluşturmayı planlıyorsak, ana dosyanın adı şu şekilde olabilir:my-custom-greeting.php

UltaHost WordPress Sunucusu
30 gün iade garantisi, sınırsız bant genişliği ve veritabanı kullanımı, ücretsiz DDoS koruması; 3 yıllık abonelikte indirim (50%).
<?php
/**
 * Plugin Name: My Custom Greeting
 * Plugin URI:  https://yourwebsite.com/my-custom-greeting
 * Description: 一个简单的插件,用于在网站前台显示自定义问候语。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL v2 or later
 * Text Domain: my-custom-greeting
 */

Bu yorum gereklidir; WordPress, eklentileri tanımak ve bunları arka plan yönetim arayüzünde göstermek için bunu kullanır.

Eklenti Temel Yapısı ve Güvenlik Standartları

Yapısı net ve güvenlik standartlarına uygun bir eklenti, uzun süreli bakımın ve kullanıcı güveninin temelidir. WordPress’in resmi kodlama standartlarına ve güvenlik uygulamalarına uymak, yaygın güvenlik açıklarından etkili bir şekilde kaçınmayı sağlar.

Kodu organize etmek için sınıflar kullanın.

Her ne kadar saf fonksiyonel programlama kullanabilseydin de, eklenti işlevlerini kapsamlamak için nesne yönelimli (OOP) sınıflar kullanmak daha modern ve tavsiye edilen bir yaklaşımdır. Bu, fonksiyon adı çakışmalarını önlemeye ve kod yapısını daha net hale getirmeye yardımcı olur. Bir ana sınıf oluşturalım.My_Custom_Greeting

if ( ! class_exists( 'My_Custom_Greeting' ) ) {
    class My_Custom_Greeting {
        public function __construct() {
            // 构造函数,在这里挂载钩子
        }
    }
    // 初始化插件
    new My_Custom_Greeting();
}

! class_exists()Bu kontrol, sınıfların tekrar tekrar tanımlanmasını önlemek içindir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Başlangıç Kılavuzu: Sıfırdan Başlayarak İlk İşlevsel Genişlemenizi Oluşturun

Güvenlik ve yetki kontrolünü gerçekleştirme

Tüm, kullanıcı isteklerini ön uçta veya arka uçta işleyebilecek fonksiyonlar, yetki ve güvenlik kontrollerinden geçirilmelidir. WordPress bunu sağlar.wp_verify_nonce()current_user_can()Bu işlevlerin kullanılması, uygulamanın doğru bir şekilde çalışmasını sağlamak için zorunludur. Herhangi bir eklenti ayar sayfasında veya form işleme mantığında bunun yerine getirilmesi gerekmektedir.

Eklenti dizini ve dosya organizasyonu

Makul bir dizin yapısı yönetimi kolaylaştırır. Tipik bir eklenti dizini şunları içerebilir:
Ana dosya. my-custom-greeting.php (Pluginin kök dizininde bulunur.)
- includes/ İçerik: Temel işlevsel sınıf dosyalarının depolanması.
- admin/ İçerik: Arka uçla ilgili kodların depolandığı yer.
- public/ İçerik: Öncü sayfayla ilgili kodların depolanması.
- assets/ Dizin: CSS, JavaScript ve resimlerin saklandığı yer.
- languages/ İçerik: Uluslararasılaştırılmış çeviri dosyalarının (.po/.mo) depolanması.

Önemli Özellikler: Hook’lar ve Filtrelerin Pratik Kullanımı

WordPress’in eklenti mekanizmasının temeli “kancalar”dır (Hooks); bunlar “Eylemler” (Actions) ve “Filtreler” (Filters)’i içerir. Kancaları anlamak ve ustaca kullanmak, eklenti geliştirmenin anahtarıdır.

hosting.com Paylaşımlı Barındırma
AMD EPYC CPU'lar, NVMe SSD depolama ve LiteSpeed ile yüksek performans, 7/24, 7x7 uzman şirket içi destek, SSL, kaba kuvvet, kötü amaçlı yazılım ve DDoS koruması dahil gelişmiş güvenlik önlemleri, 73%'ye kadar tasarruf

Eylem kancalarını kullanarak işlevler ekleyin.

Aksiyon kancaları, belirli zaman noktalarında (örneğin başlatma, sayfa yükleme, makale yayınlama sırasında) özelleştirilmiş kodları çalıştırmanıza olanak tanır. Biz bunları kullanıyoruz.add_action()Bu fonksiyon, bir şeyi monte etmek için kullanılır. Örneğin,wp_footerKancaya bizim selamımızı ekleyin.

My_Custom_GreetingSınıfın yapıcısında (constructor) ekleme (mounting):

public function __construct() {
    add_action( 'wp_footer', array( $this, 'display_greeting' ) );
}

Ardından ilgili geri çağırma (callback) metodunu tanımlayın.display_greeting

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak Profesyonel Eklentiler Oluşturma

public function display_greeting() {
    $name = get_option( 'my_greeting_name', '访客' );
    echo '<p id="custom-greeting">Merhaba, '. esc_html($name)'. ‘! Bu sitede hoş geldiniz.</p>';
}

İçeriği filtre kancalarını kullanarak değiştirin.

Filtre hook’ları, WordPress veya diğer eklentiler tarafından oluşturulan verileri değiştirmenize olanak tanır. Biz de bunları kullanıyoruz.add_filter()Fonksiyonlar; örneğin, makale başlıklarının varsayılan eklerini değiştirmek için kullanılabilir.

add_filter( 'the_title', array( $this, 'modify_post_title' ), 10, 2 );

public function modify_post_title( $title, $id ) {
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' [推荐阅读]';
    }
    return $title;
}

Buradaki parametreler10Öncelik meselesi.2Bu, geri çağırma fonksiyonunun iki parametre aldığını gösterir.$title$id)。

InterServer Paylaşımlı Barındırma
Paylaşımlı hosting aylık $2.50 USD, ilk ay $0.1 USD promosyon kodu tryinterserver, 461 bulut uygulaması komut dosyası, tek tıklamayla yükleme.

Özel bir kancalar (hook) oluşturun.

Olgun bir eklenti aynı zamanda diğer geliştiricilerin genişletmesi için kendi “hook’larını” (bağlantı noktalarını) da sağlamalıdır.do_action()Bir eylem kancası oluşturun ve kullanın.apply_filters()Filtre oluğu (hook) oluşturun.

// 在插件某处执行一个自定义动作
do_action( 'my_custom_greeting_before_display', $name );

// 提供一个可过滤的问候语文本
$greeting_text = apply_filters( 'my_custom_greeting_text', '你好,' . $name . '!', $name );

Eklenti için bir yönetim arayüzü oluşturun.

Çoğu eklentinin, kullanıcıların eklentinin davranışlarını yapılandırabilmesi için bir arka plan ayarları sayfasına ihtiyacı vardır. WordPress, menü sayfaları ve seçenek sayfaları oluşturmak için zengin bir API sunar.

Yönetim menüsü ekleyin.

Kullanın.add_action( ‘admin_menu’, … )Menü öğelerini eklemek için bir “kancaya” (hook) ihtiyacımız var. Eklentimize, “Ayarlar” (Settings) bölümü altında bulunan bir alt menü sayfası ekliyoruz.

add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );

public function add_admin_menu() {
    add_options_page(
        '自定义问候语设置', // 页面标题
        '问候语设置',       // 菜单标题
        'manage_options',   // 所需权限
        'my-custom-greeting', // 菜单slug
        array( $this, 'render_settings_page' ) // 回调函数,用于输出页面内容
    );
}

Ayarlama sayfası ve formu oluşturma

In the callback functionrender_settings_pageBurada, bir form oluşturmalı ve verileri güvenli bir şekilde kaydetmek için WordPress Ayarlar API’sini kullanmalıyız. Öncelikle, bir ayar kaydedin.

add_action( 'admin_init', array( $this, 'register_settings' ) );

public function register_settings() {
    register_setting(
        'my_custom_greeting_options_group', // 选项组名
        'my_greeting_name',                 // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );
}

Daha sonra, formu sayfa renderleme fonksiyonunda ekrana yazdırın:

public function render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h2>Özel selamlaşma mesajı ayarları</h2>
        <form method="post" action="/tr/options.php/" data-trp-original-action="options.php">
            <?php settings_fields( 'my_custom_greeting_options_group' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="greeting_name">Selamlanan Kişinin Adı</label></th>
                    <td>
                        <input type="text" id="greeting_name" name="my_greeting_name" value="<?php echo esc_attr( get_option( 'my_greeting_name', '访客' ) ); ?>" class="regular-text" />
                        <p class="description">Buraya girilen isim, ön yüzdeki selamlama mesajında görüntülenecektir.</p>
                    </td>
                </tr>
            </table>
            <?php submit_button(); ?>
        <input type="hidden" name="trp-form-language" value="tr"/></form>
    </div>
    &lt;?php
}

Script ve stil tablolarını ekleyin.

Yönetim arayüzünü daha estetik hale getirmek veya etkileşimli kılmak için, ayar sayfalarına CSS ve JavaScript eklenmesi gerekmektedir.admin_enqueue_scriptsKancaları kullanın ve sayfa slug’ını kontrol edin; böylece yalnızca eklentimizin bulunduğu sayfalar yüklensin.

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) );

public function enqueue_admin_assets( $hook ) {
    if ( 'settings_page_my-custom-greeting' !== $hook ) {
        return;
    }
    wp_enqueue_style( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/css/admin-style.css' );
    wp_enqueue_script( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/js/admin-script.js', array( 'jquery' ), '1.0.0', true );
}

Özetle.

Bu makalenin adımlarını takip ederek, bir WordPress eklentisinin geliştirme sürecini tamamladık: Ortam kurulumundan, temel güvenlik yapılarının oluşturulmasına, eylem (action) ve filtre (filter) hook’larını kullanarak çekirdek işlevlerin gerçekleştirilmesine ve son olarak kullanıcı dostu bir yönetim arayüzünün oluşturulmasına kadar. Eklentilerin geliştirilmesinin özü, WordPress’in hook sisteminin derinlemesine anlaşılmasında ve güvenlik ile kodlama standartlarına uyulmasında yatmaktadır. Bu küçük eklentiden yola çıkarak, daha fazla sınıf ekleyerek, daha karmaşık veritabanı işlemleri kullanarak, REST API’ler entegre ederek veya özel bloklar (örneğin Gutenberg Blokları) oluşturarak eklentinin işlevlerini sürekli genişletebilir ve sonunda güçlü özelliklere sahip, kolayca bakımı yapılan profesyonel seviye bir eklenti geliştirebilirsiniz.

Sıkça Sorulan Sorular.

###: WordPress eklentimizi nasıl hata ayıklarız?
WordPress’ın hata ayıklama (debugging) modunu etkinleştirmek en etkili yöntemdir.wp-config.phpDosyada,WP_DEBUGSabit, olarak ayarlandı.trueBu, PHP hatalarını, uyarılarını ve bildirimlerini doğrudan sayfada gösterecektir. Daha karmaşık hata ayıklamaları için ise başka araçlar kullanılabilir.error_log()Fonksiyon, bilgileri sunucunun hata günlüğüne kaydeder veya Xdebug gibi profesyonel PHP hata ayıklama araçlarını kullanır.

Eklentim farklı PHP sürümleriyle nasıl uyumlu olabilir?

Geliştirme sırasında, çok yeni veya çok eski, artık kullanımdan kaldırılmış PHP fonksiyonları kullanmaktan kaçınılmalıdır. PHP’nin resmi kılavuzuna bakarak fonksiyonların en düşük desteklenen sürümlerini öğrenin. Eklentinin ana dosyasında veya belgelerinde bu bilgiler yer alabilir.Requires PHP:Başlık etiketleri, eklentinin gerektirdiği en düşük PHP sürümünü belirtmek için kullanılır. Böylece WordPress, gerekli koşullar sağlanmadığında bir uyarı verir.

Nasıl yapabilirim ki eklentim birden fazla dilde kullanılabilir hale gelsin (yani uluslararasılaştırılsın)?

WordPress, uluslararasılaştırma (i18n) işlemlerini GNU gettext çerçevesi kullanarak gerçekleştirir. Öncelikle, çevrilmesi gereken tüm metinlerin bulunduğu yerlerde belirli bir format kullanılır…__()_e()_x()Bu fonksiyonları paketleyin. Daha sonra, Poedit gibi araçları kullanarak kodu tarayın ve gerekli verileri oluşturun..potŞablon dosyaları; her dil için ayrı ayrı dosyalar oluşturulmalıdır..po.moDosya. Son olarak, eklenti yüklendiğinde kullanılacak.load_plugin_textdomain()Function loading.

WordPress resmi kataloğuna eklenti gönderirken nelere dikkat etmek gerekiyor?

Göndermeden önce, lütfen kodun WordPress kodlama standartlarına ve belge şartlarına sıkı sıkıya uyduğundan emin olun. Eklentinin GPLv2 veya daha yüksek uyumluluk lisansı kullanması gerekmektedir. Ayrıca, ayrıntılı bir açıklama sağlanmalıdır.readme.txtDosya, açıklamaları, kurulum adımlarını, ekran görüntülerini ve sık karşılaşılan sorunları içermektedir. Kodunuz güvenli olmalı, herhangi bir kötü niyetli davranış sergilememeli ve temel işlevlerin kısa kodlara (Shortcode’lara) bağlı olmaması gerekir; yani kodunuz hazır kullanıma sunulabilir durumda olmalıdır. Gönderimden sonra, inceleme ekibi dosyayı titizlikle inceleyecektir.