Chat GPT İle Geliştirilmiştir. Sorunsuz Çalışmaktadır.


📌 Eklenti Açıklaması


JPG-PNG to WEBP Converter, WordPress sitenize yüklenen tüm görselleri otomatik olarak WEBP formatına dönüştüren ve dosya boyutlarını optimize eden güçlü bir eklentidir. Ayrıca her görsele özel alt metin ekler ve dosya isimlerini sistematik şekilde adlandırır.
Bu eklenti sayesinde:
✅ Görselleriniz daha hızlı yüklenir.
✅ Web siteniz hızlanır ve SEO performansı artar.
✅ Depolama alanı tasarrufu sağlarsınız.


🚀 Eklentinin Başlıca Özellikleri

1️⃣ Görselleri WEBP Formatına Dönüştürme

  • WordPress’e yüklenen tüm görseller otomatik olarak WEBP formatına dönüştürülür.
  • JPEG, PNG formatındaki görseller desteklenir.
  • Görseller %80 kalite oranında sıkıştırılarak dosya boyutları küçültülür ve kalite korunur.



2️⃣ Orijinal Görselleri Silme

  • WEBP formatına dönüştürüldükten sonra orijinal JPEG veya PNG dosyaları otomatik olarak silinir.
  • Böylece gereksiz dosya yığılmalarının önüne geçilir ve disk alanı tasarrufu sağlanır.

3️⃣ Küçük Boyutlu Resimleri de WEBP Formatına Dönüştürme

  • WordPress’in oluşturduğu küçük, orta ve büyük boyutlu görseller de otomatik olarak WEBP formatına dönüştürülür.
  • Eski küçük boyutlu JPEG/PNG dosyaları otomatik olarak silinir.



4️⃣ Görsel Dosya Adlarını Optimize Etme

  • Yüklenen her görsel için otomatik olarak artarak giden dosya isimleri oluşturulur. örnek resim1.webp resim2.webp

5️⃣ Otomatik Alt Metin (Alt Text) Ekleme

  • Yüklenen her görsele alt metni eklenir.
  • Bu, SEO açısından faydalıdır ve görselleriniz arama motorlarında daha iyi sıralama alır.



6️⃣ WordPress Admin Panelinde Sayaç Görüntüleme

  • WordPress yönetici paneline "WEBP" adlı özel bir menü eklenir.
  • Admin panelinde toplam kaç görselin WEBP formatına dönüştürüldüğü bilgisi gösterilir.
Önemli Not : 39. ve 68. Satırdaki Metinleri İstediğiniz Gibi Değiştirebilirsiniz.

<?php
/**
 * Plugin Name: JPG-PNG To WEBP Converter
 * Description: Yüklenen görselleri otomatik olarak WEBP formatına dönüştürür. 39. ve 68. Satırdaki  Metinleri Değiştirebilirsiniz.
 * Version: 1.0
 * Author: İbrahim Tosun
 */

if (!defined('ABSPATH')) {
    exit;
}

// Admin menüye sayaç ekleme
function oltutasi_webp_admin_menu() {
    add_menu_page('WEBP', 'WEBP', 'manage_options', 'oltutasi-webp', 'oltutasi_webp_admin_page');
}
add_action('admin_menu', 'oltutasi_webp_admin_menu');

// Admin paneli sayfası
function oltutasi_webp_admin_page() {
    $count = get_option('oltutasi_webp_count', 0);
    echo '<div class="wrap"><h1>JPG-PNG To WEBP Converter</h1>';
    echo '<p>Dönüştürülen toplam resim sayısı: <strong>' . esc_html($count) . '</strong></p>';
    echo '</div>';
}

// Görsel yükleme işlemini dinleyerek dönüştürme işlemini yapma
function oltutasi_webp_convert($metadata, $attachment_id) {
    $file_path = get_attached_file($attachment_id);
    $file_info = pathinfo($file_path);
    $upload_dir = wp_upload_dir();

    if (!isset($file_info['extension']) || !in_array(strtolower($file_info['extension']), ['jpg', 'jpeg', 'png', 'gif', 'webp'])) {
        return $metadata;
    }

    // Yeni dosya ismini belirleme
    $count = get_option('oltutasi_webp_count', 0) + 1;
    $new_file_name = 'oltutasi' . $count . '.webp';
    $new_file_path = $upload_dir['path'] . '/' . $new_file_name;

    // WebP formatına dönüştürme
    $image = imagecreatefromstring(file_get_contents($file_path));
    if ($image !== false) {
        imagewebp($image, $new_file_path, 80);
        imagedestroy($image);

        // Yeni dosya adını ayarla
        update_attached_file($attachment_id, $new_file_path);
        wp_update_post(['ID' => $attachment_id, 'post_title' => $new_file_name]);

        // Alt metin ekleme
        update_post_meta($attachment_id, '_wp_attachment_image_alt', 'oltutasi');

        // Orijinal dosyayı silme
        if (file_exists($file_path)) {
            wp_delete_file($file_path);
        }
        
        // Sayaç güncelleme
        update_option('oltutasi_webp_count', $count);
    }

    // Küçük boyutlu resimleri de WebP formatında oluşturma ve isimlendirme
    if (!empty($metadata['sizes'])) {
        foreach ($metadata['sizes'] as $size => $data) {
            $size_path = $upload_dir['path'] . '/' . $data['file'];
            $size_webp_name = 'oltutasi' . $count . '-' . $size . '.webp';
            $size_webp_path = $upload_dir['path'] . '/' . $size_webp_name;
            
            $size_image = imagecreatefromstring(file_get_contents($size_path));
            if ($size_image !== false) {
                imagewebp($size_image, $size_webp_path, 80);
                imagedestroy($size_image);
                if (file_exists($size_path)) {
                    wp_delete_file($size_path);
                }
                $metadata['sizes'][$size]['file'] = $size_webp_name;
            }
        }
    }
    
    return $metadata;
}
add_filter('wp_generate_attachment_metadata', 'oltutasi_webp_convert', 10, 2);