-
-
Save futtta/01ba20efa0893edb52b0a233a5c05ae8 to your computer and use it in GitHub Desktop.
<?php | |
add_action('plugins_loaded','ao_defer_inline_init'); | |
function ao_defer_inline_init() { | |
if ( get_option('autoptimize_js_include_inline') != 'on' ) { | |
add_filter('autoptimize_html_after_minify','ao_defer_inline_jquery',10,1); | |
} | |
} | |
function ao_defer_inline_jquery( $in ) { | |
if ( preg_match_all( '#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER ) ) { | |
foreach( $matches as $match ) { | |
if ( $match[1] !== '' && ( strpos( $match[1], 'jQuery' ) !== false || strpos( $match[1], '$' ) !== false ) ) { | |
// inline js that requires jquery, wrap deferring JS around it to defer it. | |
$new_match = 'var aoDeferInlineJQuery=function(){'.$match[1].'}; if (document.readyState === "loading") {document.addEventListener("DOMContentLoaded", aoDeferInlineJQuery);} else {aoDeferInlineJQuery();}'; | |
$in = str_replace( $match[1], $new_match, $in ); | |
} else if ( $match[1] === '' && strpos( $match[0], 'src=' ) !== false && strpos( $match[0], 'defer' ) === false ) { | |
// linked non-aggregated JS, defer it. | |
$new_match = str_replace( '<script ', '<script defer ', $match[0] ); | |
$in = str_replace( $match[0], $new_match, $in ); | |
} | |
} | |
} | |
return $in; | |
} |
Is there a way to hook add_filter to something that's WordPress native and does not depend on the Autoptimize plugin?
I don't think WordPress native has a filter for the full HTML @figgaro, but if you're using a page caching plugin then that probably has a filter that allows the same.
Did not work for me !
Did not work for me
worked!
Now I'm loading jquery deferred in Avada theme and got no problem also revolution slider revolution slider.
EDIT: It's working!
it's not working after update to WP 5.5
wp-content/themes/my theme/functions.php. Error message: syntax error, unexpected 'if' (T_IF) how to solve please i want to hide weird unstyled flashing issue in first second?
wp-content/themes/my theme/functions.php. Error message: syntax error, unexpected 'if' (T_IF) how to solve please i want to hide weird unstyled flashing issue in first second?
you have to include complete snippet or post more detail before we can help, it may look like you missed a syntax in php
im using this tutorial https://wpsoul.com/how-optimize-speed-of-wordpress/#setup-database-and-file-cache-with-cache-plugins to optimise my site when i put the the php code in the function file i get this error wp-content/themes/my theme/functions.php. Error message: syntax error, unexpected 'if' (T_IF) and my site got error 500
add_action('plugins_loaded','ao_defer_inline_init');
function ao_defer_inline_init() {
if ( get_option('autoptimize_js_include_inline') != 'on' ) {
add_filter('autoptimize_html_after_minify','ao_defer_inline_jquery',10,1);
}
}
function ao_defer_inline_jquery( $in ) {
if ( preg_match_all( '#<script.*>(.*)</script>#Usmi', $in, $matches, PREG_SET_ORDER ) ) {
foreach( $matches as $match ) {
if ( $match[1] !== '' && ( strpos( $match[1], 'jQuery' ) !== false || strpos( $match[1], '$' ) !== false ) ) {
// inline js that requires jquery, wrap deferring JS around it to defer it.
$new_match = 'var aoDeferInlineJQuery=function(){'.$match[1].'}; if (document.readyState === "loading") {document.addEventListener("DOMContentLoaded", aoDeferInlineJQuery);} else {aoDeferInlineJQuery();}';
$in = str_replace( $match[1], $new_match, $in );
} else if ( $match[1] === '' && strpos( $match[0], 'src=' ) !== false && strpos( $match[0], 'defer' ) === false ) {
// linked non-aggregated JS, defer it.
$new_match = str_replace( '<script ', '<script defer ', $match[0] );
$in = str_replace( $match[0], $new_match, $in );
}
}
}
return $in;
}
use this code.
put this code at the very end of function.php to avoid accidental syntax errors.
i puted it in at once in the begin of function not worked i puted itin the last too not worked i got this error in my site " There has been a critical error on your website. " :'(
So should i put this code at the end of my functions.php? will this solve the render blocking alert related to jquery on pagespeeds ?
I added this code to my functions.php, but nothing is happening. I have Autoptimize and Async JavaScript plugins. Both have jQuery excluded for correct functioning of the site. What could be the culprit here?
Thanks
So should i put this code at the end of my functions.php? will this solve the render blocking alert related to jquery on pagespeeds ?
Somehow it works when you use Code Snippets Pro plugin but not when you paste the code in the functions.php file.
Works great. for me. I had to add recaptcha to make it work.