WordPress Eklenti Geliştirme Kılavuzu: Başlangıçtan Gerçek Uygulamalara Kadar Uzmanlaşma Yolculuğu

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

WordPress eklentisi geliştirmek istiyorsanız, öncelikle temel yapısını anlamanız gerekmektedir. Bir eklenti, esasen bir veya daha fazla PHP dosyasından oluşur ve bu dosyalar WordPress’in belirli standartlarına uyar. Eklentiler, “Hook” (Kancalar) sistemi aracılığıyla WordPress’in çekirdeğiyle etkileşime girerek web sitesinin işlevlerini genişletir veya değiştirir. Bir eklenti geliştirmek için en azından bir ana dosyaya ihtiyacınız vardır; bu dosya, WordPress’in eklentiyi tanımasını sağlayan standart eklenti başlık bilgilerini içerir.

İlk eklentinizi oluşturun.

En basit “Hello World” eklentisini oluşturarak başlayalım; bu süreç, eklentilerin yapısına, etkinleştirme ve devre dışı bırakma işlemlerine aşina olmanıza yardımcı olacaktır.

Bir eklenti ana dosyası oluşturun.

Ö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, “” adında bir dosya oluşturun.my-first-plugin.phpAna PHP dosyasıdır. Bu dosya adı genellikle klasör adıyla aynıdır.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun

Aç.my-first-plugin.phpDosya için aşağıdaki standart eklenti başlık bilgilerini girin:

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:       我的第一个插件
 * 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
 */

Bu yorum çok önemlidir. WordPress, belirli içerikleri taramak için belirli algoritmalar kullanır.wp-content/pluginsVe alt klasörlerindeki tüm PHP dosyalarıPlugin Name:Bu eklentiyi tanımlar ve arka plandaki eklenti yönetim sayfasında gösterir.

Temel işlevleri gerçekleştirin ve etkinleştirme mekanizmalarını (activation hooks) devreye alın.

Bundan sonra, eklentiye basit bir özellik ekleyeceğiz: Web sitesinin alt kısmında özelleştirilmiş bir metin satırı göstereceğiz. Aynı zamanda, WordPress’in yaşam döngüsü kancalarını kullanarak, eklentinin etkinleştirildiğinde ve devre dışı bırakıldığında gerçekleştirilebilecek işlemleri göstereceğiz.

Başlık yorumlarının altına aşağıdaki kodu ekleyin:

// 定义一个函数,在页脚输出信息
function my_first_plugin_display_footer_text() {
    echo '<p style="text-align: center;">İlk WordPress eklentimizi kullanmaya hoş geldiniz!</p>';
}
// 使用 ‘wp_footer’ 动作钩子挂载我们的函数
add_action( 'wp_footer', 'my_first_plugin_display_footer_text' );

// 插件激活时执行的操作
function my_first_plugin_activate() {
    // 可能在这里创建数据库表、设置默认选项等
    update_option( 'my_first_plugin_installed', current_time( 'mysql' ) );
}
register_activation_hook( __FILE__, 'my_first_plugin_activate' );

// 插件停用时执行的操作
function my_first_plugin_deactivate() {
    // 清理临时数据,但保留可能由用户创建的数据
    delete_option( 'my_first_plugin_installed' );
}
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );

Şimdi, WordPress arayüzüne giriş yapın ve “Eklentiler” sayfasına gidin. “İlk Eklentim” adında bir eklenti görmelisiniz. “Etkinle” butonuna tıklayın, ardından web sitesinin ön yüzüne ( frontend) gidin ve sayfanın en altına kadar kaydırın; eklenen özel metni görmelisiniz. Bu basit örnek, bir eklentinin oluşturulmasından çalıştırılmasına kadar olan temel süreci göstermektedir.

Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Eklentinizi Oluşturun

WordPress Hook Sistemi’ni Derinlemesine Anlama

Kancalar (Hooks), WordPress eklenti geliştirmenin temel taşlarından biridir. Çekirdek kodun belirli noktalarında kendi kodunuzu eklemenize olanak tanır ve bu işlem için çekirdek dosyaları değiştirmenize gerek kalmaz. Kancalar esas olarak iki türe ayrılır: Eylemler (Actions) ve Filtreler (Filters).

