Version Description
Major version release. Added support for WordPress Embeds - Youtube, Vimeo, HTML5 video and iframe content from all sources.
Download this release
Release Info
Developer | a3rev |
Plugin | a3 Lazy Load |
Version | 1.1.0 |
Comparing to | |
See all releases |
Code changes from version 1.0.2 to 1.1.0
- a3-lazy-load.php +15 -5
- admin/a3-lazy-load-admin.php +13 -2
- admin/settings/template-settings/global-settings.php +185 -39
- assets/banner-772x250.png +0 -0
- assets/css/jquery.lazyloadxt.spinner.css +1 -2
- assets/js/jquery.lazyloadxt.js +29 -1
- assets/js/jquery.lazyloadxt.min.js +1 -2
- assets/screenshot-1.jpg +0 -0
- assets/screenshot-1.png +0 -0
- changelog.txt +0 -4
- classes/class-a3-lazy-load.php +269 -59
- includes/updates/a3-lazy-load-update-1.1.0.php +19 -0
- languages/a3_lazy_load.mo +0 -0
- languages/a3_lazy_load.po +127 -47
- readme.txt +67 -17
a3-lazy-load.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: a3 Lazy Load
|
4 |
Description: Speed up your site and enhance frontend user's visual experience in PC's, Tablets and mobile with a3 Lazy Load.
|
5 |
-
Version: 1.0
|
6 |
Author: a3 Revolution
|
7 |
Author URI: http://www.a3rev.com/
|
8 |
Requires at least: 3.8
|
@@ -17,7 +17,7 @@ License: GPLv2 or later
|
|
17 |
*/
|
18 |
?>
|
19 |
<?php
|
20 |
-
define('A3_LAZY_VERSION', '1.0
|
21 |
define('A3_LAZY_LOAD_FILE_PATH', dirname(__FILE__));
|
22 |
define('A3_LAZY_LOAD_DIR_NAME', basename(A3_LAZY_LOAD_FILE_PATH));
|
23 |
define('A3_LAZY_LOAD_FOLDER', dirname(plugin_basename(__FILE__)));
|
@@ -44,15 +44,25 @@ include( 'classes/class-a3-lazy-load-filter.php' );
|
|
44 |
include( 'admin/a3-lazy-load-admin.php' );
|
45 |
|
46 |
// Defined this function for check Lazy Load is enabled that 3rd party plugins or theme can use to check
|
47 |
-
$a3_lazy_load_global_settings = get_option( 'a3_lazy_load_global_settings', array( '
|
48 |
-
if ( 1 == $a3_lazy_load_global_settings['
|
49 |
function a3_lazy_load_enable() {
|
50 |
return true;
|
51 |
}
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
/**
|
55 |
* Call when the plugin is activated
|
56 |
*/
|
57 |
register_activation_hook(__FILE__, 'a3_lazy_load_activated');
|
58 |
-
?>
|
2 |
/*
|
3 |
Plugin Name: a3 Lazy Load
|
4 |
Description: Speed up your site and enhance frontend user's visual experience in PC's, Tablets and mobile with a3 Lazy Load.
|
5 |
+
Version: 1.1.0
|
6 |
Author: a3 Revolution
|
7 |
Author URI: http://www.a3rev.com/
|
8 |
Requires at least: 3.8
|
17 |
*/
|
18 |
?>
|
19 |
<?php
|
20 |
+
define('A3_LAZY_VERSION', '1.1.0');
|
21 |
define('A3_LAZY_LOAD_FILE_PATH', dirname(__FILE__));
|
22 |
define('A3_LAZY_LOAD_DIR_NAME', basename(A3_LAZY_LOAD_FILE_PATH));
|
23 |
define('A3_LAZY_LOAD_FOLDER', dirname(plugin_basename(__FILE__)));
|
44 |
include( 'admin/a3-lazy-load-admin.php' );
|
45 |
|
46 |
// Defined this function for check Lazy Load is enabled that 3rd party plugins or theme can use to check
|
47 |
+
$a3_lazy_load_global_settings = get_option( 'a3_lazy_load_global_settings', array( 'a3l_apply_lazyloadxt' => 1, 'a3l_apply_to_images' => 1, 'a3l_apply_to_videos' => 1 ) );
|
48 |
+
if ( 1 == $a3_lazy_load_global_settings['a3l_apply_lazyloadxt'] && !is_admin() && ( 1 == $a3_lazy_load_global_settings['a3l_apply_to_images'] || 1 == $a3_lazy_load_global_settings['a3l_apply_to_videos'] ) ) {
|
49 |
function a3_lazy_load_enable() {
|
50 |
return true;
|
51 |
}
|
52 |
}
|
53 |
+
if ( 1 == $a3_lazy_load_global_settings['a3l_apply_lazyloadxt'] && !is_admin() && 1 == $a3_lazy_load_global_settings['a3l_apply_to_images'] ) {
|
54 |
+
function a3_lazy_load_image_enable() {
|
55 |
+
return true;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
if ( 1 == $a3_lazy_load_global_settings['a3l_apply_lazyloadxt'] && !is_admin() && 1 == $a3_lazy_load_global_settings['a3l_apply_to_videos'] ) {
|
59 |
+
function a3_lazy_load_video_enable() {
|
60 |
+
return true;
|
61 |
+
}
|
62 |
+
}
|
63 |
|
64 |
/**
|
65 |
* Call when the plugin is activated
|
66 |
*/
|
67 |
register_activation_hook(__FILE__, 'a3_lazy_load_activated');
|
68 |
+
?>
|
admin/a3-lazy-load-admin.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
update_option('a3rev_lazy_load_plugin', 'a3_lazy_load');
|
3 |
|
4 |
function a3_lazy_load_activated(){
|
5 |
-
update_option('a3_lazy_load_version', '1.0
|
6 |
|
7 |
// Set Settings Default from Admin Init
|
8 |
global $a3_lazy_load_admin_init;
|
@@ -25,7 +25,7 @@ function a3_lazy_load_init() {
|
|
25 |
|
26 |
load_plugin_textdomain( 'a3_lazy_load', false, A3_LAZY_LOAD_FOLDER.'/languages' );
|
27 |
|
28 |
-
|
29 |
}
|
30 |
|
31 |
global $a3_lazy_load_admin_init;
|
@@ -42,4 +42,15 @@ add_filter( 'plugin_row_meta', array( 'A3_Lazy_Load_Hook_Filter', 'plugin_extra_
|
|
42 |
|
43 |
// Add admin sidebar menu css
|
44 |
add_action( 'admin_enqueue_scripts', array( 'A3_Lazy_Load_Hook_Filter', 'admin_sidebar_menu_css' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
?>
|
2 |
update_option('a3rev_lazy_load_plugin', 'a3_lazy_load');
|
3 |
|
4 |
function a3_lazy_load_activated(){
|
5 |
+
update_option('a3_lazy_load_version', '1.1.0');
|
6 |
|
7 |
// Set Settings Default from Admin Init
|
8 |
global $a3_lazy_load_admin_init;
|
25 |
|
26 |
load_plugin_textdomain( 'a3_lazy_load', false, A3_LAZY_LOAD_FOLDER.'/languages' );
|
27 |
|
28 |
+
a3_lazy_load_upgrade_plugin();
|
29 |
}
|
30 |
|
31 |
global $a3_lazy_load_admin_init;
|
42 |
|
43 |
// Add admin sidebar menu css
|
44 |
add_action( 'admin_enqueue_scripts', array( 'A3_Lazy_Load_Hook_Filter', 'admin_sidebar_menu_css' ) );
|
45 |
+
|
46 |
+
// Check upgrade functions
|
47 |
+
function a3_lazy_load_upgrade_plugin() {
|
48 |
+
|
49 |
+
if (version_compare(get_option('a3_lazy_load_version'), '1.1.0') === -1) {
|
50 |
+
include( A3_LAZY_LOAD_DIR. '/includes/updates/a3-lazy-load-update-1.1.0.php' );
|
51 |
+
update_option('a3_lazy_load_version', '1.1.0');
|
52 |
+
}
|
53 |
+
|
54 |
+
update_option('a3_lazy_load_version', '1.1.0');
|
55 |
+
}
|
56 |
?>
|
admin/settings/template-settings/global-settings.php
CHANGED
@@ -89,6 +89,12 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
89 |
|
90 |
add_action( $this->plugin_name . '_get_all_settings' , array( $this, 'get_settings' ) );
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
}
|
93 |
|
94 |
/*-----------------------------------------------------------------------------------*/
|
@@ -181,11 +187,10 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
181 |
array(
|
182 |
'type' => 'heading',
|
183 |
),
|
184 |
-
|
185 |
array(
|
186 |
'name' => __( 'Enable Lazy Load', 'a3_lazy_load' ),
|
187 |
-
'id' => '
|
188 |
-
'class' => '
|
189 |
'type' => 'onoff_checkbox',
|
190 |
'default' => true,
|
191 |
'checked_value' => true,
|
@@ -195,16 +200,20 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
195 |
),
|
196 |
|
197 |
array(
|
198 |
-
'name' => __( 'Apply For Objects', 'a3_lazy_load' ),
|
199 |
'type' => 'heading',
|
200 |
-
'
|
201 |
),
|
202 |
|
203 |
array(
|
204 |
-
'name'
|
205 |
-
'
|
|
|
|
|
|
|
|
|
|
|
206 |
'type' => 'onoff_checkbox',
|
207 |
-
'default' =>
|
208 |
'checked_value' => true,
|
209 |
'unchecked_value' => false,
|
210 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
@@ -212,40 +221,139 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
212 |
),
|
213 |
|
214 |
array(
|
215 |
-
|
216 |
-
|
|
|
|
|
|
|
|
|
|
|
217 |
'type' => 'onoff_checkbox',
|
218 |
-
'default' =>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
'checked_value' => true,
|
220 |
'unchecked_value' => false,
|
221 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
222 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
223 |
),
|
224 |
-
|
225 |
array(
|
226 |
'name' => __( 'Post Thumbnails', 'a3_lazy_load' ),
|
227 |
-
'id' => '
|
228 |
'type' => 'onoff_checkbox',
|
229 |
-
'default' =>
|
230 |
'checked_value' => true,
|
231 |
'unchecked_value' => false,
|
232 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
233 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
234 |
),
|
235 |
-
|
236 |
array(
|
237 |
'name' => __( 'Gravatars', 'a3_lazy_load' ),
|
238 |
-
'id' => '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
'type' => 'onoff_checkbox',
|
240 |
-
'default' =>
|
241 |
'checked_value' => true,
|
242 |
'unchecked_value' => false,
|
243 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
244 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
245 |
),
|
246 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
array(
|
248 |
'name' => __( 'Theme Loader Function', 'a3_lazy_load' ),
|
|
|
249 |
'id' => 'a3l_theme_loader',
|
250 |
'type' => 'switcher_checkbox',
|
251 |
'default' => 'wp_footer',
|
@@ -256,13 +364,10 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
256 |
),
|
257 |
|
258 |
array(
|
259 |
-
'name'
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
'default' => ""
|
264 |
-
),
|
265 |
-
|
266 |
array(
|
267 |
'name' => __( 'Disable On WPTouch', 'a3_lazy_load' ),
|
268 |
'desc' => __("Disables a3 Lazy Load when the WPTouch mobile theme is used", 'a3_lazy_load'),
|
@@ -274,7 +379,6 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
274 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
275 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
276 |
),
|
277 |
-
|
278 |
array(
|
279 |
'name' => __( 'Disable On MobilePress', 'a3_lazy_load' ),
|
280 |
'desc' => __("Disables a3 Lazy Load when the MobilePress mobile theme is used", 'a3_lazy_load'),
|
@@ -290,51 +394,93 @@ class A3_Lazy_Load_Global_Settings extends A3_Lazy_Load_Admin_UI
|
|
290 |
array(
|
291 |
'name' => __( 'Effect & Style', 'a3_lazy_load' ),
|
292 |
'id' => "a3l_settings_style",
|
293 |
-
'class' => '
|
294 |
'type' => 'heading',
|
295 |
),
|
296 |
-
|
297 |
array(
|
298 |
-
'name' => __( 'Effect', 'a3_lazy_load' ),
|
299 |
'id' => 'a3l_effect',
|
300 |
'type' => 'switcher_checkbox',
|
301 |
-
'default' => '
|
302 |
'checked_value' => 'fadein',
|
303 |
'unchecked_value' => 'spinner',
|
304 |
-
'checked_label' => __( '
|
305 |
'unchecked_label' => __( 'SPINNER', 'a3_lazy_load' ),
|
306 |
),
|
307 |
-
|
308 |
array(
|
309 |
-
'name' => __( 'Background
|
310 |
'id' => 'a3l_effect_background',
|
311 |
'type' => 'color',
|
312 |
'default' => '#ffffff'
|
313 |
),
|
314 |
|
|
|
|
|
|
|
|
|
|
|
315 |
));
|
316 |
}
|
317 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
318 |
public function include_script() {
|
319 |
?>
|
320 |
<script>
|
321 |
(function($) {
|
322 |
$(document).ready(function() {
|
323 |
|
324 |
-
if ( $("input.
|
325 |
-
$(".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
} else {
|
327 |
-
$("
|
328 |
}
|
329 |
|
330 |
-
$(document).on( "a3rev-ui-onoff_checkbox-switch", '
|
331 |
-
$("
|
332 |
if ( status == 'true' ) {
|
333 |
-
$("
|
334 |
} else {
|
335 |
-
$("
|
336 |
}
|
337 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
});
|
339 |
})(jQuery);
|
340 |
</script>
|
89 |
|
90 |
add_action( $this->plugin_name . '_get_all_settings' , array( $this, 'get_settings' ) );
|
91 |
|
92 |
+
add_action( $this->plugin_name . '_settings_a3l_container_start_before', array( $this, 'a3l_container_start' ) );
|
93 |
+
add_action( $this->plugin_name . '_settings_a3l_container_end_after', array( $this, 'a3l_container_end' ) );
|
94 |
+
|
95 |
+
//add_action( $this->plugin_name . '_settings_a3l_videos_start_before', array( $this, 'a3l_videos_start' ) );
|
96 |
+
//add_action( $this->plugin_name . '_settings_a3l_videos_end_after', array( $this, 'a3l_videos_end' ) );
|
97 |
+
|
98 |
}
|
99 |
|
100 |
/*-----------------------------------------------------------------------------------*/
|
187 |
array(
|
188 |
'type' => 'heading',
|
189 |
),
|
|
|
190 |
array(
|
191 |
'name' => __( 'Enable Lazy Load', 'a3_lazy_load' ),
|
192 |
+
'id' => 'a3l_apply_lazyloadxt',
|
193 |
+
'class' => 'a3l_apply_to_load',
|
194 |
'type' => 'onoff_checkbox',
|
195 |
'default' => true,
|
196 |
'checked_value' => true,
|
200 |
),
|
201 |
|
202 |
array(
|
|
|
203 |
'type' => 'heading',
|
204 |
+
'id' => 'a3l_container_start'
|
205 |
),
|
206 |
|
207 |
array(
|
208 |
+
'name' => __( 'Lazy Load Images', 'a3_lazy_load' ),
|
209 |
+
'type' => 'heading',
|
210 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_images_container'
|
211 |
+
),
|
212 |
+
array(
|
213 |
+
'name' => __( 'Enable Lazy Load for Images', 'a3_lazy_load' ),
|
214 |
+
'id' => 'a3l_apply_to_images',
|
215 |
'type' => 'onoff_checkbox',
|
216 |
+
'default' => true,
|
217 |
'checked_value' => true,
|
218 |
'unchecked_value' => false,
|
219 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
221 |
),
|
222 |
|
223 |
array(
|
224 |
+
'type' => 'heading',
|
225 |
+
'id' => 'a3l_images_start',
|
226 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_load_images_container'
|
227 |
+
),
|
228 |
+
array(
|
229 |
+
'name' => __( 'Images in Content', 'a3_lazy_load' ),
|
230 |
+
'id' => 'a3l_apply_image_to_content',
|
231 |
'type' => 'onoff_checkbox',
|
232 |
+
'default' => true,
|
233 |
+
'checked_value' => true,
|
234 |
+
'unchecked_value' => false,
|
235 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
236 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
237 |
+
),
|
238 |
+
array(
|
239 |
+
'name' => __( 'Images in Widgets', 'a3_lazy_load' ),
|
240 |
+
'id' => 'a3l_apply_image_to_textwidget',
|
241 |
+
'type' => 'onoff_checkbox',
|
242 |
+
'default' => true,
|
243 |
'checked_value' => true,
|
244 |
'unchecked_value' => false,
|
245 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
246 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
247 |
),
|
|
|
248 |
array(
|
249 |
'name' => __( 'Post Thumbnails', 'a3_lazy_load' ),
|
250 |
+
'id' => 'a3l_apply_image_to_postthumbnails',
|
251 |
'type' => 'onoff_checkbox',
|
252 |
+
'default' => true,
|
253 |
'checked_value' => true,
|
254 |
'unchecked_value' => false,
|
255 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
256 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
257 |
),
|
|
|
258 |
array(
|
259 |
'name' => __( 'Gravatars', 'a3_lazy_load' ),
|
260 |
+
'id' => 'a3l_apply_image_to_gravatars',
|
261 |
+
'type' => 'onoff_checkbox',
|
262 |
+
'default' => true,
|
263 |
+
'checked_value' => true,
|
264 |
+
'unchecked_value' => false,
|
265 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
266 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
267 |
+
),
|
268 |
+
array(
|
269 |
+
'name' => __( 'Skip Images Classes', 'a3_lazy_load' ),
|
270 |
+
'id' => 'a3l_skip_image_with_class',
|
271 |
+
'desc' => __('Comma separated. Example: "no-lazy, lazy-ignore, image-235"', 'a3_lazy_load'),
|
272 |
+
'type' => 'text',
|
273 |
+
'default' => ""
|
274 |
+
),
|
275 |
+
array(
|
276 |
+
'name' => __( 'Noscript Support', 'a3_lazy_load' ),
|
277 |
+
'id' => 'a3l_image_include_noscript',
|
278 |
+
'desc' => __( 'Turn ON to activate Noscript tag as a fallback to show images for users who have JavaScript disabled in their browser.', 'a3_lazy_load' ),
|
279 |
'type' => 'onoff_checkbox',
|
280 |
+
'default' => true,
|
281 |
'checked_value' => true,
|
282 |
'unchecked_value' => false,
|
283 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
284 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
285 |
),
|
286 |
|
287 |
+
|
288 |
+
array(
|
289 |
+
'name' => __( 'Lazy Load Videos and iframes', 'a3_lazy_load' ),
|
290 |
+
'type' => 'heading',
|
291 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_videos_container'
|
292 |
+
),
|
293 |
+
array(
|
294 |
+
'name' => __( 'Video and iframes', 'a3_lazy_load' ),
|
295 |
+
'desc' => sprintf( __( 'Turn ON to activate Lazy Load for <a href="%s" target="_blank">WordPress Embeds</a>, <a href="%s" target="_blank">HTML5 Video</a> and content loaded by iframe from all sources. Note: WordPress Shortcode is not supported.', 'a3_lazy_load' ), 'http://codex.wordpress.org/Embeds/', 'http://www.w3schools.com/html/html5_video.asp' ),
|
296 |
+
'id' => 'a3l_apply_to_videos',
|
297 |
+
'type' => 'onoff_checkbox',
|
298 |
+
'default' => true,
|
299 |
+
'checked_value' => true,
|
300 |
+
'unchecked_value' => false,
|
301 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
302 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
303 |
+
),
|
304 |
+
|
305 |
+
array(
|
306 |
+
'type' => 'heading',
|
307 |
+
'id' => 'a3l_videos_start',
|
308 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_load_videos_container'
|
309 |
+
),
|
310 |
+
array(
|
311 |
+
'name' => __( 'In Content', 'a3_lazy_load' ),
|
312 |
+
'id' => 'a3l_apply_video_to_content',
|
313 |
+
'type' => 'onoff_checkbox',
|
314 |
+
'default' => true,
|
315 |
+
'checked_value' => true,
|
316 |
+
'unchecked_value' => false,
|
317 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
318 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
319 |
+
),
|
320 |
+
array(
|
321 |
+
'name' => __( 'In Widgets', 'a3_lazy_load' ),
|
322 |
+
'id' => 'a3l_apply_video_to_textwidget',
|
323 |
+
'type' => 'onoff_checkbox',
|
324 |
+
'default' => true,
|
325 |
+
'checked_value' => true,
|
326 |
+
'unchecked_value' => false,
|
327 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
328 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
329 |
+
),
|
330 |
+
array(
|
331 |
+
'name' => __( 'Skip Videos Classes', 'a3_lazy_load' ),
|
332 |
+
'id' => 'a3l_skip_video_with_class',
|
333 |
+
'desc' => __('Comma separated. Example: "no-lazy, lazy-ignore, video-235"', 'a3_lazy_load'),
|
334 |
+
'type' => 'text',
|
335 |
+
'default' => ""
|
336 |
+
),
|
337 |
+
array(
|
338 |
+
'name' => __( 'Noscript Support', 'a3_lazy_load' ),
|
339 |
+
'id' => 'a3l_video_include_noscript',
|
340 |
+
'desc' => __( 'Turn ON to activate Noscript tag as a fallback to show WordPress Embeds, HTML 5 Video and iframe loaded content for users who have JavaScript disabled in their browser.', 'a3_lazy_load' ),
|
341 |
+
'type' => 'onoff_checkbox',
|
342 |
+
'default' => true,
|
343 |
+
'checked_value' => true,
|
344 |
+
'unchecked_value' => false,
|
345 |
+
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
346 |
+
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
347 |
+
),
|
348 |
+
|
349 |
+
array(
|
350 |
+
'name' => __( 'Script Load Optimization', 'a3_lazy_load' ),
|
351 |
+
'type' => 'heading',
|
352 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_script_container'
|
353 |
+
),
|
354 |
array(
|
355 |
'name' => __( 'Theme Loader Function', 'a3_lazy_load' ),
|
356 |
+
'desc' => __( 'Your theme must have the wp_footer() function if you select FOOTER load.', 'a3_lazy_load' ),
|
357 |
'id' => 'a3l_theme_loader',
|
358 |
'type' => 'switcher_checkbox',
|
359 |
'default' => 'wp_footer',
|
364 |
),
|
365 |
|
366 |
array(
|
367 |
+
'name' => __( 'WordPress Mobile Template Plugins', 'a3_lazy_load' ),
|
368 |
+
'type' => 'heading',
|
369 |
+
'class' => 'a3l_apply_to_load_container'
|
370 |
+
),
|
|
|
|
|
|
|
371 |
array(
|
372 |
'name' => __( 'Disable On WPTouch', 'a3_lazy_load' ),
|
373 |
'desc' => __("Disables a3 Lazy Load when the WPTouch mobile theme is used", 'a3_lazy_load'),
|
379 |
'checked_label' => __( 'ON', 'a3_lazy_load' ),
|
380 |
'unchecked_label' => __( 'OFF', 'a3_lazy_load' ),
|
381 |
),
|
|
|
382 |
array(
|
383 |
'name' => __( 'Disable On MobilePress', 'a3_lazy_load' ),
|
384 |
'desc' => __("Disables a3 Lazy Load when the MobilePress mobile theme is used", 'a3_lazy_load'),
|
394 |
array(
|
395 |
'name' => __( 'Effect & Style', 'a3_lazy_load' ),
|
396 |
'id' => "a3l_settings_style",
|
397 |
+
'class' => 'a3l_apply_to_load_container a3l_apply_to_effect_container',
|
398 |
'type' => 'heading',
|
399 |
),
|
|
|
400 |
array(
|
401 |
+
'name' => __( 'Loading Effect', 'a3_lazy_load' ),
|
402 |
'id' => 'a3l_effect',
|
403 |
'type' => 'switcher_checkbox',
|
404 |
+
'default' => 'spinner',
|
405 |
'checked_value' => 'fadein',
|
406 |
'unchecked_value' => 'spinner',
|
407 |
+
'checked_label' => __( 'FADE IN', 'a3_lazy_load' ),
|
408 |
'unchecked_label' => __( 'SPINNER', 'a3_lazy_load' ),
|
409 |
),
|
|
|
410 |
array(
|
411 |
+
'name' => __( 'Loading Background Colour', 'a3_lazy_load' ),
|
412 |
'id' => 'a3l_effect_background',
|
413 |
'type' => 'color',
|
414 |
'default' => '#ffffff'
|
415 |
),
|
416 |
|
417 |
+
array(
|
418 |
+
'type' => 'heading',
|
419 |
+
'id' => 'a3l_container_end'
|
420 |
+
),
|
421 |
+
|
422 |
));
|
423 |
}
|
424 |
|
425 |
+
public function a3l_container_start() {
|
426 |
+
echo '<div class="a3l_container">';
|
427 |
+
}
|
428 |
+
public function a3l_container_end() {
|
429 |
+
echo '</div>';
|
430 |
+
}
|
431 |
+
|
432 |
public function include_script() {
|
433 |
?>
|
434 |
<script>
|
435 |
(function($) {
|
436 |
$(document).ready(function() {
|
437 |
|
438 |
+
if ( $("input.a3l_apply_to_load").is(":checked") ) {
|
439 |
+
$(".a3l_container").css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
440 |
+
} else {
|
441 |
+
$(".a3l_container").css( {'visibility': 'hidden', 'height' : '0px', 'overflow' : 'hidden'} );
|
442 |
+
}
|
443 |
+
|
444 |
+
$(document).on( "a3rev-ui-onoff_checkbox-switch", '.a3l_apply_to_load', function( event, value, status ) {
|
445 |
+
$(".a3l_container").hide().css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
446 |
+
if ( status == 'true' ) {
|
447 |
+
$(".a3l_container").slideDown();
|
448 |
+
} else {
|
449 |
+
$(".a3l_container").slideUp();
|
450 |
+
}
|
451 |
+
});
|
452 |
+
|
453 |
+
if ( $("input#a3_lazy_load_global_settings_a3l_apply_to_images:checked").val() == '1') {
|
454 |
+
$("#a3l_images_start").css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
455 |
} else {
|
456 |
+
$("#a3l_images_start").css( {'visibility': 'hidden', 'height' : '0px', 'overflow' : 'hidden'} );
|
457 |
}
|
458 |
|
459 |
+
$(document).on( "a3rev-ui-onoff_checkbox-switch", '#a3_lazy_load_global_settings_a3l_apply_to_images', function( event, value, status ) {
|
460 |
+
$("#a3l_images_start").hide().css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
461 |
if ( status == 'true' ) {
|
462 |
+
$("#a3l_images_start").slideDown();
|
463 |
} else {
|
464 |
+
$("#a3l_images_start").slideUp();
|
465 |
}
|
466 |
});
|
467 |
+
|
468 |
+
if ( $("input#a3_lazy_load_global_settings_a3l_apply_to_videos:checked").val() == '1' ) {
|
469 |
+
$("#a3l_videos_start").css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
470 |
+
} else {
|
471 |
+
$("#a3l_videos_start").css( {'visibility': 'hidden', 'height' : '0px', 'overflow' : 'hidden'} );
|
472 |
+
}
|
473 |
+
|
474 |
+
$(document).on( "a3rev-ui-onoff_checkbox-switch", '#a3_lazy_load_global_settings_a3l_apply_to_videos', function( event, value, status ) {
|
475 |
+
$("#a3l_videos_start").hide().css( {'visibility': 'visible', 'height' : 'auto', 'overflow' : 'inherit'} );
|
476 |
+
if ( status == 'true' ) {
|
477 |
+
$("#a3l_videos_start").slideDown();
|
478 |
+
} else {
|
479 |
+
$("#a3l_videos_start").slideUp();
|
480 |
+
}
|
481 |
+
});
|
482 |
+
|
483 |
+
|
484 |
});
|
485 |
})(jQuery);
|
486 |
</script>
|
assets/banner-772x250.png
CHANGED
Binary file
|
assets/css/jquery.lazyloadxt.spinner.css
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
-
body .thumbnail_container .thumbnail img.lazy-hidden{}
|
2 |
.lazy-hidden,.entry img.lazy-hidden, img.thumbnail.lazy-hidden {
|
3 |
background-color: #ffffff;
|
4 |
background-image: url('loading.gif');
|
5 |
background-repeat: no-repeat;
|
6 |
background-position: 50% 50%;
|
7 |
-
}
|
|
|
1 |
.lazy-hidden,.entry img.lazy-hidden, img.thumbnail.lazy-hidden {
|
2 |
background-color: #ffffff;
|
3 |
background-image: url('loading.gif');
|
4 |
background-repeat: no-repeat;
|
5 |
background-position: 50% 50%;
|
6 |
+
}
|
assets/js/jquery.lazyloadxt.js
CHANGED
@@ -311,4 +311,32 @@
|
|
311 |
}
|
312 |
});
|
313 |
|
314 |
-
})(window.jQuery || window.Zepto || window.$, window, document);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
}
|
312 |
});
|
313 |
|
314 |
+
})(window.jQuery || window.Zepto || window.$, window, document);
|
315 |
+
|
316 |
+
(function ($) {
|
317 |
+
var options = $.lazyLoadXT;
|
318 |
+
|
319 |
+
options.selector += ',video,iframe[data-src],embed[data-src]';
|
320 |
+
options.videoPoster = 'data-poster';
|
321 |
+
|
322 |
+
$(document).on('lazyshow', 'video', function (e, $el) {
|
323 |
+
var srcAttr = $el.lazyLoadXT.srcAttr,
|
324 |
+
isFuncSrcAttr = $.isFunction(srcAttr);
|
325 |
+
|
326 |
+
$el
|
327 |
+
.attr('poster', $el.attr(options.videoPoster))
|
328 |
+
.children('source,track')
|
329 |
+
.each(function (index, el) {
|
330 |
+
var $child = $(el);
|
331 |
+
$child.attr('src', isFuncSrcAttr ? srcAttr($child) : $child.attr(srcAttr));
|
332 |
+
});
|
333 |
+
// reload video
|
334 |
+
this.load();
|
335 |
+
$(this).removeClass('lazy-hidden');
|
336 |
+
});
|
337 |
+
|
338 |
+
$(document).on('lazyshow', 'embed', function (e, $el) {
|
339 |
+
$(this).removeClass('lazy-hidden');
|
340 |
+
});
|
341 |
+
|
342 |
+
})(window.jQuery || window.Zepto || window.$);
|
assets/js/jquery.lazyloadxt.min.js
CHANGED
@@ -1,2 +1 @@
|
|
1 |
-
|
2 |
-
!function(a,b,c,d){function e(a,b){return a[b]===d?t[b]:a[b]}function f(){var a=b.pageYOffset;return a===d?r.scrollTop:a}function g(a,b){var c=t["on"+a];c&&(w(c)?c.call(b[0]):(c.addClass&&b.addClass(c.addClass),c.removeClass&&b.removeClass(c.removeClass))),b.trigger("lazy"+a,[b]),k()}function h(b){g(b.type,a(this).off(p,h))}function i(c){if(A.length){c=c||t.forceLoad,B=1/0;var d,e,i=f(),j=b.innerHeight||r.clientHeight,k=b.innerWidth||r.clientWidth;for(d=0,e=A.length;e>d;d++){var l,m=A[d],o=m[0],q=m[n],s=!1,u=c;if(z(r,o)){if(c||!q.visibleOnly||o.offsetWidth||o.offsetHeight){if(!u){var v=o.getBoundingClientRect(),x=q.edgeX,y=q.edgeY;l=v.top+i-y-j,u=i>=l&&v.bottom>-y&&v.left<=k+x&&v.right>-x}if(u){g("show",m);var C=q.srcAttr,D=w(C)?C(m):o.getAttribute(C);D&&(m.on(p,h),o.src=D),s=!0}else B>l&&(B=l)}}else s=!0;s&&(A.splice(d--,1),e--)}e||g("complete",a(r))}}function j(){C>1?(C=1,i(),setTimeout(j,t.throttle)):C=0}function k(a){A.length&&(a&&"scroll"===a.type&&a.currentTarget===b&&B>=f()||(C||setTimeout(j,0),C=2))}function l(){v.lazyLoadXT()}function m(){i(!0)}var n="lazyLoadXT",o="lazied",p="load error",q="lazy-hidden",r=c.documentElement||c.body,s=b.onscroll===d||!!b.operamini||!r.getBoundingClientRect,t={autoInit:!0,selector:"img[data-src]",blankImage:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",throttle:99,forceLoad:s,loadEvent:"pageshow",updateEvent:"load orientationchange resize scroll touchmove focus",forceEvent:"",oninit:{removeClass:"lazy"},onshow:{addClass:q},onload:{removeClass:q,addClass:"lazy-loaded"},onerror:{removeClass:q},checkDuplicates:!0},u={srcAttr:"data-src",edgeX:0,edgeY:0,visibleOnly:!0},v=a(b),w=a.isFunction,x=a.extend,y=a.data||function(b,c){return a(b).data(c)},z=a.contains||function(a,b){for(;b=b.parentNode;)if(b===a)return!0;return!1},A=[],B=0,C=0;a[n]=x(t,u,a[n]),a.fn[n]=function(c){c=c||{};var d,f=e(c,"blankImage"),h=e(c,"checkDuplicates"),i=e(c,"scrollContainer"),j={};a(i).on("scroll",k);for(d in u)j[d]=e(c,d);return this.each(function(d,e){if(e===b)a(t.selector).lazyLoadXT(c);else{if(h&&y(e,o))return;var i=a(e).data(o,1);f&&"IMG"===e.tagName&&!e.src&&(e.src=f),i[n]=x({},j),g("init",i),A.push(i)}})},a(c).ready(function(){g("start",v),v.on(t.loadEvent,l).on(t.updateEvent,k).on(t.forceEvent,m),a(c).on(t.updateEvent,k),t.autoInit&&l()})}(window.jQuery||window.Zepto||window.$,window,document);
|
1 |
+
(function(e,t,n,r){function w(e,t){return e[t]===r?l[t]:e[t]}function E(){var e=t.pageYOffset;return e===r?a.scrollTop:e}function S(e,t){var n=l["on"+e];if(n){if(p(n)){n.call(t[0])}else{if(n.addClass){t.addClass(n.addClass)}if(n.removeClass){t.removeClass(n.removeClass)}}}t.trigger("lazy"+e,[t]);C()}function x(t){S(t.type,e(this).off(o,x))}function T(n){if(!g.length){return}n=n||l.forceLoad;y=Infinity;var r=E(),s=t.innerHeight||a.clientHeight,u=t.innerWidth||a.clientWidth,f,c;for(f=0,c=g.length;f<c;f++){var h=g[f],d=h[0],v=h[i],b=false,w=n,T;if(!m(a,d)){b=true}else if(n||!v.visibleOnly||d.offsetWidth||d.offsetHeight){if(!w){var N=d.getBoundingClientRect(),C=v.edgeX,k=v.edgeY;T=N.top+r-k-s;w=T<=r&&N.bottom>-k&&N.left<=u+C&&N.right>-C}if(w){S("show",h);var L=v.srcAttr,A=p(L)?L(h):d.getAttribute(L);if(A){h.on(o,x);d.src=A}b=true}else{if(T<y){y=T}}}if(b){g.splice(f--,1);c--}}if(!c){S("complete",e(a))}}function N(){if(b>1){b=1;T();setTimeout(N,l.throttle)}else{b=0}}function C(e){if(!g.length){return}if(e&&e.type==="scroll"&&e.currentTarget===t){if(y>=E()){return}}if(!b){setTimeout(N,0)}b=2}function k(){h.lazyLoadXT()}function L(){T(true)}var i="lazyLoadXT",s="lazied",o="load error",u="lazy-hidden",a=n.documentElement||n.body,f=t.onscroll===r||!!t.operamini||!a.getBoundingClientRect,l={autoInit:true,selector:"img[data-src]",blankImage:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",throttle:99,forceLoad:f,loadEvent:"pageshow",updateEvent:"load orientationchange resize scroll touchmove focus",forceEvent:"",oninit:{removeClass:"lazy"},onshow:{addClass:u},onload:{removeClass:u,addClass:"lazy-loaded"},onerror:{removeClass:u},checkDuplicates:true},c={srcAttr:"data-src",edgeX:0,edgeY:0,visibleOnly:true},h=e(t),p=e.isFunction,d=e.extend,v=e.data||function(t,n){return e(t).data(n)},m=e.contains||function(e,t){while(t=t.parentNode){if(t===e){return true}}return false},g=[],y=0,b=0;e[i]=d(l,c,e[i]);e.fn[i]=function(n){n=n||{};var r=w(n,"blankImage"),o=w(n,"checkDuplicates"),u=w(n,"scrollContainer"),a={},f;e(u).on("scroll",C);for(f in c){a[f]=w(n,f)}return this.each(function(u,f){if(f===t){e(l.selector).lazyLoadXT(n)}else{if(o&&v(f,s)){return}var c=e(f).data(s,1);if(r&&f.tagName==="IMG"&&!f.src){f.src=r}c[i]=d({},a);S("init",c);g.push(c)}})};e(n).ready(function(){S("start",h);h.on(l.loadEvent,k).on(l.updateEvent,C).on(l.forceEvent,L);e(n).on(l.updateEvent,C);if(l.autoInit){k()}})})(window.jQuery||window.Zepto||window.$,window,document);(function(e){var t=e.lazyLoadXT;t.selector+=",video,iframe[data-src],embed[data-src]";t.videoPoster="data-poster";e(document).on("lazyshow","video",function(n,r){var i=r.lazyLoadXT.srcAttr,s=e.isFunction(i);r.attr("poster",r.attr(t.videoPoster)).children("source,track").each(function(t,n){var r=e(n);r.attr("src",s?i(r):r.attr(i))});this.load();e(this).removeClass("lazy-hidden")});e(document).on("lazyshow","embed",function(t,n){e(this).removeClass("lazy-hidden")})})(window.jQuery||window.Zepto||window.$)
|
|
assets/screenshot-1.jpg
ADDED
Binary file
|
assets/screenshot-1.png
DELETED
Binary file
|
changelog.txt
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
=== Changelog ===
|
2 |
-
|
3 |
-
= 1.0.0 - 2014/12/20 =
|
4 |
-
* First release.
|
|
|
|
|
|
|
|
classes/class-a3-lazy-load.php
CHANGED
@@ -3,7 +3,8 @@ class A3_Lazy_Load
|
|
3 |
{
|
4 |
const version = A3_LAZY_VERSION;
|
5 |
protected $_placeholder_url;
|
6 |
-
protected $
|
|
|
7 |
protected static $_instance;
|
8 |
|
9 |
function __construct() {
|
@@ -15,7 +16,11 @@ class A3_Lazy_Load
|
|
15 |
}
|
16 |
|
17 |
// Disable when not allow from global settings
|
18 |
-
if ( $a3_lazy_load_global_settings['
|
|
|
|
|
|
|
|
|
19 |
return;
|
20 |
}
|
21 |
|
@@ -38,33 +43,61 @@ class A3_Lazy_Load
|
|
38 |
}
|
39 |
|
40 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
|
|
|
|
|
41 |
|
42 |
-
add_filter( 'a3_lazy_load_html', array( $this, '
|
43 |
-
add_filter( 'a3_lazy_load_images', array( $this, 'filter' ), 10, 2 );
|
44 |
|
45 |
-
$
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
48 |
}
|
49 |
-
if ( is_array( $this->
|
50 |
-
$this->
|
51 |
} else {
|
52 |
-
$this->
|
53 |
}
|
54 |
|
55 |
-
|
|
|
56 |
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
62 |
}
|
63 |
-
if ( $
|
64 |
-
|
|
|
|
|
65 |
}
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
}
|
70 |
|
@@ -108,6 +141,17 @@ class A3_Lazy_Load
|
|
108 |
do_action('after_a3_lazy_load_xt_script');
|
109 |
}
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
static function is_wptouch() {
|
112 |
if ( function_exists( 'bnc_wptouch_is_mobile' ) && bnc_wptouch_is_mobile() ) {
|
113 |
return true;
|
@@ -149,28 +193,41 @@ class A3_Lazy_Load
|
|
149 |
return false;
|
150 |
}
|
151 |
|
152 |
-
static function
|
153 |
-
|
154 |
-
|
|
|
155 |
|
156 |
-
|
157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
-
static function get_attachment_image_attributes( $attr ) {
|
160 |
$A3_Lazy_Load = A3_Lazy_Load::_instance();
|
161 |
|
162 |
-
$
|
163 |
-
$attr['src'] = $A3_Lazy_Load->_placeholder_url;
|
164 |
-
$attr['class'] = 'lazy-hidden '. $attr['class'];
|
165 |
-
$attr['data-lazy-type'] = 'image';
|
166 |
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
}
|
169 |
|
170 |
-
static function
|
171 |
-
if( is_admin() ){
|
172 |
return $content;
|
173 |
}
|
|
|
174 |
$run_filter = true;
|
175 |
$run_filter = apply_filters( 'a3_lazy_load_run_filter', $run_filter );
|
176 |
|
@@ -184,32 +241,38 @@ class A3_Lazy_Load
|
|
184 |
|
185 |
$content = apply_filters( 'a3_lazy_load_images_before', $content );
|
186 |
|
187 |
-
$content = $A3_Lazy_Load->_filter_images( $content, $
|
188 |
|
189 |
$content = apply_filters( 'a3_lazy_load_images_after', $content );
|
190 |
|
191 |
return $content;
|
192 |
}
|
193 |
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
return $content;
|
198 |
|
199 |
-
|
200 |
-
|
201 |
-
return $content;
|
202 |
|
203 |
-
|
204 |
-
$
|
205 |
|
206 |
-
|
207 |
-
$
|
|
|
|
|
208 |
|
209 |
-
return $
|
210 |
}
|
211 |
|
212 |
-
protected function _filter_images( $content, $
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
$matches = array();
|
215 |
preg_match_all( '/<img[\s\r\n]+.*?>/is', $content, $matches );
|
@@ -217,8 +280,8 @@ class A3_Lazy_Load
|
|
217 |
$search = array();
|
218 |
$replace = array();
|
219 |
|
220 |
-
if ( is_array( $this->
|
221 |
-
$skip_images_preg_quoted = array_map( 'preg_quote', $this->
|
222 |
$skip_images_regex = sprintf( '/class=".*(%s).*"/s', implode( '|', $skip_images_preg_quoted ) );
|
223 |
}
|
224 |
|
@@ -226,7 +289,7 @@ class A3_Lazy_Load
|
|
226 |
foreach ( $matches[0] as $imgHTML ) {
|
227 |
|
228 |
// don't to the replacement if a skip class is provided and the image has the class, or if the image is a data-uri
|
229 |
-
if ( ! ( is_array( $this->
|
230 |
$i++;
|
231 |
// replace the src and add the data-src attribute
|
232 |
$replaceHTML = '';
|
@@ -239,7 +302,7 @@ class A3_Lazy_Load
|
|
239 |
$replaceHTML = preg_replace( '/<img/is', '<img class="lazy lazy-hidden"', $replaceHTML );
|
240 |
}
|
241 |
|
242 |
-
if( $
|
243 |
$replaceHTML .= '<noscript>' . $imgHTML . '</noscript>';
|
244 |
}
|
245 |
|
@@ -257,31 +320,178 @@ class A3_Lazy_Load
|
|
257 |
return $content;
|
258 |
}
|
259 |
|
260 |
-
protected function _filter_iframes( $content ) {
|
261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
262 |
$matches = array();
|
263 |
-
preg_match_all( '
|
264 |
|
265 |
$search = array();
|
266 |
$replace = array();
|
267 |
|
268 |
-
|
|
|
|
|
|
|
269 |
|
270 |
-
|
271 |
-
|
|
|
272 |
continue;
|
273 |
}
|
274 |
|
275 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
|
277 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
|
279 |
-
|
280 |
-
|
|
|
281 |
}
|
282 |
|
|
|
|
|
|
|
283 |
$content = str_replace( $search, $replace, $content );
|
284 |
|
|
|
285 |
return $content;
|
286 |
}
|
287 |
}
|
3 |
{
|
4 |
const version = A3_LAZY_VERSION;
|
5 |
protected $_placeholder_url;
|
6 |
+
protected $_skip_images_classes;
|
7 |
+
protected $_skip_videos_classes;
|
8 |
protected static $_instance;
|
9 |
|
10 |
function __construct() {
|
16 |
}
|
17 |
|
18 |
// Disable when not allow from global settings
|
19 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_lazyloadxt'] == false ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_to_images'] == false && $a3_lazy_load_global_settings['a3l_apply_to_videos'] == false ) {
|
24 |
return;
|
25 |
}
|
26 |
|
43 |
}
|
44 |
|
45 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
|
46 |
+
add_action( 'wp_print_scripts', array( $this, 'localize_printed_scripts' ), 5 );
|
47 |
+
add_action( 'wp_print_footer_scripts', array( $this, 'localize_printed_scripts' ), 5 );
|
48 |
|
49 |
+
add_filter( 'a3_lazy_load_html', array( $this, 'filter_html' ), 10, 2 );
|
|
|
50 |
|
51 |
+
$this->_placeholder_url = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
|
52 |
+
|
53 |
+
// Apply for Images
|
54 |
+
$skip_images_classes = apply_filters( 'a3_lazy_load_skip_images_classes', $a3_lazy_load_global_settings['a3l_skip_image_with_class'] );
|
55 |
+
if ( strlen( trim( $skip_images_classes ) ) ) {
|
56 |
+
$this->_skip_images_classes = array_map( 'trim', explode( ',', $skip_images_classes ) );
|
57 |
}
|
58 |
+
if ( is_array( $this->_skip_images_classes ) ) {
|
59 |
+
$this->_skip_images_classes = array_merge( array('a3-notlazy'), $this->_skip_images_classes );
|
60 |
} else {
|
61 |
+
$this->_skip_images_classes = array('a3-notlazy');
|
62 |
}
|
63 |
|
64 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_to_images'] == true ) {
|
65 |
+
add_filter( 'a3_lazy_load_images', array( $this, 'filter_images' ), 10, 2 );
|
66 |
|
67 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_image_to_content'] == true ) {
|
68 |
+
add_filter( 'the_content', array( $this, 'filter_content_images' ), 10 );
|
69 |
+
}
|
70 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_image_to_textwidget'] == true ) {
|
71 |
+
add_filter( 'widget_text', array( $this, 'filter_images' ), 200 );
|
72 |
+
}
|
73 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_image_to_postthumbnails'] == true ) {
|
74 |
+
add_filter( 'post_thumbnail_html', array( $this, 'filter_images' ), 200 );
|
75 |
+
}
|
76 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_image_to_gravatars'] == true ) {
|
77 |
+
add_filter( 'get_avatar', array( $this, 'filter_images' ), 200 );
|
78 |
+
}
|
79 |
}
|
80 |
+
|
81 |
+
// Apply for Videos
|
82 |
+
$skip_videos_classes = apply_filters( 'a3_lazy_load_skip_videos_classes', $a3_lazy_load_global_settings['a3l_skip_video_with_class'] );
|
83 |
+
if ( strlen( trim( $skip_videos_classes ) ) ) {
|
84 |
+
$this->_skip_videos_classes = array_map( 'trim', explode( ',', $skip_videos_classes ) );
|
85 |
}
|
86 |
+
if ( is_array( $this->_skip_videos_classes ) ) {
|
87 |
+
$this->_skip_videos_classes = array_merge( array('a3-notlazy'), $this->_skip_videos_classes );
|
88 |
+
} else {
|
89 |
+
$this->_skip_videos_classes = array('a3-notlazy');
|
90 |
}
|
91 |
+
|
92 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_to_videos'] == true ) {
|
93 |
+
add_filter( 'a3_lazy_load_videos', array( $this, 'filter_videos' ), 10, 2 );
|
94 |
+
|
95 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_video_to_content'] == true ) {
|
96 |
+
add_filter( 'the_content', array( $this, 'filter_videos' ), 10 );
|
97 |
+
}
|
98 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_video_to_textwidget'] == true ) {
|
99 |
+
add_filter( 'widget_text', array( $this, 'filter_videos' ), 200 );
|
100 |
+
}
|
101 |
}
|
102 |
}
|
103 |
|
141 |
do_action('after_a3_lazy_load_xt_script');
|
142 |
}
|
143 |
|
144 |
+
static function localize_printed_scripts() {
|
145 |
+
global $a3_lazy_load_global_settings;
|
146 |
+
|
147 |
+
if ( wp_script_is( 'jquery-lazyloadxt' ) ) {
|
148 |
+
wp_localize_script( 'jquery-lazyloadxt', 'a3_lazyload_params', apply_filters( 'a3_lazyload_params', array(
|
149 |
+
'apply_images' => $a3_lazy_load_global_settings['a3l_apply_to_images'],
|
150 |
+
'apply_videos' => $a3_lazy_load_global_settings['a3l_apply_to_videos']
|
151 |
+
) ) );
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
static function is_wptouch() {
|
156 |
if ( function_exists( 'bnc_wptouch_is_mobile' ) && bnc_wptouch_is_mobile() ) {
|
157 |
return true;
|
193 |
return false;
|
194 |
}
|
195 |
|
196 |
+
static function filter_html( $content, $include_noscript = null ) {
|
197 |
+
if ( is_admin() ) {
|
198 |
+
return $content;
|
199 |
+
}
|
200 |
|
201 |
+
$run_filter = true;
|
202 |
+
$run_filter = apply_filters( 'a3_lazy_load_run_filter', $run_filter );
|
203 |
+
|
204 |
+
if ( ! $run_filter ) {
|
205 |
+
return $content;
|
206 |
+
}
|
207 |
+
|
208 |
+
global $a3_lazy_load_global_settings;
|
209 |
|
|
|
210 |
$A3_Lazy_Load = A3_Lazy_Load::_instance();
|
211 |
|
212 |
+
$content = apply_filters( 'a3_lazy_load_html_before', $content );
|
|
|
|
|
|
|
213 |
|
214 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_to_images'] == true ) {
|
215 |
+
$content = $A3_Lazy_Load->filter_images( $content, $include_noscript );
|
216 |
+
}
|
217 |
+
if ( $a3_lazy_load_global_settings['a3l_apply_to_videos'] == true ) {
|
218 |
+
$content = $A3_Lazy_Load->filter_videos( $content, $include_noscript );
|
219 |
+
}
|
220 |
+
|
221 |
+
$content = apply_filters( 'a3_lazy_load_html_after', $content );
|
222 |
+
|
223 |
+
return $content;
|
224 |
}
|
225 |
|
226 |
+
static function filter_images( $content, $include_noscript = null ) {
|
227 |
+
if ( is_admin() ) {
|
228 |
return $content;
|
229 |
}
|
230 |
+
|
231 |
$run_filter = true;
|
232 |
$run_filter = apply_filters( 'a3_lazy_load_run_filter', $run_filter );
|
233 |
|
241 |
|
242 |
$content = apply_filters( 'a3_lazy_load_images_before', $content );
|
243 |
|
244 |
+
$content = $A3_Lazy_Load->_filter_images( $content, $include_noscript );
|
245 |
|
246 |
$content = apply_filters( 'a3_lazy_load_images_after', $content );
|
247 |
|
248 |
return $content;
|
249 |
}
|
250 |
|
251 |
+
static function filter_content_images( $content ) {
|
252 |
+
$A3_Lazy_Load = A3_Lazy_Load::_instance();
|
253 |
+
add_filter( 'wp_get_attachment_image_attributes', array( $A3_Lazy_Load, 'get_attachment_image_attributes' ), 200 );
|
|
|
254 |
|
255 |
+
return $A3_Lazy_Load->filter_images( $content );
|
256 |
+
}
|
|
|
257 |
|
258 |
+
static function get_attachment_image_attributes( $attr ) {
|
259 |
+
$A3_Lazy_Load = A3_Lazy_Load::_instance();
|
260 |
|
261 |
+
$attr['data-src'] = $attr['src'];
|
262 |
+
$attr['src'] = $A3_Lazy_Load->_placeholder_url;
|
263 |
+
$attr['class'] = 'lazy-hidden '. $attr['class'];
|
264 |
+
$attr['data-lazy-type'] = 'image';
|
265 |
|
266 |
+
return $attr;
|
267 |
}
|
268 |
|
269 |
+
protected function _filter_images( $content, $include_noscript = null ) {
|
270 |
+
|
271 |
+
if ( null === $include_noscript ) {
|
272 |
+
global $a3_lazy_load_global_settings;
|
273 |
+
|
274 |
+
$include_noscript = $a3_lazy_load_global_settings['a3l_image_include_noscript'];
|
275 |
+
}
|
276 |
|
277 |
$matches = array();
|
278 |
preg_match_all( '/<img[\s\r\n]+.*?>/is', $content, $matches );
|
280 |
$search = array();
|
281 |
$replace = array();
|
282 |
|
283 |
+
if ( is_array( $this->_skip_images_classes ) ) {
|
284 |
+
$skip_images_preg_quoted = array_map( 'preg_quote', $this->_skip_images_classes );
|
285 |
$skip_images_regex = sprintf( '/class=".*(%s).*"/s', implode( '|', $skip_images_preg_quoted ) );
|
286 |
}
|
287 |
|
289 |
foreach ( $matches[0] as $imgHTML ) {
|
290 |
|
291 |
// don't to the replacement if a skip class is provided and the image has the class, or if the image is a data-uri
|
292 |
+
if ( ! ( is_array( $this->_skip_images_classes ) && preg_match( $skip_images_regex, $imgHTML ) ) && ! preg_match( "/src=['\"]data:image/is", $imgHTML ) ) {
|
293 |
$i++;
|
294 |
// replace the src and add the data-src attribute
|
295 |
$replaceHTML = '';
|
302 |
$replaceHTML = preg_replace( '/<img/is', '<img class="lazy lazy-hidden"', $replaceHTML );
|
303 |
}
|
304 |
|
305 |
+
if ( $include_noscript ) {
|
306 |
$replaceHTML .= '<noscript>' . $imgHTML . '</noscript>';
|
307 |
}
|
308 |
|
320 |
return $content;
|
321 |
}
|
322 |
|
|
|
323 |
|
324 |
+
static function filter_videos( $content, $include_noscript = null ) {
|
325 |
+
if ( is_admin() ) {
|
326 |
+
return $content;
|
327 |
+
}
|
328 |
+
|
329 |
+
$run_filter = true;
|
330 |
+
$run_filter = apply_filters( 'a3_lazy_load_run_filter', $run_filter );
|
331 |
+
|
332 |
+
if ( ! $run_filter ) {
|
333 |
+
return $content;
|
334 |
+
}
|
335 |
+
|
336 |
+
global $a3_lazy_load_global_settings;
|
337 |
+
|
338 |
+
$A3_Lazy_Load = A3_Lazy_Load::_instance();
|
339 |
+
|
340 |
+
$content = apply_filters( 'a3_lazy_load_videos_before', $content );
|
341 |
+
|
342 |
+
$content = $A3_Lazy_Load->_filter_videos( $content, $include_noscript );
|
343 |
+
|
344 |
+
$content = apply_filters( 'a3_lazy_load_videos_after', $content );
|
345 |
+
|
346 |
+
return $content;
|
347 |
+
}
|
348 |
+
|
349 |
+
protected function _filter_videos( $content, $include_noscript = null ) {
|
350 |
+
|
351 |
+
if ( null === $include_noscript ) {
|
352 |
+
global $a3_lazy_load_global_settings;
|
353 |
+
|
354 |
+
$include_noscript = $a3_lazy_load_global_settings['a3l_video_include_noscript'];
|
355 |
+
}
|
356 |
+
|
357 |
+
//iFrame
|
358 |
$matches = array();
|
359 |
+
preg_match_all( '#<iframe(.*?)></iframe>#is', $content, $matches );
|
360 |
|
361 |
$search = array();
|
362 |
$replace = array();
|
363 |
|
364 |
+
if ( is_array( $this->_skip_videos_classes ) ) {
|
365 |
+
$skip_images_preg_quoted = array_map( 'preg_quote', $this->_skip_videos_classes );
|
366 |
+
$skip_images_regex = sprintf( '/class=".*(%s).*"/s', implode( '|', $skip_images_preg_quoted ) );
|
367 |
+
}
|
368 |
|
369 |
+
$i = 0;
|
370 |
+
foreach ( $matches[0] as $imgHTML ) {
|
371 |
+
if ( strpos( $imgHTML, 'gform_ajax_frame' ) ) {
|
372 |
continue;
|
373 |
}
|
374 |
|
375 |
+
// don't to the replacement if a skip class is provided and the image has the class, or if the image is a data-uri
|
376 |
+
if ( ! ( is_array( $this->_skip_videos_classes ) && preg_match( $skip_images_regex, $imgHTML ) ) && ! preg_match( "/data-src=['\"]/is", $imgHTML ) ) {
|
377 |
+
$i++;
|
378 |
+
// replace the src and add the data-src attribute
|
379 |
+
$replaceHTML = '';
|
380 |
+
$replaceHTML = preg_replace( '/iframe(.*?)src=/is', 'iframe$1src="' . $this->_placeholder_url . '" data-lazy-type="iframe" data-src=', $imgHTML );
|
381 |
+
|
382 |
+
// add the lazy class to the img element
|
383 |
+
if ( preg_match( '/class=["\']/i', $replaceHTML ) ) {
|
384 |
+
$replaceHTML = preg_replace( '/class=(["\'])(.*?)["\']/is', 'class=$1lazy lazy-hidden $2$1', $replaceHTML );
|
385 |
+
} else {
|
386 |
+
$replaceHTML = preg_replace( '/<iframe/is', '<iframe class="lazy lazy-hidden"', $replaceHTML );
|
387 |
+
}
|
388 |
+
|
389 |
+
if ( $include_noscript ) {
|
390 |
+
$replaceHTML .= '<noscript>' . $imgHTML . '</noscript>';
|
391 |
+
}
|
392 |
+
|
393 |
+
array_push( $search, $imgHTML );
|
394 |
+
array_push( $replace, $replaceHTML );
|
395 |
+
}
|
396 |
+
}
|
397 |
+
|
398 |
+
$search = array_unique( $search );
|
399 |
+
$replace = array_unique( $replace );
|
400 |
+
|
401 |
+
$content = str_replace( $search, $replace, $content );
|
402 |
+
|
403 |
+
//Video
|
404 |
+
$matches = array();
|
405 |
+
preg_match_all( '/<video(.+?)video>/', $content, $matches );
|
406 |
+
|
407 |
+
$search = array();
|
408 |
+
$replace = array();
|
409 |
+
|
410 |
+
if ( is_array( $this->_skip_videos_classes ) ) {
|
411 |
+
$skip_images_preg_quoted = array_map( 'preg_quote', $this->_skip_videos_classes );
|
412 |
+
$skip_images_regex = sprintf( '/class=".*(%s).*"/s', implode( '|', $skip_images_preg_quoted ) );
|
413 |
+
}
|
414 |
+
|
415 |
+
$i = 0;
|
416 |
+
foreach ( $matches[0] as $imgHTML ) {
|
417 |
+
|
418 |
+
// don't to the replacement if a skip class is provided and the image has the class, or if the image is a data-uri
|
419 |
+
if ( ! ( is_array( $this->_skip_videos_classes ) && preg_match( $skip_images_regex, $imgHTML ) ) && ! preg_match( "/data-src=['\"]/is", $imgHTML ) ) {
|
420 |
+
$i++;
|
421 |
+
// replace the src and add the data-src attribute
|
422 |
+
|
423 |
+
|
424 |
+
$replaceHTML = '';
|
425 |
+
$replaceHTML = preg_replace( '/video(.*?)src=/is', 'video$1 data-lazy-type="video" data-src=', $imgHTML );
|
426 |
+
$replaceHTML = preg_replace( '/video(.*?)poster=/is', 'video$1poster="' . $this->_placeholder_url . '" data-lazy-type="video" data-poster=', $replaceHTML );
|
427 |
+
|
428 |
+
// add the lazy class to the img element
|
429 |
+
if ( preg_match( '/class=["\']/i', $replaceHTML ) ) {
|
430 |
+
$replaceHTML = preg_replace( '/class=(["\'])(.*?)["\']/is', 'class=$1lazy lazy-hidden $2$1', $replaceHTML );
|
431 |
+
} else {
|
432 |
+
$replaceHTML = preg_replace( '/<video/is', '<video class="lazy lazy-hidden"', $replaceHTML );
|
433 |
+
}
|
434 |
+
|
435 |
+
if ( $include_noscript ) {
|
436 |
+
$replaceHTML .= '<noscript>' . $imgHTML . '</noscript>';
|
437 |
+
}
|
438 |
+
|
439 |
+
array_push( $search, $imgHTML );
|
440 |
+
array_push( $replace, $replaceHTML );
|
441 |
+
}
|
442 |
+
}
|
443 |
+
|
444 |
+
$search = array_unique( $search );
|
445 |
+
$replace = array_unique( $replace );
|
446 |
+
|
447 |
+
$content = str_replace( $search, $replace, $content );
|
448 |
+
|
449 |
+
//return $content;
|
450 |
+
|
451 |
+
//Embed
|
452 |
+
$matches = array();
|
453 |
+
preg_match_all( '/<embed\s+.*?>/', $content, $matches );
|
454 |
+
|
455 |
+
$search = array();
|
456 |
+
$replace = array();
|
457 |
+
|
458 |
+
if ( is_array( $this->_skip_videos_classes ) ) {
|
459 |
+
$skip_images_preg_quoted = array_map( 'preg_quote', $this->_skip_videos_classes );
|
460 |
+
$skip_images_regex = sprintf( '/class=".*(%s).*"/s', implode( '|', $skip_images_preg_quoted ) );
|
461 |
+
}
|
462 |
+
|
463 |
+
$i = 0;
|
464 |
+
foreach ( $matches[0] as $imgHTML ) {
|
465 |
|
466 |
+
// don't to the replacement if a skip class is provided and the image has the class, or if the image is a data-uri
|
467 |
+
if ( ! ( is_array( $this->_skip_videos_classes ) && preg_match( $skip_images_regex, $imgHTML ) ) && ! preg_match( "/data-src=['\"]/is", $imgHTML ) ) {
|
468 |
+
$i++;
|
469 |
+
// replace the src and add the data-src attribute
|
470 |
+
$replaceHTML = '';
|
471 |
+
//$replaceHTML = str_replace("src", 'data-src', $imgHTML);
|
472 |
+
$replaceHTML = preg_replace( '/embed(.*?)src=/is', 'embed$1 data-lazy-type="video" data-src=', $imgHTML );
|
473 |
+
// add the lazy class to the img element
|
474 |
+
if ( preg_match( '/class=["\']/i', $replaceHTML ) ) {
|
475 |
+
$replaceHTML = preg_replace( '/class=(["\'])(.*?)["\']/is', 'class=$1lazy lazy-hidden $2$1', $replaceHTML );
|
476 |
+
} else {
|
477 |
+
$replaceHTML = preg_replace( '/<embed/is', '<embed class="lazy lazy-hidden"', $replaceHTML );
|
478 |
+
}
|
479 |
+
|
480 |
+
if ( $include_noscript ) {
|
481 |
+
$replaceHTML .= '<noscript>' . $imgHTML . '</noscript>';
|
482 |
+
}
|
483 |
|
484 |
+
array_push( $search, $imgHTML );
|
485 |
+
array_push( $replace, $replaceHTML );
|
486 |
+
}
|
487 |
}
|
488 |
|
489 |
+
$search = array_unique( $search );
|
490 |
+
$replace = array_unique( $replace );
|
491 |
+
|
492 |
$content = str_replace( $search, $replace, $content );
|
493 |
|
494 |
+
|
495 |
return $content;
|
496 |
}
|
497 |
}
|
includes/updates/a3-lazy-load-update-1.1.0.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
+
|
4 |
+
$a3l_global_settings = get_option('a3_lazy_load_global_settings', array() );
|
5 |
+
$a3l_global_settings['a3l_apply_lazyloadxt'] = $a3l_global_settings['a3l_apply_to_loadimages'];
|
6 |
+
|
7 |
+
$a3l_global_settings['a3l_apply_to_images'] = $a3l_global_settings['a3l_apply_to_loadimages'];
|
8 |
+
$a3l_global_settings['a3l_apply_image_to_content'] = $a3l_global_settings['a3l_apply_to_content'];
|
9 |
+
$a3l_global_settings['a3l_apply_image_to_textwidget'] = $a3l_global_settings['a3l_apply_to_textwidget'];
|
10 |
+
$a3l_global_settings['a3l_apply_image_to_postthumbnails'] = $a3l_global_settings['a3l_apply_to_postthumbnails'];
|
11 |
+
$a3l_global_settings['a3l_apply_image_to_gravatars'] = $a3l_global_settings['a3l_apply_to_gravatars'];
|
12 |
+
$a3l_global_settings['a3l_skip_image_with_class'] = $a3l_global_settings['a3l_skip_image_with_class'];
|
13 |
+
|
14 |
+
$a3l_global_settings['a3l_apply_to_videos'] = $a3l_global_settings['a3l_apply_to_loadimages'];
|
15 |
+
$a3l_global_settings['a3l_apply_video_to_content'] = $a3l_global_settings['a3l_apply_to_content'];
|
16 |
+
$a3l_global_settings['a3l_apply_video_to_textwidget'] = $a3l_global_settings['a3l_apply_to_textwidget'];
|
17 |
+
$a3l_global_settings['a3l_skip_video_with_class'] = $a3l_global_settings['a3l_skip_image_with_class'];
|
18 |
+
|
19 |
+
update_option('a3_lazy_load_global_settings', $a3l_global_settings);
|
languages/a3_lazy_load.mo
CHANGED
Binary file
|
languages/a3_lazy_load.po
CHANGED
@@ -2,8 +2,8 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: a3 Lazy Load\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date:
|
6 |
-
"PO-Revision-Date:
|
7 |
"Last-Translator: Nguyen Cong Tuan <mr.nguyencongtuan@gmail.com>\n"
|
8 |
"Language-Team: a3rev\n"
|
9 |
"Language: en\n"
|
@@ -89,25 +89,37 @@ msgstr ""
|
|
89 |
|
90 |
#: admin/admin-interface.php:1377 admin/admin-interface.php:1467
|
91 |
#: admin/admin-interface.php:1496
|
92 |
-
#: admin/settings/template-settings/global-settings.php:
|
93 |
-
#: admin/settings/template-settings/global-settings.php:
|
94 |
-
#: admin/settings/template-settings/global-settings.php:
|
95 |
-
#: admin/settings/template-settings/global-settings.php:
|
96 |
-
#: admin/settings/template-settings/global-settings.php:
|
97 |
-
#: admin/settings/template-settings/global-settings.php:
|
98 |
-
#: admin/settings/template-settings/global-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
msgid "ON"
|
100 |
msgstr ""
|
101 |
|
102 |
#: admin/admin-interface.php:1378 admin/admin-interface.php:1468
|
103 |
#: admin/admin-interface.php:1497
|
104 |
-
#: admin/settings/template-settings/global-settings.php:
|
105 |
-
#: admin/settings/template-settings/global-settings.php:
|
106 |
-
#: admin/settings/template-settings/global-settings.php:
|
107 |
-
#: admin/settings/template-settings/global-settings.php:
|
108 |
-
#: admin/settings/template-settings/global-settings.php:
|
109 |
-
#: admin/settings/template-settings/global-settings.php:
|
110 |
-
#: admin/settings/template-settings/global-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
msgid "OFF"
|
112 |
msgstr ""
|
113 |
|
@@ -261,89 +273,157 @@ msgstr ""
|
|
261 |
msgid "Previously Uploaded"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: admin/settings/template-settings/global-settings.php:
|
265 |
#: admin/tabs/template-settings/global-settings-tab.php:78
|
266 |
msgid "Global Settings"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: admin/settings/template-settings/global-settings.php:
|
270 |
msgid "Enable Lazy Load"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: admin/settings/template-settings/global-settings.php:
|
274 |
-
msgid "
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: admin/settings/template-settings/global-settings.php:
|
278 |
-
msgid "
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: admin/settings/template-settings/global-settings.php:
|
282 |
-
msgid "
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: admin/settings/template-settings/global-settings.php:
|
|
|
|
|
|
|
|
|
286 |
msgid "Post Thumbnails"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: admin/settings/template-settings/global-settings.php:
|
290 |
msgid "Gravatars"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: admin/settings/template-settings/global-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
msgid "Theme Loader Function"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: admin/settings/template-settings/global-settings.php:
|
298 |
-
msgid "
|
|
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: admin/settings/template-settings/global-settings.php:
|
302 |
-
msgid "
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: admin/settings/template-settings/global-settings.php:
|
306 |
-
msgid "
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: admin/settings/template-settings/global-settings.php:
|
310 |
-
msgid "
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: admin/settings/template-settings/global-settings.php:
|
314 |
msgid "Disable On WPTouch"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: admin/settings/template-settings/global-settings.php:
|
318 |
msgid "Disables a3 Lazy Load when the WPTouch mobile theme is used"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: admin/settings/template-settings/global-settings.php:
|
322 |
msgid "Disable On MobilePress"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: admin/settings/template-settings/global-settings.php:
|
326 |
msgid "Disables a3 Lazy Load when the MobilePress mobile theme is used"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: admin/settings/template-settings/global-settings.php:
|
330 |
msgid "Effect & Style"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: admin/settings/template-settings/global-settings.php:
|
334 |
-
msgid "Effect"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: admin/settings/template-settings/global-settings.php:
|
338 |
-
msgid "
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: admin/settings/template-settings/global-settings.php:
|
342 |
msgid "SPINNER"
|
343 |
msgstr ""
|
344 |
|
345 |
-
#: admin/settings/template-settings/global-settings.php:
|
346 |
-
msgid "Background
|
347 |
msgstr ""
|
348 |
|
349 |
#: classes/addons/class-a3-lazy-load-addons-page.php:23
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: a3 Lazy Load\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2015-01-23 17:36+0700\n"
|
6 |
+
"PO-Revision-Date: 2015-01-23 17:36+0700\n"
|
7 |
"Last-Translator: Nguyen Cong Tuan <mr.nguyencongtuan@gmail.com>\n"
|
8 |
"Language-Team: a3rev\n"
|
9 |
"Language: en\n"
|
89 |
|
90 |
#: admin/admin-interface.php:1377 admin/admin-interface.php:1467
|
91 |
#: admin/admin-interface.php:1496
|
92 |
+
#: admin/settings/template-settings/global-settings.php:198
|
93 |
+
#: admin/settings/template-settings/global-settings.php:219
|
94 |
+
#: admin/settings/template-settings/global-settings.php:235
|
95 |
+
#: admin/settings/template-settings/global-settings.php:245
|
96 |
+
#: admin/settings/template-settings/global-settings.php:255
|
97 |
+
#: admin/settings/template-settings/global-settings.php:265
|
98 |
+
#: admin/settings/template-settings/global-settings.php:283
|
99 |
+
#: admin/settings/template-settings/global-settings.php:301
|
100 |
+
#: admin/settings/template-settings/global-settings.php:317
|
101 |
+
#: admin/settings/template-settings/global-settings.php:327
|
102 |
+
#: admin/settings/template-settings/global-settings.php:345
|
103 |
+
#: admin/settings/template-settings/global-settings.php:379
|
104 |
+
#: admin/settings/template-settings/global-settings.php:390
|
105 |
msgid "ON"
|
106 |
msgstr ""
|
107 |
|
108 |
#: admin/admin-interface.php:1378 admin/admin-interface.php:1468
|
109 |
#: admin/admin-interface.php:1497
|
110 |
+
#: admin/settings/template-settings/global-settings.php:199
|
111 |
+
#: admin/settings/template-settings/global-settings.php:220
|
112 |
+
#: admin/settings/template-settings/global-settings.php:236
|
113 |
+
#: admin/settings/template-settings/global-settings.php:246
|
114 |
+
#: admin/settings/template-settings/global-settings.php:256
|
115 |
+
#: admin/settings/template-settings/global-settings.php:266
|
116 |
+
#: admin/settings/template-settings/global-settings.php:284
|
117 |
+
#: admin/settings/template-settings/global-settings.php:302
|
118 |
+
#: admin/settings/template-settings/global-settings.php:318
|
119 |
+
#: admin/settings/template-settings/global-settings.php:328
|
120 |
+
#: admin/settings/template-settings/global-settings.php:346
|
121 |
+
#: admin/settings/template-settings/global-settings.php:380
|
122 |
+
#: admin/settings/template-settings/global-settings.php:391
|
123 |
msgid "OFF"
|
124 |
msgstr ""
|
125 |
|
273 |
msgid "Previously Uploaded"
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: admin/settings/template-settings/global-settings.php:145
|
277 |
#: admin/tabs/template-settings/global-settings-tab.php:78
|
278 |
msgid "Global Settings"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: admin/settings/template-settings/global-settings.php:191
|
282 |
msgid "Enable Lazy Load"
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: admin/settings/template-settings/global-settings.php:208
|
286 |
+
msgid "Lazy Load Images"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: admin/settings/template-settings/global-settings.php:213
|
290 |
+
msgid "Enable Lazy Load for Images"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: admin/settings/template-settings/global-settings.php:229
|
294 |
+
msgid "Images in Content"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: admin/settings/template-settings/global-settings.php:239
|
298 |
+
msgid "Images in Widgets"
|
299 |
+
msgstr ""
|
300 |
+
|
301 |
+
#: admin/settings/template-settings/global-settings.php:249
|
302 |
msgid "Post Thumbnails"
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: admin/settings/template-settings/global-settings.php:259
|
306 |
msgid "Gravatars"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: admin/settings/template-settings/global-settings.php:269
|
310 |
+
msgid "Skip Images Classes"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: admin/settings/template-settings/global-settings.php:271
|
314 |
+
msgid "Comma separated. Example: \"no-lazy, lazy-ignore, image-235\""
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: admin/settings/template-settings/global-settings.php:276
|
318 |
+
#: admin/settings/template-settings/global-settings.php:338
|
319 |
+
msgid "Noscript Support"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: admin/settings/template-settings/global-settings.php:278
|
323 |
+
msgid ""
|
324 |
+
"Turn ON to activate Noscript tag as a fallback to show images for users who "
|
325 |
+
"have JavaScript disabled in their browser."
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: admin/settings/template-settings/global-settings.php:289
|
329 |
+
msgid "Lazy Load Videos and iframes"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: admin/settings/template-settings/global-settings.php:294
|
333 |
+
msgid "Video and iframes"
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: admin/settings/template-settings/global-settings.php:295
|
337 |
+
#, php-format
|
338 |
+
msgid ""
|
339 |
+
"Turn ON to activate Lazy Load for <a href=\"%s\" target=\"_blank\">WordPress "
|
340 |
+
"Embeds</a>, <a href=\"%s\" target=\"_blank\">HTML5 Video</a> and content "
|
341 |
+
"loaded by iframe from all sources. Note: WordPress Shortcode is not "
|
342 |
+
"supported."
|
343 |
+
msgstr ""
|
344 |
+
|
345 |
+
#: admin/settings/template-settings/global-settings.php:311
|
346 |
+
msgid "In Content"
|
347 |
+
msgstr ""
|
348 |
+
|
349 |
+
#: admin/settings/template-settings/global-settings.php:321
|
350 |
+
msgid "In Widgets"
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
#: admin/settings/template-settings/global-settings.php:331
|
354 |
+
msgid "Skip Videos Classes"
|
355 |
+
msgstr ""
|
356 |
+
|
357 |
+
#: admin/settings/template-settings/global-settings.php:333
|
358 |
+
msgid "Comma separated. Example: \"no-lazy, lazy-ignore, video-235\""
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
#: admin/settings/template-settings/global-settings.php:340
|
362 |
+
msgid ""
|
363 |
+
"Turn ON to activate Noscript tag as a fallback to show WordPress Embeds, "
|
364 |
+
"HTML 5 Video and iframe loaded content for users who have JavaScript "
|
365 |
+
"disabled in their browser."
|
366 |
+
msgstr ""
|
367 |
+
|
368 |
+
#: admin/settings/template-settings/global-settings.php:350
|
369 |
+
msgid "Script Load Optimization"
|
370 |
+
msgstr ""
|
371 |
+
|
372 |
+
#: admin/settings/template-settings/global-settings.php:355
|
373 |
msgid "Theme Loader Function"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: admin/settings/template-settings/global-settings.php:356
|
377 |
+
msgid ""
|
378 |
+
"Your theme must have the wp_footer() function if you select FOOTER load."
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: admin/settings/template-settings/global-settings.php:362
|
382 |
+
msgid "HEADER"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: admin/settings/template-settings/global-settings.php:363
|
386 |
+
msgid "FOOTER"
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: admin/settings/template-settings/global-settings.php:367
|
390 |
+
msgid "WordPress Mobile Template Plugins"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: admin/settings/template-settings/global-settings.php:372
|
394 |
msgid "Disable On WPTouch"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: admin/settings/template-settings/global-settings.php:373
|
398 |
msgid "Disables a3 Lazy Load when the WPTouch mobile theme is used"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: admin/settings/template-settings/global-settings.php:383
|
402 |
msgid "Disable On MobilePress"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: admin/settings/template-settings/global-settings.php:384
|
406 |
msgid "Disables a3 Lazy Load when the MobilePress mobile theme is used"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: admin/settings/template-settings/global-settings.php:395
|
410 |
msgid "Effect & Style"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: admin/settings/template-settings/global-settings.php:401
|
414 |
+
msgid "Loading Effect"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: admin/settings/template-settings/global-settings.php:407
|
418 |
+
msgid "FADE IN"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: admin/settings/template-settings/global-settings.php:408
|
422 |
msgid "SPINNER"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: admin/settings/template-settings/global-settings.php:411
|
426 |
+
msgid "Loading Background Colour"
|
427 |
msgstr ""
|
428 |
|
429 |
#: classes/addons/class-a3-lazy-load-addons-page.php:23
|
readme.txt
CHANGED
@@ -4,49 +4,78 @@ Contributors: a3rev, A3 Revolution Software Development team
|
|
4 |
Tags: a3 lazy load, Lazy Loading , image lazy load, lazyload
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 4.1.0
|
7 |
-
Stable tag: 1.0
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
-
Use a3 Lazy Load
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
|
16 |
|
17 |
-
a3 Lazy
|
18 |
|
19 |
-
|
20 |
|
21 |
-
|
22 |
|
23 |
-
|
24 |
-
|
25 |
-
*
|
|
|
26 |
* Apply to post thumbnails
|
27 |
* Apply to gravatars
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
= Lazy Load Effects =
|
30 |
|
31 |
-
a3
|
32 |
|
33 |
* FADEIN [see demo](http://ressio.github.io/lazy-load-xt/demo/fadein.htm)
|
34 |
* SPINNER [see demo](http://ressio.github.io/lazy-load-xt/demo/spinner.htm)
|
|
|
35 |
|
36 |
= WooCommerce =
|
37 |
|
38 |
-
a3 lazy Load is built and tested to be fully compatible with the WooCommerce plugin.
|
39 |
|
40 |
-
=
|
41 |
|
42 |
a3 Lazy Load gives you the option to load its script from your sites HEAD or from the FOOT.
|
43 |
|
44 |
* Note that your theme must have the wp_footer() function if you select FOOTER load.
|
45 |
* Note the plugin CSS is always loaded from the HEAD.
|
46 |
|
47 |
-
=
|
|
|
|
|
48 |
|
49 |
-
|
|
|
|
|
50 |
|
51 |
= Theme Compatibility =
|
52 |
|
@@ -81,7 +110,6 @@ a3 lazy Load is tested 100% compatible with all major browsers.
|
|
81 |
|
82 |
= More Features =
|
83 |
|
84 |
-
* Full support for responsive images.
|
85 |
* Full support of jQueryMobile framework
|
86 |
* WordPress Multi site ready.
|
87 |
* Backend support for RTL display.
|
@@ -109,13 +137,32 @@ Automatic installation is the easiest option as WordPress handles the file trans
|
|
109 |
|
110 |
1. Install and activate the plugin
|
111 |
|
112 |
-
2. On wp-admin a3 Lazy
|
113 |
|
114 |
3. Enjoy
|
115 |
|
116 |
|
117 |
== Changelog ==
|
118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
= 1.0.2 - 2015/01/20 =
|
120 |
* Tweak - Include wp_deregister_script( 'jquery-lazyloadxt' ) before wp_enqueue_script( 'jquery-lazyloadxt' ) for compatibility with a3 Portfolio plugin which supports video slides
|
121 |
* Dev - Add new parameter $noscript boolen type for 'a3_lazy_load_html' and 'a3_lazy_load_images' filters to exclude or include noscript from content return of 3rd party plugins.
|
@@ -132,7 +179,10 @@ Automatic installation is the easiest option as WordPress handles the file trans
|
|
132 |
* First working release
|
133 |
|
134 |
|
135 |
-
==
|
|
|
|
|
|
|
136 |
|
137 |
= 1.0.2 =
|
138 |
Upgrade now for an a3 Portfolio plugin compatibility code tweak and a new Dev parameter and exclude class.
|
4 |
Tags: a3 lazy load, Lazy Loading , image lazy load, lazyload
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 4.1.0
|
7 |
+
Stable tag: 1.1.0
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
+
Use a3 Lazy Load for images, videos, iframes. Instantly improve your sites load time and dramatically improve site user�s experience.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
a3 Lazy Load is a Mobile Oriented, simple to use plugin that will speed up site performance. The more content heavy your site the better the plugin will perform and the more you will see the improvements in performance. See [this demo](http://ressio.github.io/lazy-load-xt/demo/stresstest1000img.htm) of a page with 1,000 images (yes 1,000 images) to load.
|
16 |
|
17 |
+
a3 Lazy Load is inspired by and powered by the ressio [Lazy-Load-xt JavaScript](https://github.com/ressio/lazy-load-xt).
|
18 |
|
19 |
+
a3 Lazy Load is the most fully featured lazy load plugin for WordPress. Use the plugins admin settings to easily define what elements are lazy loaded when they become visible in the users browser. As the user scroll down the page the next lot of elements you have applied lazy Load to are only loaded as they become visible in the view port.
|
20 |
|
21 |
+
= Image Lazy Load =
|
22 |
|
23 |
+
Images are the number one element that slows page load and increases bandwidth use. From the a3 Lazy Load admin panel turn load images by a3 Lazy Load ON | OFF. For more flexibility when ON you can choose to ON | OFF lazy load for images in
|
24 |
+
|
25 |
+
* Post and Pages (All Content areas)
|
26 |
+
* Widgets (Sidebar, header and footer)
|
27 |
* Apply to post thumbnails
|
28 |
* Apply to gravatars
|
29 |
|
30 |
+
= More than just Images =
|
31 |
+
|
32 |
+
= Video Lazy Load =
|
33 |
+
|
34 |
+
a3 Lazy Load supports all WordPress video Embeds including Youtube, Vimeo and HTML5 video - for a full list see the [WordPress Codex Embeds](http://codex.wordpress.org/Embeds) list. The WordPress embed method of copying and pasting the video url into posts and pages content area is fully supported. Note - embed video by WordPress shortcode is not supported.
|
35 |
+
|
36 |
+
From the a3 lazy Load admin panel turn Video Support ON | OFF. When ON you can choose to ON | OFF lazy load for videos in
|
37 |
+
|
38 |
+
* Post and Pages (All Content areas)
|
39 |
+
* Widgets (Sidebar, header and footer)
|
40 |
+
|
41 |
+
* Youtube [see demo](http://ressio.github.io/lazy-load-xt/demo/youtube-iframe.htm)
|
42 |
+
* Video [see demo](http://ressio.github.io/lazy-load-xt/demo/video-html5.htm)
|
43 |
+
|
44 |
+
= Elements loaded by iframe =
|
45 |
+
|
46 |
+
a3 Lazy Load has built in support for content that is added by iframe from any source in content and widgets - examples
|
47 |
+
|
48 |
+
* WordPress embedded media
|
49 |
+
* Facebook Like boxes with profiles, Like buttons, Recommend
|
50 |
+
* Google+ Profile
|
51 |
+
* Google Maps
|
52 |
+
|
53 |
= Lazy Load Effects =
|
54 |
|
55 |
+
a3 Lazy Load gives you the option to lazy load images with a FADE IN or SPINNER effect.
|
56 |
|
57 |
* FADEIN [see demo](http://ressio.github.io/lazy-load-xt/demo/fadein.htm)
|
58 |
* SPINNER [see demo](http://ressio.github.io/lazy-load-xt/demo/spinner.htm)
|
59 |
+
* Option to create a custom Lazy Load pre-load background colour
|
60 |
|
61 |
= WooCommerce =
|
62 |
|
63 |
+
a3 lazy Load is built and tested to be fully compatible with the very widely used WooCommerce plugin.
|
64 |
|
65 |
+
= Performance Tweak =
|
66 |
|
67 |
a3 Lazy Load gives you the option to load its script from your sites HEAD or from the FOOT.
|
68 |
|
69 |
* Note that your theme must have the wp_footer() function if you select FOOTER load.
|
70 |
* Note the plugin CSS is always loaded from the HEAD.
|
71 |
|
72 |
+
= Exclude Images and Videos =
|
73 |
+
|
74 |
+
a3 Lazy Load allows you to easily exclude any images and video by class name from having the Lazy Load effect applied.
|
75 |
|
76 |
+
= JavaScript Disabled Fallback =
|
77 |
+
|
78 |
+
a3 Lazy Load has built in Noscript fallback if user has JavaScript turned off in their browser. Developers who use underscore.js in their applications can use the Noscript parameter to exclude their plugins content from Lazy Load.
|
79 |
|
80 |
= Theme Compatibility =
|
81 |
|
110 |
|
111 |
= More Features =
|
112 |
|
|
|
113 |
* Full support of jQueryMobile framework
|
114 |
* WordPress Multi site ready.
|
115 |
* Backend support for RTL display.
|
137 |
|
138 |
1. Install and activate the plugin
|
139 |
|
140 |
+
2. On wp-admin a3 Lazy Load one page admin panel check the settings.
|
141 |
|
142 |
3. Enjoy
|
143 |
|
144 |
|
145 |
== Changelog ==
|
146 |
|
147 |
+
= 1.1.0 - 2015/01/23 =
|
148 |
+
* Feature - Added support for all WordPress video Embeds including Youtube, Vimeo and HTML5 video
|
149 |
+
* Feature - Added support for content that is added by iframe from any source in post and page content and widgets
|
150 |
+
* Feature - Added ON | OFF option for Noscript parameter for both images and video and iframes - fallback if user does not have JavaScript support turned on in browser.
|
151 |
+
* Tweak - Reworked the plugins admin panel for new feature options. Separate settings for Images and Video / iframes
|
152 |
+
* Tweak - Updated all the admin panel text and add new help text.
|
153 |
+
* Tweak - Updated the plugins WordPress description with new features.
|
154 |
+
* Tweak - Updated the plugins WordPress screenshot
|
155 |
+
* Tweak - Updated the plugins WordPress banner image.
|
156 |
+
* Dev - Updated 'a3_lazy_load_enable' function to edit their image or video attribute to enable a3 lazy load images or videos loaded by 3rd party application.
|
157 |
+
* Dev - Defined 'a3_lazy_load_image_enable' function to edit image attribute to enable a3 lazy load to apply images loaded by 3rd party applications.
|
158 |
+
* Dev - Defined 'a3_lazy_load_video_enable' function to edit image attribute so a3 lazy load script can apply to the videos, iframe.
|
159 |
+
* Dev - Include 'var a3_lazyload_params = {"apply_images":"1","apply_videos":"1"};' JavaScript variable into frontend that get the option that are set from admin panel. Plugin and Theme developers can use that variable inside own script to check when Lazy Load apply for Image and for Video instead of use 'a3_lazy_load_video_enable' and 'a3_lazy_load_video_enable' functions in PHP code
|
160 |
+
* Dev - Remove 'a3_lazy_load_skip_classes' filter tag, we will replace another filter for separate filters for image and videos
|
161 |
+
* Dev - Defined 'a3_lazy_load_skip_images_classes' filter tag. Developers can add another class css name for images that they don't want lazy load applied too.
|
162 |
+
* Dev - Defined 'a3_lazy_load_skip_videos_classes' filter tag. Developers can add another class css name for video that they don't want lazy load applied too.
|
163 |
+
* Dev - Added default exclude class 'a3-notlazy' so developers can easily apply it to videos that they don't want Lazy Load to apply to.
|
164 |
+
* Dev - Defined 'a3_lazy_load_videos' filter. Plugin and Theme developers can use this filter and parse the content with videos or iframe and the filter will return content with change on videos or iframe that a3 Lazy Load support
|
165 |
+
|
166 |
= 1.0.2 - 2015/01/20 =
|
167 |
* Tweak - Include wp_deregister_script( 'jquery-lazyloadxt' ) before wp_enqueue_script( 'jquery-lazyloadxt' ) for compatibility with a3 Portfolio plugin which supports video slides
|
168 |
* Dev - Add new parameter $noscript boolen type for 'a3_lazy_load_html' and 'a3_lazy_load_images' filters to exclude or include noscript from content return of 3rd party plugins.
|
179 |
* First working release
|
180 |
|
181 |
|
182 |
+
== Upgrade Notice ==
|
183 |
+
|
184 |
+
= 1.1.0 =
|
185 |
+
Major version release. Added support for WordPress Embeds - Youtube, Vimeo, HTML5 video and iframe content from all sources.
|
186 |
|
187 |
= 1.0.2 =
|
188 |
Upgrade now for an a3 Portfolio plugin compatibility code tweak and a new Dev parameter and exclude class.
|