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