Wordpress İle Özel Bir Dinamik İçerik Özetleme Eklentisi Nasıl Yapılır?

Wordpress İle Özel Bir Dinamik İçerik Özetleme Eklentisi Nasıl Yapılır?
Wordpress İle Özel Bir Dinamik İçerik Özetleme Eklentisi Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Özel bir eklenti geliştirmeye başlamadan önce, yerel geliştirme ortamınızın hazır olduğundan emin olmalısınız. WordPress 6.x ve üzeri sürümlerle uyumlu bir PHP 8.2+ ortamı, modern yazılım standartları için zorunludur.

  • PHP 8.2+: WordPress'in güncel sürümü ile tam uyum ve performans sağlar.
  • Kod Editörü: VS Code veya benzeri bir editör, sözdizimi vurgulama için önerilir.
  • FTP/SFTP Erişimi: Eklenti dosyalarınızı sunucuya yüklemek için gereklidir.
  • WP_DEBUG Modu: Geliştirme aşamasında hataları görmek için wp-config.php dosyasında define('WP_DEBUG', true); ayarını aktif etmelisiniz.

Eklenti Klasör Yapısını Oluşturma

WordPress eklentileri, wp-content/plugins/ dizini altında kendine ait bir klasörde barındırılmalıdır. Eklentinizin sistem tarafından tanınması için bir ana dosya ve klasör yapısı oluşturacağız.

Öncelikle ozel-icerik-ozetleyici adında bir klasör oluşturun ve içine ozel-icerik-ozetleyici.php dosyasını ekleyin. Bu dosya, eklentinizin kimlik bilgilerini içeren ana dosyadır.




Veri İşleme ve Özetleme Mantığının Kurulması

Eklentimizin temel işlevi, WordPress'in the_content filtresini kullanarak içerikleri dinamik olarak yakalamak ve bir özetleme algoritmasından geçirmektir. Bu aşamada, içeriği manipüle etmeden önce metnin uzunluğunu kontrol etmeli ve sadece belirli kriterlere uyan yazı tiplerinde işlem yapmalıyız.

Aşağıdaki kod bloğu, içerik özetleme fonksiyonunun temel iskeletini oluşturur. Bu fonksiyon, metni belirli bir kelime sayısına göre keser ve sonuna "..." ekler.

function ozel_icerik_ozetleyici_filtre($content) {
    // Sadece tekil yazılarda çalışmasını sağlayalım
    if (is_single() && in_the_loop() && is_main_query()) {
        $kelime_limiti = 50;
        $kelimeler = explode(' ', strip_tags($content));
        
        if (count($kelimeler) > $kelime_limiti) {
            $ozet = implode(' ', array_slice($kelimeler, 0, $kelime_limiti));
            return '
' . $ozet . '...
' . $content; } } return $content; } add_filter('the_content', 'ozel_icerik_ozetleyici_filtre');

Performans Optimizasyonu ve Önbellekleme Stratejileri

Dinamik içerik özetleme işlemleri, özellikle yoğun trafik alan sitelerde sunucu kaynaklarını tüketebilir. Her sayfa yüklenmesinde metni parçalamak yerine, WordPress'in Transient API özelliğini kullanarak özetlenmiş veriyi belirli bir süre önbelleğe almak en verimli yöntemdir.

Aşağıdaki uygulama, özetlenmiş içeriği 12 saat boyunca veritabanında saklar ve işlem yükünü minimize eder:

function ozel_icerik_ozetleyici_onbellekli($content) {
    $post_id = get_the_ID();
    $transient_key = 'ozet_' . $post_id;
    
    $cached_ozet = get_transient($transient_key);
    
    if (false === $cached_ozet) {
        // Özetleme işlemini yap
        $cached_ozet = wp_trim_words($content, 50, '...');
        set_transient($transient_key, $cached_ozet, 12 * HOUR_IN_SECONDS);
    }
    
    return $cached_ozet;
}

İleri Düzey Hata Ayıklama İpuçları

Eklentiyi geliştirirken karşılaşabileceğiniz yaygın hataları yönetmek için WP_DEBUG_LOG kullanmanız önerilir. Özellikle harici bir API kullanıyorsanız, yanıtların doğruluğunu şu şekilde kontrol edebilirsiniz:

  • Hata Kaydı: error_log('Özetleme hatası: ' . $e->getMessage()); satırı ile hataları wp-content/debug.log dosyasına yazdırın.
  • Veri Tipi Kontrolü: is_wp_error() fonksiyonu ile API'den dönen verinin geçerli olup olmadığını her zaman doğrulayın.
  • DOM Manipülasyonu: İçeriği keserken HTML etiketlerinin (
    ,

    ) bozulmadığından emin olmak için wp_kses_post() fonksiyonunu kullanın.

Profesyonel İpucu: Eklentinizde CSS stillerini doğrudan PHP içinde tanımlamak yerine, wp_enqueue_style kullanarak ayrı bir .css dosyası üzerinden yönetmek, temanızın genel tasarımıyla uyumluluğu artıracaktır.
Bu yazıya tepkinizi paylaşın:
Deniz Aydın

On yıllık yaşam tarzı editörlüğü deneyimimle karmaşık süreçleri herkesin anlayabileceği basit adımlara dönüştürüyorum. Okuyucuların günlük yaşam kalitesini artıracak uygulanabilir çözümler üretmeye odaklanıyorum.

Yorumlar (0)

Yorum Yaz