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 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 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.
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
/**
* 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 . ' -->';
}