Action Hook’ların Kullanımı

Eylem kancaları, belirli bir olay meydana geldiğinde çalışır; örneğin bir makale yayınladığınızda, sayfa başlığını veya sayfa sonunu yüklediğinizde. Herhangi bir değer döndürmesi beklenmez; sadece “bir kod parçasını çalıştırır”. Zaten ilk eklentimizde bunu kullanmıştık.wp_footerBu eylem hook’u.

Başka bir yaygın örnek ise…initBu “kancalar” (hooks), WordPress’in başlatılması sırasında tetiklenir ve genellikle özel makale türlerinin veya kategorilerinin kaydedilmesi için kullanılı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
function my_plugin_custom_init() {
    // 在这里注册自定义文章类型
}
add_action( 'init', 'my_plugin_custom_init' );

Action hook’lar aracılığıyla…add_action( $hook_name, $function_to_add, $priority, $accepted_args )Function mounting.

Filtre kancalarının kullanımı

Filtre hook’ları, verileri değiştirmek için kullanılır. Veriler kullanılmadan önce (örneğin veritabanına kaydedilmeden veya tarayıcıya gönderilmeden önce) size ulaşır; siz bu verileri işledikten sonra değiştirilmiş hallerini geri gönderirsiniz.the_contentFiltreler, makale içeriğini değiştirmenize olanak tanır.

function my_plugin_add_disclaimer_to_content( $content ) {
    if ( is_single() ) {
        $disclaimer = '<p><em>Bu metin, benim eklentim tarafından işlendi.</em></p>';
        $content .= $disclaimer;
    }
    return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'my_plugin_add_disclaimer_to_content' );

Filtre hook’ları çalışıyor.add_filter( $hook_name, $function_to_add, $priority, $accepted_args )Function Mounting. Priority$priorityBirden fazla fonksiyonun aynı “hook”a bağlanması durumunda hangi sırayla çalışacağı belirlenir; sayı ne kadar küçükse, öncelik o kadar yüksektir.

Tavsiye edilen okuma WordPress eklenti geliştirmeye yeni başlayanlar için bir rehber: ilk işlevsel eklentinizi sıfırdan oluşturma.

Eklenti Mimarisi ve Güvenlik İyi Uygulamaları

Eklentilerin işlevleri karmaşıklaştıkça, iyi bir mimari ve sıkı güvenlik önlemleri, eklentilerin stabil, sürdürülebilir ve güvenli olmasını sağlamanın anahtarıdır.

Nesne yönelimli programlama kullanmak

对于功能丰富的插件,建议使用类(Class)来组织代码。这有助于封装功能,避免函数名冲突,并使代码结构更清晰。

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.
&lt;?php
/**
 * Plugin Name: 高级示例插件
 */
