ana_sayfa / wordpress-plugin / wordpress-nedir-kurulum
🔵 WordPress Plugin 📊 Başlangıç ⏱ 20 dk 📋 1 Kod Örneği

WordPress Nedir? Kurulum

WordPress dünya genelinde web sitelerinin yaklaşık %43'ünü çalıştıran açık kaynaklı içerik yönetim sistemidir (CMS). PHP ve MySQL üzerine kuruludur.

WordPress.com ile WordPress.org Farkı

WordPress.com barındırmalı bir hizmettir, sunucu gerekmez ama özgürlük kısıtlıdır. WordPress.org kendi sunucunuza kurduğunuz tam kontrol sahibi olduğunuz sürümdür. Plugin geliştirmek için .org sürümü gerekir.

Tema ve Plugin Farkı

Tema sitenin görünümünü kontrol eder. Plugin sitenin işlevselliğini genişletir. Bir özellik hem temada hem pluginde yapılabiliyorsa, pluginde yapın — tema değişince kaybolmaz.

Hooks Sistemi — WordPress'in Kalbi

WordPress'in en güçlü özelliği hook sistemidir. Action hook belirli bir anda kod çalıştırır, Filter hook bir değeri değiştirip geri döndürür. Tüm plugin geliştirme bu sistem üzerine kuruludur.

PHP İlk Plugin
<?php
/**
 * Plugin Name: furkanbacanli Örnek Plugin
 * Plugin URI:  https://furkanbacanli.com
 * Description: WordPress plugin geliştirme örneği
 * Version:     1.0.0
 * Author:      Furkan Bacanlı
 * License:     GPL v2
 */

// Direkt erişimi engelle
if (!defined('ABSPATH')) exit;

// Sabitler
define('furkanbacanli_VERSION', '1.0.0');
define('furkanbacanli_PATH', plugin_dir_path(__FILE__));
define('furkanbacanli_URL',  plugin_dir_url(__FILE__));

// ── Aktivasyon / Deaktivasyon ──
register_activation_hook(__FILE__, 'furkanbacanli_aktif');
register_deactivation_hook(__FILE__, 'furkanbacanli_deaktif');

function furkanbacanli_aktif() {
    // Plugin aktive edilince çalışır
    add_option('furkanbacanli_aktif_tarih', current_time('mysql'));
    flush_rewrite_rules();
}

function furkanbacanli_deaktif() {
    // Plugin deaktive edilince çalışır
    flush_rewrite_rules();
}

// ── Action Hook — Yönetici paneline menü ekle ──
add_action('admin_menu', 'furkanbacanli_menu_ekle');

function furkanbacanli_menu_ekle() {
    add_menu_page(
        'furkanbacanli Ayarlar',  // Sayfa başlığı
        'furkanbacanli',          // Menü adı
        'manage_options',  // Yetki
        'furkanbacanli-ayarlar',  // Slug
        'furkanbacanli_ayar_sayfasi', // Callback
        'dashicons-code-standards', // İkon
        80                 // Pozisyon
    );
}

function furkanbacanli_ayar_sayfasi() {
    if (!current_user_can('manage_options')) return;
    echo '<div class="wrap"><h1>furkanbacanli Ayarları</h1><p>Plugin çalışıyor! 🎉</p></div>';
}

// ── Filter Hook — Post başlığını değiştir ──
add_filter('the_title', 'furkanbacanli_baslik_duzenle', 10, 2);

function furkanbacanli_baslik_duzenle($baslik, $post_id = 0) {
    if (is_admin()) return $baslik; // Admin panelinde değiştirme
    return $baslik; // Şimdilik değiştirmiyoruz
}

// ── wp_footer'a kod ekle ──
add_action('wp_footer', 'furkanbacanli_footer_kodu');

function furkanbacanli_footer_kodu() {
    echo '<!-- furkanbacanli Plugin v' . furkanbacanli_VERSION . ' -->';
}
Sonraki Ders →
Custom Post Type ve Taxonomy