Gereksinimler ve Ön Hazırlık
Özel bir dashboard modülü geliştirmek için temel düzeyde PHP bilgisine ve WordPress'in WP_Query, $wpdb sınıfı gibi temel veri işleme mekanizmalarına aşinalık gereklidir. Çalışmalarınızı doğrudan canlı sitenizde değil, bir yerel geliştirme ortamında (LocalWP, XAMPP vb.) yürütmeniz önerilir.
- WordPress 6.5 veya üzeri sürüm.
- PHP 8.2+ sürümü (Performans ve güvenlik için güncel sürüm şarttır).
- Child Theme (Alt Tema) veya özel bir fonksiyon eklentisi.
- Veritabanı erişimi için
$wpdbsınıfı kullanımı.
Adım 1: Dashboard Sayfasını Oluşturma
Kullanıcıların istatistiklerini göreceği bir "sayfa" oluşturmak için WordPress'in sayfa şablonu (page template) yapısını kullanacağız. Öncelikle temanızın içine page-dashboard.php adında bir dosya oluşturun. Bu dosya, kullanıcı giriş yapmamışsa onları giriş sayfasına yönlendirecek ve giriş yapmışsa verileri gösterecektir.
Kullanıcı İstatistik Paneli
Bu kod, WordPress'in yerleşik auth_redirect() fonksiyonunu kullanarak yetkisiz erişimi engeller. Sayfa şablonunu oluşturduktan sonra, WordPress yönetim panelinden yeni bir sayfa oluşturup "Kullanıcı Dashboard" şablonunu seçmeyi unutmayın.
Adım 2: Veritabanından İstatistikleri Çekme
Dashboard'un merkezinde veritabanı sorguları yer alır. Örneğin, kullanıcının yazdığı toplam yazı sayısını veya yaptığı yorum sayısını çekmek isteyebilirsiniz. Bunun için $wpdb nesnesini kullanarak güvenli sorgular yazacağız.
Bu yöntem, veritabanı yükünü ciddi oranda azaltır. 12 saat boyunca veriler önbellekten okunur, böylece sunucu kaynaklarınız daha verimli kullanılır.
Adım 5: Güvenlik ve Hata Ayıklama
Geliştirme aşamasında hataları görmek için WP_DEBUG modunu aktif etmelisiniz. Ancak üretim ortamında (live site) bu modu mutlaka kapatın. Güvenlik için ise kullanıcı yetkilendirmelerini her zaman kontrol edin.
Kritik Güvenlik Uyarısı: Veritabanı sorgularınızda asla doğrudan kullanıcı girdisi kullanmayın. Her zaman
$wpdb->preparekullanın ve çıktılarıesc_html(),esc_attr()veyaesc_url()fonksiyonları ile temizleyin. Aksi takdirde siteniz SQL Injection ve XSS saldırılarına açık hale gelir.
Sıkça Sorulan Sorular
Dashboard verilerini nasıl anlık güncel tutabilirim?
Veritabanında bir yazı yayınlandığında veya güncellendiğinde save_post kancasını (hook) kullanarak ilgili kullanıcının transient verisini delete_transient() ile silebilirsiniz.
Bu modülü bir eklenti olarak nasıl paketlerim?
Kodlarınızı wp-content/plugins/ dizininde bir klasör oluşturarak ve dosyanın en başına eklenti başlık bilgilerini ekleyerek bir eklentiye dönüştürebilirsiniz.
Mobil uyumluluk için ne yapmalıyım?
Dashboard HTML yapınızda CSS Flexbox veya Grid kullanarak mobil cihazlarda istatistiklerin alt alta dizilmesini sağlayabilirsiniz.
Çok fazla verim var, sayfa çok yavaşlıyor, ne yapmalıyım?
Veritabanı tablolarınızda ilgili sütunlara (örneğin post_author) indeks eklemek sorgu hızını ciddi oranda artıracaktır.
İstatistikleri grafik olarak nasıl gösterebilirim?
Chart.js gibi bir JavaScript kütüphanesi kullanarak, PHP ile çektiğiniz verileri JSON formatında JavaScript tarafına aktarabilir ve görselleştirebilirsiniz.
İleri Seviye Veri Önbellekleme ve Transients API Kullanımı
Dashboard istatistikleriniz karmaşık SQL sorguları içeriyorsa, her sayfa yenilemesinde veritabanına yük bindirmek performansı ciddi şekilde düşürecektir. WordPress Transients API, bu tür verileri belirli bir süre boyunca veritabanında saklayarak sorgu yükünü minimize etmenizi sağlar.
Aşağıdaki örnekte, kullanıcının toplam sipariş sayısını 1 saat boyunca önbelleğe alan bir yapı kuruyoruz:
function get_user_cached_stats($user_id) {
$transient_key = 'user_stats_' . $user_id;
$stats = get_transient($transient_key);
if (false === $stats) {
// Veritabanı sorgusunu çalıştır
global $wpdb;
$stats = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->prefix}posts WHERE post_author = %d AND post_type = 'shop_order'",
$user_id
));
// Veriyi 1 saat (3600 saniye) boyunca sakla
set_transient($transient_key, $stats, HOUR_IN_SECONDS);
}
return $stats;
}
Dashboard İçin Rol Bazlı Erişim Kontrolü (ACL)
İstatistik modülünüzün sadece belirli kullanıcı rolleri (örneğin "abone" veya "premium_uye") tarafından görülebilmesini sağlamak, güvenlik katmanınızı güçlendirir. current_user_can() fonksiyonunu kullanarak dashboard içeriğini filtreleyebilirsiniz.
Aşağıdaki kod bloğu, dashboard sayfasının en üstüne eklenerek yetkisiz erişimleri engeller:
function restrict_dashboard_access() {
if (is_page('dashboard') && !current_user_can('read')) {
wp_redirect(home_url('/giris-yap'));
exit;
}
}
add_action('template_redirect', 'restrict_dashboard_access');
Veri Doğrulama Tablosu
Dashboard üzerinden kullanıcıya veri sunarken veya kullanıcıdan girdi alırken aşağıdaki güvenlik standartlarını uygulamalısınız:
| İşlem | Kullanılması Gereken Fonksiyon |
|---|---|
| Veritabanından veri çekme | $wpdb->prepare() |
| HTML çıktısı verme | esc_html() veya esc_attr() |
| URL çıktıları | esc_url() |
| Veri temizleme (Sanitization) | sanitize_text_field() |
Profesyonel İpucu: Dashboard sayfanızda çok fazla veri gösteriyorsanız, verileri AJAX ile asenkron bir şekilde yüklemek, sayfanın ilk açılış hızını (LCP - Largest Contentful Paint) önemli ölçüde iyileştirecektir.
Sonuç
WordPress üzerinde özel bir kullanıcı dashboard istatistik modülü oluşturmak, sadece veri çekmek değil, bu veriyi güvenli ve performanslı bir şekilde sunma sanatıdır. $wpdb kullanımı, veri temizleme fonksiyonları ve önbellekleme teknikleri ile profesyonel bir yapı kurmuş oldunuz. Bir sonraki adım olarak, bu verileri grafik kütüphaneleri ile görselleştirmeyi veya kullanıcıya özel raporlar indirme seçeneği eklemeyi deneyebilirsiniz.
Bu rehberde paylaşılan kodlar, WordPress'in çekirdek yapısıyla tam uyumlu olacak şekilde tasarlanmıştır. Uygulama sırasında hata alırsanız, WordPress hata günlüklerini (debug.log) kontrol etmeyi ihmal etmeyin.


Yorumlar (0)
Yorum Yaz