if ( ! class_exists( &#039;Advanced_Sample_Plugin&#039; ) ) {
    class Advanced_Sample_Plugin {
        public function __construct() {
            // 在构造函数中挂载钩子
            add_action( &#039;wp_footer&#039;, array( $this, &#039;display_message&#039; ) );
            add_filter( &#039;the_title&#039;, array( $this, &#039;modify_title&#039; ) );
        }

public function display_message() {
            echo &#039;<p>Üst düzey eklentiler sınıfından gelen bir mesaj.</p>';
        }

public function modify_title( $title ) {
            return '前缀 - ' . $title;
        }
    }
    // 初始化插件类
    new Advanced_Sample_Plugin();
}

Güvenlik önlemlerini uygulayın.

WordPress eklentilerinin güvenliği son derece önemlidir. En önemli ilke şudur: Kullanıcıların girdiğini asla güvenmeyin. Tüm…$_GET$_POST$_COOKIETüm süper-genel değişkenlerden elde edilen verilerin doğrulanması, temizlenmesi ve escape işleminden geçirilmesi gerekmektedir.

1. Doğrulama: Verilerin beklenen formata uygun olup olmadığını kontrol edin (örneğin, bir e-posta adresi veya sayı olup olmadığı). Kullanımı:sanitize_email()is_email()Ve diğer fonksiyonlar.
2. Temizleme: Verilerdeki yasadışı veya güvensiz karakterleri kaldırın. Metin girdileri için bu işlemi gerçekleştirmek için uygun yöntemleri kullanın.sanitize_text_field()HTML içeriğine izin verilen durumlarda, şu yöntemi kullanın:wp_kses_post()wp_kses()
3. Kaçınma (Escape): Verileri HTML, JavaScript veya URL’ye yazdırırken, güvenli bir şekilde kodlandığından emin olun. Bunun için uygun kaçınma işlemlerini kullanın.esc_html()esc_js()esc_url()Ve diğer fonksiyonlar.

Örneğin, bir kısa kod özelliğini işlerken:

function my_shortcode_handler( $atts ) {
    // 使用 shortcode_atts 设置默认值并提取属性
    $atts = shortcode_atts( array(
        'url' =&gt; '#',
    ), $atts, 'my_shortcode' );

// 清理并转义 URL 属性
    $clean_url = esc_url( $atts['url'] );

return "<a href='/tr/{$clean_url}/'>Güvenli bağlantı</a>"php
add_shortcode('my_shortcode', 'my_shortcode_handler');

Eklentiye yönetim arayüzü ve uluslararasılaştırma (çoklu dil desteği) özellikleri ekleyin.

Olgun bir eklentinin genellikle ayar seçeneklerine ihtiyacı vardır ve çok dilli desteği de göz önünde bulundurmalıdır.

Yönetim ayarları sayfasını oluşturun.

WordPress’in Settings API’sini kullanarak güvenli ve standartlaştırılmış yönetim sayfaları oluşturabilirsiniz. Bu, önerilen bir yöntemdir; güvenlik (nonce doğrulama) ve form arayüzlerinin tutarlılığı konularında sizin için işleri halleder.

İşte üst düzey bir menü ve ayar sayfası eklenmiş basitleştirilmiş bir örnek:

class My_Plugin_Admin {
    public function __construct() {
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        add_action( 'admin_init', array( $this, 'settings_init' ) );
    }

public function add_admin_menu() {
        add_menu_page(
            '我的插件设置', // 页面标题
            '我的插件',     // 菜单标题
            'manage_options', // 权限
            'my-plugin',      // 菜单slug
            array( $this, 'options_page_html' ) // 回调函数,输出页面内容
        );
    }

public function settings_init() {
        register_setting( 'my_plugin_settings', 'my_plugin_options' ); // 注册设置

// 添加设置区域和字段
        add_settings_section( 'my_plugin_section', '主要设置', null, 'my-plugin' );
        add_settings_field( 'api_key', 'API密钥', array( $this, 'api_key_field_html' ), 'my-plugin', 'my_plugin_section' );
    }

public function api_key_field_html() {
        $options = get_option( 'my_plugin_options' );
        ?&gt;
        <input type='text' name='my_plugin_options[api_key]' value='<?php echo esc_attr( $options['api_key'] ?? '' ); ?>'>
        <?php
    }

public function options_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( 'my_plugin_settings' );
                do_settings_sections( 'my-plugin' );
                submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="tr"/></form>
        </div>
        &lt;?php
    }
}
new My_Plugin_Admin();

Eklentiyi uluslararası hale getirmek (plugin internationalization)

Eklentinin dünya genelindeki kullanıcılar tarafından kullanılabilmesi için çok dilli destek sağlanması gerekmektedir. Bu, çeşitli dil seçeneklerinin sunulmasıyla gerçekleştirilir.__( ‘Text’, ’text-domain’ )_e( ‘Text’, ’text-domain’ )Tüm kullanıcı tarafından görülebilen metni, çeviri işlemlerini gerçekleştirmek için ilgili fonksiyonlarla kaplayarak yapıyorsunuz. Daha önce eklentinin baş kısmındaki yorumlarda bunu tanımlamıştınız.Text Domain: my-first-pluginİşte bunun için hazırlandı.

1. Kod içinde, çevrilmeye ihtiyaç duyan tüm metinler için çeviri fonksiyonlarını kullanın:

    echo __( ‘欢迎使用我的插件!’, ‘my-first-plugin’ );
    $title = esc_html__( ‘设置页面’, ‘my-first-plugin’ );

2. Poedit gibi araçlar kullanarak, eklenti kodundaki çeviri metinlerini tarayın ve bunlardan bir çeviri dosyası oluşturun..potŞablon dosyaları. Çevirmenler, bu şablon dosyalarına dayanarak her dil için gerekli içeriği oluştururlar..poVe derlenen.moDosyalar (örneğin)zh_CN.po/mo)。
3. Bu dil dosyalarını eklentinin belirli bir klasörüne koyun.languagesDosya içindedir. WordPress, site dil ayarlarına göre ilgili çeviriyi otomatik olarak yükler.

Özetle.

WordPress eklenti geliştirme, basit betiklerden karmaşık uygulamalara kadar bir süreçtir. Önemli olan, WordPress’un kancalı (hook) sistemini anlamak ve ustaca kullanmaktır; böylece işlevlerinizi WordPress’un yaşam döngüsüne sorunsuz bir şekilde entegre edebilirsiniz. Nesne yönelimli mimari yaklaşımı benimsemek, kodun düzenliliğini ve sürdürülebilirliğini artırır. Güvenlik, geliştirmenin temel taşıdır; bu nedenle her türlü kullanıcı girdisini doğrulamak, temizlemek ve çıktıyı uygun şekilde işlemek gerekir. Son olarak, Settings API aracılığıyla profesyonel bir arka uç arayüzü oluşturun ve uluslararasılaştırma (i18n) fonksiyonlarını kullanarak eklentinizi dünyaya açın. Basit bir eklenti oluşturmaktan başlayarak…my-first-plugin.phpBaşlayın ve bu kavramları adım adım uygulayın; böylece güçlü, güvenli ve popüler bir WordPress eklentisi geliştirebilirsiniz.

Sıkça Sorulan Sorular.

WordPress eklentisi geliştirmek için hangi temel bilgilere ihtiyaç vardır?

PHP programlama dilini öğrenmeniz gerekiyor; çünkü eklentiler çoğunlukla PHP ile yazılmıştır. Ayrıca, ön uç arayüzlerini ve etkileşimleri oluşturmak için HTML, CSS ve JavaScript konularında temel bilgilere sahip olmanız gerekmektedir. En önemlisi, WordPress’in temel işleyiş mekanizmalarını anlamanız gerekiyor; örneğin temalar, eklentiler (plugins), döngüler (loops) ve veri depolama yöntemleri gibi konuları.

Yerel olarak eklentiyi test edebilir miyim ve bu, çevrimiçi web sitesini etkilemez mi?

Kesinlikle mümkün ve bu, şiddetle tavsiye edilir. Eklentileri yerel geliştirme ortamınızda (örneğin XAMPP, MAMP, Local by Flywheel gibi araçlar kullanarak) veya bağımsız bir test sunucusunda geliştirmelisiniz. Bu sayede, kod hataları nedeniyle çevrimiçi sitenizin çökmesi veya verilerin kaybolması gibi sorunlardan kaçınabilirsiniz.

Eklenti kodumu nasıl hata ayıklarım?

WordPress, çeşitli hata ayıklama (debugging) araçları sunar. Öncelikle,wp-config.phpDosyada hata ayıklama modunu etkinleştirme: TanımWP_DEBUGConstantlar (Sabit Değerler)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 yazar; ayrıca Query Monitor gibi özel hata ayıklama araçları da kullanılabilir. Bu araçlar, veritabanı sorguları, eklentiler (hook’lar) ve PHP hataları hakkında ayrıntılı bilgiler sağlar.

Geliştirme işlemi tamamlandıktan sonra, eklentiyi WordPress resmi kataloğuna nasıl gönderebilirsiniz?

WordPress.org adresine giderek bir hesap oluşturmanız gerekiyor. Daha sonra, Subversion (SVN) aracını kullanarak eklenti kodunuzu WordPress’in sağladığı SVN deposuna göndermelisiniz. Göndermeden önce, eklenti kodunuzun resmi eklenti geliştirme standartlarına ve kılavuzlarına uygun olduğundan emin olun; bu standartlar güvenlik, kod kalitesi, dokümantasyon ve uluslararasılaştırma gibi konuları kapsar. İnceleme sonucunda onay alındığında, eklentiniz resmi katalogda kullanıcıların indirip kurabilmesi için yer alacaktır.