Kalau kamu punya website berbasis WordPress, apalagi jenis web sekolah atau portal berita, pasti pernah ketemu masalah klasik, foto yang di-upload ukurannya kegedean. Niatnya cuma mau pasang dokumentasi kegiatan atau gambar berita, tapi efeknya malah bikin website jadi lemot.

Saya memang menerapkan konsep ini di website saya, momenpedia.com, sebuah platform undangan digital berbasis SAAS. Di sana user bisa buat undangan sendiri sehingga bebas upload foto sendiri untuk kebutuhan undangan.

Dari pengalaman itulah saya sadar, masalah ukuran gambar itu nggak cuma terjadi di platform saya, tapi juga sangat umum di website bahkan web berbasis WordPress seperti beberapa web sekolah yang saya handle.

Masalah yang Sering Terjadi di Web Saya

Kebanyakan user upload foto langsung dari HP/Kamera/PC tanpa di kompres dulu. Hasilnya:

Di web sekolah yang saya handle kondisinya mirip. Foto kegiatan, liputan acara, atau galeri biasanya di-upload apa adanya oleh admin. Lama-lama:

Solusi Paling Masuk Akal adalah WebP

Dari pengalaman saya, format WebP itu solusi paling realistis. Ukurannya jauh lebih kecil dibanding JPG atau PNG tapi kualitas visualnya tetap terjaga.

Gambaran sederhananya:

Artinya tanpa minta user ribet kompres manual, performa website bisa terjaga.

Cara Kerjanya

Alurnya simpel:

  1. User upload foto seperti biasa
  2. Code otomatis mengubah ke WebP
  3. Yang ditampilkan di website versi ringan
  4. Semua berjalan di belakang layar

Jadi cocok banget untuk:

Kode Auto Convert ke WebP

Buat pengguna website berbasis WordPress, kamu bisa pakai cara ini. Kodenya bisa dipasang di:

/**
 * This snippet automatically converts Images to WebP
 * Source https://key2blogging.com
 */

add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
function wpturbo_handle_upload_convert_to_webp($upload) {
    if (in_array($upload['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
        $file_path = $upload['file'];
        if (extension_loaded('imagick') || extension_loaded('gd')) {
            $image_editor = wp_get_image_editor($file_path);
            if (!is_wp_error($image_editor)) {
                // Set WebP quality (adjust as needed)
                $quality = 80; // Adjust between 0 (low) to 100 (high)

                $image_editor->set_quality($quality); // Set quality for WebP conversion
                
                $file_info = pathinfo($file_path);
                $dirname = $file_info['dirname'];
                $filename = $file_info['filename'];
                $def_filename = wp_unique_filename($dirname, $filename . '.webp');
                $new_file_path = $dirname . '/' . $def_filename;
                
                $saved_image = $image_editor->save($new_file_path, 'image/webp');

                if (!is_wp_error($saved_image) && file_exists($saved_image['path'])) {
                    // Update the upload data to use the WebP image
                    $upload['file'] = $saved_image['path'];
                    $upload['url'] = str_replace(basename($upload['url']), basename($saved_image['path']), $upload['url']);
                    $upload['type'] = 'image/webp';

                    // Optionally delete the original file
                    @unlink($file_path);
                }
            }
        }
    }

    return $upload;
}

Begitu kode ini aktif, setiap foto JPG atau PNG yang di-upload di akan otomatis berubah jadi WebP. User tetap upload seperti biasa tanpa perlu mikirin ukuran.

Kenapa Wajib Dipakai?

Berdasarkan pengalaman saya mengelola Momenpedia dan lihat banyak website WordPress, cara ini membantu banget:

Intinya, ini solusi praktis tanpa perlu mengubah kebiasaan pengguna.

Semoga sharing ini bermanfaat buat kamu yang mengelola website berbasis WordPress, terutama untuk web sekolah atau berita yang tiap hari ketemu urusan upload foto 👍