diff --git a/README.md b/README.md index 997cfbb..7c049ae 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ -# wpa-superstar-plugin +# WP ALLSTARS Superstar Plugin +A lean speed optimization plugin for WordPress. Speed Matters. -WP ALLSTARS Superstar Plugin for WordPress. Speed Matters. \ No newline at end of file +## Features +- Lazy loading of images +- CSS minification +- JS minification +- Modern, tabbed Admin UI with AJAX settings + +## Installation +1. Download or clone this repo. +2. Upload to `/wp-content/plugins/`. +3. Activate in WordPress Admin. + +## Configuration +- Go to Settings → WPA Superstar. +- Toggle features in General and Advanced tabs. + +## Logs +- Errors are logged to `wp-content/wpa-superstar.log`. \ No newline at end of file diff --git a/admin/css/wpa-superstar-admin.css b/admin/css/wpa-superstar-admin.css index 959914b..0bd76e9 100644 --- a/admin/css/wpa-superstar-admin.css +++ b/admin/css/wpa-superstar-admin.css @@ -23,4 +23,8 @@ .nav-tab-active { background: #fff; border-bottom: 1px solid #fff; +} +.wpa-superstar-toggle label { + display: flex; + align-items: center; } \ No newline at end of file diff --git a/admin/js/wpa-superstar-admin.js b/admin/js/wpa-superstar-admin.js index 5014e1b..472f321 100644 --- a/admin/js/wpa-superstar-admin.js +++ b/admin/js/wpa-superstar-admin.js @@ -1,14 +1,21 @@ jQuery(document).ready(function($) { $('.wpa-superstar-toggle input').on('change', function() { - var option = $(this).attr('name'); - var value = $(this).is(':checked') ? 1 : 0; + var $input = $(this); + var option = $input.attr('name'); + var value = $input.is(':checked') ? 1 : 0; $.post(wpaSuperstar.ajaxurl, { action: 'wpa_superstar_update_option', option: option, value: value, nonce: wpaSuperstar.nonce }, function(response) { - console.log(response); + if (response.success) { + $input.next('.wpa-status').remove(); + $input.after('Saved'); + setTimeout(function() { $('.wpa-status').fadeOut(); }, 2000); + } else { + console.error('Error:', response); + } }); }); }); \ No newline at end of file diff --git a/includes/speed-functions.php b/includes/speed-functions.php index 1f55b0b..5633840 100644 --- a/includes/speed-functions.php +++ b/includes/speed-functions.php @@ -3,15 +3,26 @@ * Speed optimization functions */ +// Logging function +function wpa_superstar_log( $message ) { + $log_file = WP_CONTENT_DIR . '/wpa-superstar.log'; + $time = current_time( 'mysql' ); + file_put_contents( $log_file, "[$time] $message\n", FILE_APPEND ); +} + function wpa_superstar_lazy_load_images( $content ) { if ( is_admin() || ! $content || ! get_option( 'wpa_superstar_lazy_load', 1 ) ) { return $content; } - $content = preg_replace( - '/(]+)\/?>/i', - '$1 loading="lazy" />', - $content - ); + try { + $content = preg_replace( + '/(]+)\/?>/i', + '$1 loading="lazy" />', + $content + ); + } catch ( Exception $e ) { + wpa_superstar_log( "Lazy load error: " . $e->getMessage() ); + } return $content; } add_filter( 'the_content', 'wpa_superstar_lazy_load_images' ); @@ -21,11 +32,15 @@ function wpa_superstar_minify_css( $html ) { if ( is_admin() || ! get_option( 'wpa_superstar_minify_css', 0 ) ) { return $html; } - $html = preg_replace( - array( '/\s+/', '/\/\*.*?\*\//s', '/;}/' ), - array( ' ', '', '}' ), - $html - ); + try { + $html = preg_replace( + array( '/\s+/', '/\/\*.*?\*\//s', '/;}/' ), + array( ' ', '', '}' ), + $html + ); + } catch ( Exception $e ) { + wpa_superstar_log( "CSS minify error: " . $e->getMessage() ); + } return trim( $html ); } add_filter( 'style_loader_tag', 'wpa_superstar_minify_css' ); @@ -34,11 +49,15 @@ function wpa_superstar_minify_js( $html ) { if ( is_admin() || ! get_option( 'wpa_superstar_minify_js', 0 ) ) { return $html; } - $html = preg_replace( - array( '/\s+/', '/\/\*.*?\*\//s', '//.*?\n/' ), - array( ' ', '', '' ), - $html - ); + try { + $html = preg_replace( + array( '/\s+/', '/\/\*.*?\*\//s', '//.*?\n/' ), + array( ' ', '', '' ), + $html + ); + } catch ( Exception $e ) { + wpa_superstar_log( "JS minify error: " . $e->getMessage() ); + } return trim( $html ); } add_filter( 'script_loader_tag', 'wpa_superstar_minify_js' ); \ No newline at end of file