From 616726ac6f813ea7ac0cbdd628c82464d0d03923 Mon Sep 17 00:00:00 2001 From: "mai.tan" Date: Thu, 21 Mar 2019 18:26:15 +0900 Subject: [PATCH 1/3] WIP for 1.0.7 --- _dist_/VERSION | 2 +- admin/class-defer-js-admin.php | 4 +-- composer.lock | 8 ++--- defer-wordpress.php | 47 +++++++++++++++++---------- includes/class-defer-js-activator.php | 28 ++++++++++++++++ includes/class-defer-js-loader.php | 6 ++-- includes/class-defer-js.php | 10 +++--- public/class-defer-js-public.php | 4 +-- 8 files changed, 75 insertions(+), 34 deletions(-) diff --git a/_dist_/VERSION b/_dist_/VERSION index ece61c6..f9cbc01 100644 --- a/_dist_/VERSION +++ b/_dist_/VERSION @@ -1 +1 @@ -1.0.6 \ No newline at end of file +1.0.7 \ No newline at end of file diff --git a/admin/class-defer-js-admin.php b/admin/class-defer-js-admin.php index 4102458..ca8dae6 100755 --- a/admin/class-defer-js-admin.php +++ b/admin/class-defer-js-admin.php @@ -94,8 +94,8 @@ public function enqueue_scripts() // wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/defer-js-admin.js', ['jquery'], $this->version, false); } - public function enable_defer_js() + public function enable_defer_wordpress() { - ob_start('ob_defer_js'); + ob_start('ob_defer_wordpress'); } } diff --git a/composer.lock b/composer.lock index 41b257b..b4469e0 100644 --- a/composer.lock +++ b/composer.lock @@ -12,12 +12,12 @@ "source": { "type": "git", "url": "https://github.com/shinsenter/defer.php.git", - "reference": "3e3bfba8f4af73de7efc99a543d0a40015bca0a9" + "reference": "337bb554bebe7f2dd88065c82e606aee880e2337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shinsenter/defer.php/zipball/3e3bfba8f4af73de7efc99a543d0a40015bca0a9", - "reference": "3e3bfba8f4af73de7efc99a543d0a40015bca0a9", + "url": "https://api.github.com/repos/shinsenter/defer.php/zipball/337bb554bebe7f2dd88065c82e606aee880e2337", + "reference": "337bb554bebe7f2dd88065c82e606aee880e2337", "shasum": "" }, "require": { @@ -73,7 +73,7 @@ "tiny-library", "website-performance" ], - "time": "2019-03-20T10:50:32+00:00" + "time": "2019-03-21T09:03:00+00:00" } ], "packages-dev": [], diff --git a/defer-wordpress.php b/defer-wordpress.php index 0565136..3dc11ff 100755 --- a/defer-wordpress.php +++ b/defer-wordpress.php @@ -16,12 +16,19 @@ die; } +/* + * Currently plugin version. + * Rename this for your plugin and update it as you release new versions. + */ +define('DEFER_WORDPRESS_PLUGIN_VERSION', '1.0.7'); +define('DEFER_JS_PREFIX', 'shinsenter_deferjs_'); + /* * @wordpress-plugin * Plugin Name: A performant lazy loader (defer.js) * Plugin URI: https://github.com/shinsenter/defer-wordpress * Description: 🔌 A Wordpress plugin integrating my beloved "defer.js" library into your websites. Hope you guys like it. - * Version: 1.0.6 + * Version: 1.0.7 * Author: MAI NHUT TAN * Author URI: https://code.shin.company/ * License: GPL-2.0+ @@ -31,15 +38,21 @@ */ /* - * Currently plugin version. - * Start at version 1.0.0 and use SemVer - https://semver.org - * Rename this for your plugin and update it as you release new versions. + * defer.js library version */ -define('DEFER_JS_VERSION', '1.0.6'); -define('DEFER_JS_PREFIX', 'shinsenter_deferjs_'); +if (!defined('DEFER_JS_VERSION')) { + define('DEFER_JS_VERSION', 'latest'); +} + +if (!defined('DEFER_JS_CACHE_SUFFIX')) { + define('DEFER_JS_CACHE_SUFFIX', '_' . DEFER_WORDPRESS_PLUGIN_VERSION); +} -if (!function_exists('ob_defer_js')) { - function ob_defer_js($buffer) +/* + * The main code + */ +if (!function_exists('ob_defer_wordpress')) { + function ob_defer_wordpress($buffer) { $optimized = null; @@ -62,10 +75,8 @@ function ob_defer_js($buffer) $defer->enable_defer_scripts = get_option(DEFER_JS_PREFIX . 'enable_defer_scripts', false); $defer->enable_defer_images = get_option(DEFER_JS_PREFIX . 'enable_defer_images', true); $defer->enable_defer_iframes = get_option(DEFER_JS_PREFIX . 'enable_defer_iframes', true); - $defer->defer_web_fonts = get_option(DEFER_JS_PREFIX . 'defer_web_fonts', true); - $defer->empty_gif = get_option(DEFER_JS_PREFIX . 'empty_gif', 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='); - $defer->empty_src = get_option(DEFER_JS_PREFIX . 'empty_src', 'about:blank'); + $defer->defer_web_fonts = get_option(DEFER_JS_PREFIX . 'defer_web_fonts', true); $defer->use_color_placeholder = get_option(DEFER_JS_PREFIX . 'use_color_placeholder', true); $optimized = $defer->fromHtml($buffer)->toHtml(); @@ -82,8 +93,9 @@ function ob_defer_js($buffer) * The code that runs during plugin activation. * This action is documented in includes/class-defer-js-activator.php */ -function activate_defer_js() +function activate_defer_wordpress() { + require_once __DIR__ . '/vendor/autoload.php'; require_once plugin_dir_path(__FILE__) . 'includes/class-defer-js-activator.php'; Defer_Js_Activator::activate(); } @@ -92,14 +104,15 @@ function activate_defer_js() * The code that runs during plugin deactivation. * This action is documented in includes/class-defer-js-deactivator.php */ -function deactivate_defer_js() +function deactivate_defer_wordpress() { + require_once __DIR__ . '/vendor/autoload.php'; require_once plugin_dir_path(__FILE__) . 'includes/class-defer-js-deactivator.php'; Defer_Js_Deactivator::deactivate(); } -register_activation_hook(__FILE__, 'activate_defer_js'); -register_deactivation_hook(__FILE__, 'deactivate_defer_js'); +register_activation_hook(__FILE__, 'activate_defer_wordpress'); +register_deactivation_hook(__FILE__, 'deactivate_defer_wordpress'); /** * The core plugin class that is used to define internationalization, @@ -116,7 +129,7 @@ function deactivate_defer_js() * * @since 1.0.0 */ -function run_defer_js() +function run_defer_wordpress() { require_once __DIR__ . '/vendor/autoload.php'; @@ -124,4 +137,4 @@ function run_defer_js() $plugin->run(); } -run_defer_js(); +run_defer_wordpress(); diff --git a/includes/class-defer-js-activator.php b/includes/class-defer-js-activator.php index e7ca40c..c2a3ded 100755 --- a/includes/class-defer-js-activator.php +++ b/includes/class-defer-js-activator.php @@ -30,5 +30,33 @@ class Defer_Js_Activator */ public static function activate() { + if (class_exists('shinsenter\Defer')) { + // Reset all options when activate the plugin + $defer = new \shinsenter\Defer(); + + $defer->append_defer_js = false; + $defer->default_defer_time = 50; + + $defer->enable_preloading = true; + $defer->enable_dns_prefetch = true; + $defer->fix_render_blocking = true; + $defer->minify_output_html = true; + + $defer->enable_defer_css = true; + $defer->enable_defer_scripts = false; + $defer->enable_defer_images = true; + $defer->enable_defer_iframes = true; + + $defer->defer_web_fonts = true; + $defer->use_color_placeholder = true; + + foreach ($defer->options as $key => $value) { + update_option(DEFER_JS_PREFIX . $key, $value); + } + + // Create library cache + $dummy = ''; + $defer->fromHtml($dummy)->toHtml(); + } } } diff --git a/includes/class-defer-js-loader.php b/includes/class-defer-js-loader.php index 8d3c82f..71904be 100755 --- a/includes/class-defer-js-loader.php +++ b/includes/class-defer-js-loader.php @@ -111,11 +111,11 @@ public function run() private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) { $hooks[] = [ - 'hook' => $hook, + 'hook' => (string) $hook, 'component' => $component, 'callback' => $callback, - 'priority' => $priority, - 'accepted_args' => $accepted_args, + 'priority' => (int) $priority, + 'accepted_args' => (int) $accepted_args, ]; return $hooks; diff --git a/includes/class-defer-js.php b/includes/class-defer-js.php index e295557..07d07e0 100755 --- a/includes/class-defer-js.php +++ b/includes/class-defer-js.php @@ -61,13 +61,13 @@ class Defer_Js */ public function __construct() { - if (defined('DEFER_JS_VERSION')) { - $this->version = DEFER_JS_VERSION; + if (defined('DEFER_WORDPRESS_PLUGIN_VERSION')) { + $this->version = DEFER_WORDPRESS_PLUGIN_VERSION; } else { $this->version = '1.0.0'; } - $this->plugin_name = 'defer-js'; + $this->plugin_name = 'defer-wordpress'; $this->load_dependencies(); $this->set_locale(); @@ -191,7 +191,7 @@ private function define_admin_hooks() // $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); // if (!(defined('WP_CLI') && WP_CLI)) { - // $this->loader->add_action('init', $plugin_admin, 'enable_defer_js', 2); + // $this->loader->add_action('init', $plugin_admin, 'enable_defer_wordpress', pi()); // } } @@ -209,7 +209,7 @@ private function define_public_hooks() // $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts'); if (!(defined('WP_CLI') && WP_CLI) && !is_admin()) { - $this->loader->add_action('init', $plugin_public, 'enable_defer_js', 2); + $this->loader->add_action('init', $plugin_public, 'enable_defer_wordpress', pi()); } } } diff --git a/public/class-defer-js-public.php b/public/class-defer-js-public.php index 1213381..bbe3fec 100755 --- a/public/class-defer-js-public.php +++ b/public/class-defer-js-public.php @@ -94,8 +94,8 @@ public function enqueue_scripts() // wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/defer-js-public.js', ['jquery'], $this->version, false); } - public function enable_defer_js() + public function enable_defer_wordpress() { - ob_start('ob_defer_js'); + ob_start('ob_defer_wordpress'); } } From 299823f14a659890ae729835694c9c692261f9aa Mon Sep 17 00:00:00 2001 From: "mai.tan" Date: Thu, 21 Mar 2019 18:47:01 +0900 Subject: [PATCH 2/3] Optimize for srcset --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index b4469e0..07c1f44 100644 --- a/composer.lock +++ b/composer.lock @@ -12,12 +12,12 @@ "source": { "type": "git", "url": "https://github.com/shinsenter/defer.php.git", - "reference": "337bb554bebe7f2dd88065c82e606aee880e2337" + "reference": "7ffb7a4733649d6cabf2fdf14fb966a124e9756f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shinsenter/defer.php/zipball/337bb554bebe7f2dd88065c82e606aee880e2337", - "reference": "337bb554bebe7f2dd88065c82e606aee880e2337", + "url": "https://api.github.com/repos/shinsenter/defer.php/zipball/7ffb7a4733649d6cabf2fdf14fb966a124e9756f", + "reference": "7ffb7a4733649d6cabf2fdf14fb966a124e9756f", "shasum": "" }, "require": { @@ -73,7 +73,7 @@ "tiny-library", "website-performance" ], - "time": "2019-03-21T09:03:00+00:00" + "time": "2019-03-21T09:44:36+00:00" } ], "packages-dev": [], From 98263b334692424d61414a24014cd8f4e2bb14be Mon Sep 17 00:00:00 2001 From: "mai.tan" Date: Thu, 21 Mar 2019 19:55:50 +0900 Subject: [PATCH 3/3] Update readme --- README.txt | 4 ++++ _dist_/deploy.sh | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 5631c9d..08652c7 100755 --- a/README.txt +++ b/README.txt @@ -102,6 +102,10 @@ Lazy loading content on web page can help reduce resource contention and improve == Changelog == +1.0.7 Optimized scriptloader, polyfill, scrset + +1.0.6 Small bug fixes (color placeholders, css) + 1.0.5 Migrate with defer.js library 1.0.0 ~ 1.0.4 The first implement diff --git a/_dist_/deploy.sh b/_dist_/deploy.sh index 6d83cff..449fb5a 100755 --- a/_dist_/deploy.sh +++ b/_dist_/deploy.sh @@ -29,7 +29,6 @@ rsync -aHxW --delete --exclude-from=$base_dir/_dist_/blacklist.txt $base_dir/ $p cd $plugin_dir mv trunk/defer-wordpress.php $plugin_dir/trunk/$plugin_name.php -sed -nE 's|A performant|Magic|g' $plugin_dir/trunk/$plugin_name.php svn stat svn add trunk/* --force