// Ensure lazy loading and adaptive delivery $upload['smushit_lazy'] = true; // Generate responsive image sizes (WordPress style) $sizes = array('thumbnail' => 150, 'medium' => 300, 'large' => 1024); $responsive = array(); foreach ($sizes as $label => $width) { if ($image_info && isset($image_info[0]) && $image_info[0] > $width) { $resized_path = preg_replace('/\.[^.]+$/', '-' . $label . '.$0', $image_path); if (function_exists('imagecreatetruecolor')) { switch ($mime) { case 'image/jpeg': $src = imagecreatefromjpeg($image_path); break; case 'image/png': $src = imagecreatefrompng($image_path); break; case 'image/gif': $src = imagecreatefromgif($image_path); break; default: $src = null; } if ($src) { $height = intval($width * $image_info[1] / $image_info[0]); $dst = imagecreatetruecolor($width, $height); imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $image_info[0], $image_info[1]); switch ($mime) { case 'image/jpeg': imagejpeg($dst, $resized_path); break; case 'image/png': imagepng($dst, $resized_path); break; case 'image/gif': imagegif($dst, $resized_path); break; } $responsive[$label] = $resized_path; imagedestroy($src); imagedestroy($dst); } } } } if (!empty($responsive)) { $upload['smushit_responsive'] = $responsive; } // Admin page for manual bulk optimization add_action('admin_menu', function() { add_management_page( 'SmushIt Bulk Optimization', 'SmushIt Bulk Optimization', 'manage_options', 'smushit-bulk-opt', function() { echo '

SmushIt Bulk Optimization

'; if (isset($_POST['smushit_bulk_optimize'])) { // Run bulk optimization $upload_dir = wp_upload_dir(); $base_dir = $upload_dir['basedir']; $image_mime_types = array('jpg', 'jpeg', 'png', 'gif'); $images = array(); $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($base_dir)); foreach ($rii as $file) { if ($file->isDir()) continue; $ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION)); if (in_array($ext, $image_mime_types, true)) { $images[] = array('file' => $file->getPathname(), 'type' => 'image/' . ($ext === 'jpg' ? 'jpeg' : $ext)); } } do_action('smushit_batch_optimize', $images); echo '

Bulk optimization triggered!

'; } echo '
'; submit_button('Run Bulk Optimization'); echo '
'; } ); }); // Scaffold: Batch/background image optimization via WP Cron add_action( 'smushit_batch_optimize', function( $uploads ) { foreach ( $uploads as $upload ) { smushit_optimize_uploaded_image( $upload ); } } ); if ( ! function_exists( 'register_activation_hook' ) ) { function register_activation_hook( $file, $callback ) {} } if ( ! function_exists( 'register_deactivation_hook' ) ) { function register_deactivation_hook( $file, $callback ) {} } // Plugin activation hook register_activation_hook( __FILE__, function() { // Schedule cron event for future bulk optimization if ( ! wp_next_scheduled( 'smushit_cron_bulk_optimize' ) ) { wp_schedule_event( time() + 300, 'daily', 'smushit_cron_bulk_optimize' ); } // Bulk optimize all existing images in uploads directory $upload_dir = wp_upload_dir(); $base_dir = $upload_dir['basedir']; $image_mime_types = array( 'jpg', 'jpeg', 'png', 'gif' ); $images = array(); $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($base_dir)); foreach ($rii as $file) { if ($file->isDir()) continue; $ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION)); if (in_array($ext, $image_mime_types, true)) { $images[] = array('file' => $file->getPathname(), 'type' => 'image/' . ($ext === 'jpg' ? 'jpeg' : $ext)); } } do_action('smushit_batch_optimize', $images); } ); // Plugin deactivation hook register_deactivation_hook( __FILE__, function() { // Remove scheduled cron event wp_clear_scheduled_hook( 'smushit_cron_bulk_optimize' ); // Cron event handler for scheduled bulk optimization add_action('smushit_cron_bulk_optimize', function() { $upload_dir = wp_upload_dir(); $base_dir = $upload_dir['basedir']; $image_mime_types = array('jpg', 'jpeg', 'png', 'gif'); $images = array(); $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($base_dir)); foreach ($rii as $file) { if ($file->isDir()) continue; $ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION)); if (in_array($ext, $image_mime_types, true)) { $images[] = array('file' => $file->getPathname(), 'type' => 'image/' . ($ext === 'jpg' ? 'jpeg' : $ext)); } } do_action('smushit_batch_optimize', $images); }); // Cleanup tasks (e.g., flush rewrite rules, remove options) } );