Version Description
- Increased the speed of unloading (dequeueing) styles & scripts by ~40ms (caching is used to avoid calling the same PHP code during several action hooks)
- Higher accuracy in stripping 'before' and 'after' associated inline SCRIPT after adding the content to the JS combined file
- When combining JS content, make sure to extract the right relative path to make it combinable if a local file is loaded and it starts with // in the "src" attribute
- Show confirmation message when unloading specific files that are very likely needed such as jQuery, Backbone & Underscore libraries
- Alert the admin when there are unload rules from inactive plugins on pages such as "Bulk Changes" & "Overview"
- Keep Dashicons loaded if the toolbar (top admin bar) is shown
- Prevent front-end optimisation code from triggering while the CSS/JS is fetched, thus saving resources and improving the speed of retrieving the assets
- Optimised the plugin to use less calls to MinifyCss & MinifyJs for hardcoded assets reducing considerably the resources used (sometimes timeout errors are generated in hosts with a lower resources allocated)
- When a plugin page (e.g. "Settings") is visited within the Dashboard, trigger a maintenance script that will remove inactive handle data information (from handles without any rule attached to it, often from deleted plugins no longer used) from the "wpassetcleanup_global_data" option value (from
options
table), thus making it lighter - In many hosting environments, the total number of fields submitted is maximum 1000 (set by default in php.ini); The total number of fields that were sent have been reduced (e.g. hardcoded assets information) as they are only enabled via JavaScript whenever they are relevant to make sure there are less fields sent (to void partial submit and missing data as a result in case the admin has difficulties increase the default 1000 in php.ini)
- Do not automatically store hardcoded assets info when the CSS/JS manager list is loaded; Instead, store it IF there's a rule attached to it in order to make the contents of the "wpassetcleanup_global_data" option smaller in size (for a lighter database & faster MySQL queries)
- Clear plugin's cache via AJAX after "Settings" is updated within the Dashboard (this is more effective then clearing it when the page reloads as it could take some time to clear the cache if there are lots of files stored there)
- Whenever Asset CleanUp's caching is cleared, the Autoptimize (if enabled) caching is also cleared via AJAX (in an asynchronous way) to avoid any broken CSS/JS (rare cases) even for short time
- Trigger certain actions (to save database & disk space) when the plugin is deactivated: Clear all its transients from the database & Remove the caching directory if it doesn't have any more CSS/JS; If all the plugin's changes were cleared via "Tools" -> "Reset", then deactivating the plugin will completely clear any of its traces
- The plugin's own files that are needed for the plugin's functionality (they are only loading for the logged-in admin), are loaded asynchronously (CSS) and deferred (JS) to ensure the admin doesn't load them as render-blocking especially when managing the pages in the front-end view
- The combined CSS tags can now be altered for any reason via add_filter() through the 'wpacu_combined_css_tag' tag name, just like the combined JS tags are via 'wpacu_combined_js_tag'
- Fix: Remove request to non-existent CSS file within the Dashboard that generated a 404 Not Found error in the browser's console (harmless, but confusing)
Download this release
Release Info
Developer | gabelivan |
Plugin | Asset CleanUp: Page Speed Booster |
Version | 1.3.6.1 |
Comparing to | |
See all releases |
Code changes from version 1.3.6.0 to 1.3.6.1
- assets/script.min.js +1 -1
- assets/style.min.css +1 -1
- classes/CleanUp.php +7 -0
- classes/Debug.php +6 -2
- classes/HardcodedAssets.php +80 -59
- classes/ImportExport.php +26 -5
- classes/Main.php +265 -199
- classes/Maintenance.php +75 -0
- classes/Misc.php +67 -0
- classes/OptimiseAssets/CombineCss.php +17 -0
- classes/OptimiseAssets/CombineJs.php +27 -12
- classes/OptimiseAssets/FontsGoogle.php +2 -2
- classes/OptimiseAssets/MinifyCss.php +9 -1
- classes/OptimiseAssets/OptimizeCommon.php +23 -2
- classes/OptimiseAssets/OptimizeJs.php +38 -14
- classes/Overview.php +259 -191
- classes/OwnAssets.php +91 -51
- classes/Plugin.php +94 -3
- classes/Settings.php +122 -21
- classes/Tips.php +10 -0
- classes/Tools.php +38 -6
- classes/Update.php +25 -17
- readme.txt +21 -2
- templates/_admin-page-settings-plugin-areas/_cdn-rewrite-urls.php +31 -33
- templates/_admin-page-settings-plugin-areas/_common-files-unload.php +1 -1
- templates/_admin-page-settings-plugin-areas/_optimize-css.php +5 -7
- templates/_admin-page-settings-plugin-areas/_optimize-js.php +3 -5
- templates/_admin-page-settings-plugin-areas/_plugin-usage-settings.php +6 -2
- templates/admin-page-overview.php +27 -5
- templates/admin-page-tools.php +7 -1
- templates/meta-box-loaded-assets/_asset-script-single-row.php +7 -1
- templates/meta-box-loaded-assets/_asset-script-single-row/_extra_inline.php +9 -3
- templates/meta-box-loaded-assets/_assets-hardcoded-list.php +1 -2
- templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded.php +3 -1
- templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded.php +18 -16
- wpacu-load.php +3 -0
- wpacu.php +4 -5
assets/script.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}function wpacuBytesToSize(a){return 0===a?"N/A":(a/1024).toFixed(4)+" KB"}function wpacuAjaxClearCache(){jQuery.post(wpacu_object.ajax_url+"?wpacu_clear_cache",{action:wpacu_object.plugin_id+"_clear_cache",time_r:(new Date).getTime()},function(a){})}jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;var b,c,d,f,g,h={};"direct"===wpacu_object.dom_get_type?(h[wpacu_object.plugin_name+"_load"]=1,h[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:h,cache:!1,complete:function(b,c){if("error"===b.statusText){f=b.responseText.replace(/(<([^>]+)>)/gi,"");try{f=String(f).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}catch(a){console.log(a)}g=wpacu_object.ajax_direct_fetch_error,g=g.replace(/{wpacu_output}/,f),g=g.replace(/{wpacu_status_code_error}/,b.status),a("#wpacu_meta_box_content").html(g)}}}).done(function(f){if(f.lastIndexOf(wpacu_object.start_del_e)<0||f.lastIndexOf(wpacu_object.end_del_e)<0||f.lastIndexOf(wpacu_object.start_del_h)<0||f.lastIndexOf(wpacu_object.end_del_h)<0){g=wpacu_object.ajax_direct_fetch_error_with_success_response,g=g.replace(/{wpacu_output}/,xhr.responseText.replace(/(<([^>]+)>)/gi,""));try{g=String(g).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}catch(a){console.log(a)}return void a("#wpacu_meta_box_content").html(g)}c=f.substring(f.lastIndexOf(wpacu_object.start_del_e)+wpacu_object.start_del_e.length,f.lastIndexOf(wpacu_object.end_del_e)),d=f.substring(f.lastIndexOf(wpacu_object.start_del_h)+wpacu_object.start_del_h.length,f.lastIndexOf(wpacu_object.end_del_h)),b={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list_e:c,wpacu_list_h:d,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){b&&(a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove(),e.checkSourcesFor404Errors()},200))})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),setTimeout(function(){e.checkSourcesFor404Errors()},100)},200)}))}a('input[name="wpacu_sub_tab_area"]').click(function(){a(this).prop("checked")&&a("#wpacu-selected-sub-tab-area").val(a(this).val())}),a("#wpacu_minify_css_enable, #wpacu_combine_loaded_css_enable, #wpacu_minify_js_enable, #wpacu_combine_loaded_js_enable, #wpacu_cdn_rewrite_enable, #wpacu_enable_test_mode").click(function(){a(this).prop("checked")?a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-on").removeClass("wpacu-off"):a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-off").removeClass("wpacu-on")}),a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)}),a("#wpacu-license-form").submit(function(){a("#edd_license_activate_btn").attr("disabled","disabled"),a("#edd_license_deactivate_btn").attr("disabled","disabled"),a(".wpacu-license-spinner").show()});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled").removeClass("button-primary").addClass("button-secondary")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled").removeClass("button-secondary").addClass("button-primary")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){var b,c,d,f=".input-unload-on-this-page.wpacu-not-locked";a(".input-unload-on-this-page").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).hasClass("wpacu_unload_rule_for_style")?"style":"script",a(this).prop("checked")?(e.uncheckAllOtherBulkUnloadRules(a(this),!1),e.showHandleLoadExceptionArea(c,b),a(this).closest("tr").addClass("wpacu_not_load")):(a(this).closest("tr").removeClass("wpacu_not_load"),d=a(this).parents(".wpacu_asset_row"),e.hideHandleLoadExceptionArea(d,b,c))}),a(".wpacu-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!1).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu-plugin-check-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!0).closest("tr.wpacu_is_bulk_unloaded").removeClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu-plugin-uncheck-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!1).closest("tr.wpacu_is_bulk_unloaded").addClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).attr("data-handle-for"),d=a("[data-"+c+'-handle-row="'+b+'"]'),a(this).prop("checked")?(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").addClass("wpacu_input_load_checked"),a(this).closest("tr").addClass("wpacu_not_load")),e.showHandleLoadExceptionArea(c,b),a(this).hasClass("wpacu_global_unload")?(e.uncheckAllOtherBulkUnloadRules(a(this),!0),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1)):a(this).hasClass("wpacu_post_type_unload")&&(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1))):(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").removeClass("wpacu_input_load_checked"),a(this).closest("tr").removeClass("wpacu_not_load")),e.hideHandleLoadExceptionArea(d,b,c)),d.hasClass("wpacu_is_bulk_unloaded")||a(".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)").is(":checked")||a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_load_it_option_one.wpacu_load_exception").on("click change",function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")}),a(".wpacu_unload_it_regex_checkbox").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_unload_checked"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_handle_unload_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_unload_checked"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_handle_unload_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_load_it_option_two").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_bold"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_load_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_bold"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_load_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_script_attr_rule_input").on("click change",function(){a(this).is(":checked")&&(a(this).parents("ul").find(".wpacu_script_attr_rule_input").not(a(this)).prop("checked",!1),a(this).hasClass("wpacu_script_attr_rule_global")&&a(this).parents("ul").find(".wpacu-script-attr-make-exception").removeClass("wpacu_hide")),a(this).parents("ul").find(".wpacu_script_attr_rule_global").is(":checked")||a(this).parents("ul").find(".wpacu-script-attr-make-exception").addClass("wpacu_hide")}),a(".wpacu-add-handle-note").on("click",function(b){b.preventDefault();var c,d,e=a(this).attr("data-handle");a(this).hasClass("wpacu-for-script")?c=a('.wpacu-handle-notes-field[data-script-handle="'+e+'"]'):a(this).hasClass("wpacu-for-style")&&(c=a('.wpacu-handle-notes-field[data-style-handle="'+e+'"]')),c.length<1||(d=c.find(":input"),c.is(":hidden")?(c.show(),d.prop("disabled",!1)):(c.hide(),""===d.val().trim()&&"true"===d.attr("data-wpacu-is-empty-on-page-load")&&d.prop("disabled",!0).val("")))}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this),e=d.attr("data-src");d.hide(),c=d.next(),c.show(),e.includes("/?")?a.get(e,{},function(a,b,d){if("success"!==b)return"N/A";c.html(wpacuBytesToSize(a.length))}):a.post(wpacu_object.ajax_url,{action:wpacu_object.plugin_id+"_get_external_file_size",wpacu_remote_file:e},function(a){c.html(a)})})},pluginLoadManager:function(){a(".wpacu_plugin_load_it").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")&&(e.hidePluginLoadExceptionArea(b),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"))}),a(".wpacu_plugin_unload_site_wide").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),e.showPluginLoadExceptionArea(b)):(a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!0))}),a(".wpacu_plugin_unload_regex_radio").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),e.showPluginLoadExceptionArea(b),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').prop("checked",!1).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked")):(a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_load_exception_regex").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"):a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide")})},showPluginLoadExceptionArea:function(b){a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!1)},hidePluginLoadExceptionArea:function(b){a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!0)},showHandleLoadExceptionArea:function(b,c){var d=a("div.wpacu_exception_options_area_wrap[data-"+b+'-handle="'+c+'"]');d.parent("div").removeClass("wpacu_hide"),d.find('input[type="checkbox"]').prop("disabled",!1)},hideHandleLoadExceptionArea:function(b,c,d){if(!b.hasClass("wpacu_is_bulk_unloaded")&&!b.find(".wpacu_bulk_unload").is(":checked")){var e=a("div.wpacu_exception_options_area_wrap[data-"+d+'-handle="'+c+'"]');e.parent("div").addClass("wpacu_hide"),e.find('input[type="checkbox"]').prop("disabled",!0)}},uncheckAllOtherBulkUnloadRules:function(a,b){var c=".wpacu_bulk_unload";!1===b&&(c=".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)"),a.closest("tr").find(c).not(a).prop("checked",!1).parent("label").removeClass("wpacu_input_load_checked").removeClass("wpacu_unload_checked")},checkSourcesFor404Errors:function(){var b=a("[data-wpacu-external-source]");if(!(b.length<1)){var c=b.length,d="";b.each(function(b){var e=a(this),f=e.attr("data-wpacu-external-source");d+=f+"-at-wpacu-at-",b===c-1&&jQuery.post(wpacu_object.ajax_url+"?wpacu_check_external_url",{action:wpacu_object.plugin_id+"_check_external_urls_for_status_code",wpacu_check_urls:d},function(b){var c=jQuery.parseJSON(b);a.each(c,function(b,c){a('[data-wpacu-external-source="'+c+'"]').css({color:"#cc0000"}).parent("div").find("[data-wpacu-external-source-status]").html('<small>* <em style="font-weight: 600;">'+wpacu_object.source_load_error_msg+"</em></small>")})})})}}};a(window).load(function(){e.checkSourcesFor404Errors()}),a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").show():a("#wpacu-settings-assets-retrieval-mode").hide()}),a(".wpacu-dom-get-type-selection").change(function(){a(this).is(":checked")&&(a(".wpacu-dom-get-type-info").hide(),a("#"+a(this).attr("data-target")).fadeIn("fast"))}),a("#wpacu_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").show():a("#wpacu-settings-frontend-exceptions").hide()}),a(".google_fonts_combine_type").change(function(){a(".wpacu_google_fonts_combine_type_area").hide(),"async"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_info_area").fadeIn():"async_preload"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_preload_info_area").fadeIn():a("#wpacu_google_fonts_combine_type_rb_info_area").fadeIn()}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").fadeOut("fast")}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("[data-target-opacity]").click(function(){a(this).prop("checked")?a("#"+a(this).attr("data-target-opacity")).css({opacity:1}):a("#"+a(this).attr("data-target-opacity")).css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.parents("form").submit(function(){f.attr("disabled",!0),a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),a(".wpacu_bulk_rule_checkbox, .wpacu_remove_preload").click(function(){var b=a(this).parents(".wpacu_bulk_change_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_regex").click(function(){var b=a(this).parents(".wpacu_regex_rule_row");a(this).prop("checked")?b.addClass("wpacu_enabled"):b.removeClass("wpacu_enabled")}),a(".wpacu_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),a("#wpacu-plugins-load-manager-wrap").length>0&&setTimeout(function(){e.pluginLoadManager()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;("default"===wpacu_object.list_show_status||""===wpacu_object.list_show_status||wpacu_object.override_assets_list_load)&&b(),"fetch_on_click"===wpacu_object.list_show_status&&a("#wpacu_ajax_fetch_on_click_btn").click(function(c){c.preventDefault(),a(this).hide(),a("#wpacu_fetching_assets_list_wrap").show(),b()}),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),wpacuAjaxClearCache(),clearInterval(d)}},d=setInterval(c,900)})}),""!==wpacu_object.clear_cache_on_page_load&&wpacuAjaxClearCache(),jQuery(document).ready(function(a){try{var b;a('input[type="hidden"][name="_wp_http_referer"]').length>0&&(b=a('input[type="hidden"][name="_wp_http_referer"]').val(),b.includes("term.php?taxonomy=")&&b.includes("message=")&&wpacuAjaxClearCache(),b.includes("post.php?post=")&&b.includes("message=")&&wpacuAjaxClearCache())}catch(a){console.log(a)}});
|
1 |
+
function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}function wpacuBytesToSize(a){return 0===a?"N/A":(a/1024).toFixed(4)+" KB"}function wpacuAjaxClearCache(){jQuery.post(wpacu_object.ajax_url+"?wpacu_clear_cache",{action:wpacu_object.plugin_id+"_clear_cache",time_r:(new Date).getTime()},function(a){setTimeout(function(){wpacuClearAutoptimizeCache()},150)})}function wpacuClearAutoptimizeCache(){jQuery("#wp-admin-bar-autoptimize-default li").length>0&&void 0!==autoptimize_ajax_object.ajaxurl&&void 0!==autoptimize_ajax_object.nonce&&jQuery.ajax({type:"GET",url:autoptimize_ajax_object.ajaxurl,data:{action:"autoptimize_delete_cache",nonce:autoptimize_ajax_object.nonce},dataType:"json",cache:!1,timeout:9e3,success:function(a){},error:function(a,b){}})}jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;var b,c,d,f,g,h={};"direct"===wpacu_object.dom_get_type?(h[wpacu_object.plugin_name+"_load"]=1,h[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:h,cache:!1,complete:function(b,c){if("error"===b.statusText){f=b.responseText.replace(/(<([^>]+)>)/gi,"");try{f=String(f).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}catch(a){console.log(a)}g=wpacu_object.ajax_direct_fetch_error,g=g.replace(/{wpacu_output}/,f),g=g.replace(/{wpacu_status_code_error}/,b.status),a("#wpacu_meta_box_content").html(g)}}}).done(function(f){if(f.lastIndexOf(wpacu_object.start_del_e)<0||f.lastIndexOf(wpacu_object.end_del_e)<0||f.lastIndexOf(wpacu_object.start_del_h)<0||f.lastIndexOf(wpacu_object.end_del_h)<0){g=wpacu_object.ajax_direct_fetch_error_with_success_response,g=g.replace(/{wpacu_output}/,xhr.responseText.replace(/(<([^>]+)>)/gi,""));try{g=String(g).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}catch(a){console.log(a)}return void a("#wpacu_meta_box_content").html(g)}c=f.substring(f.lastIndexOf(wpacu_object.start_del_e)+wpacu_object.start_del_e.length,f.lastIndexOf(wpacu_object.end_del_e)),d=f.substring(f.lastIndexOf(wpacu_object.start_del_h)+wpacu_object.start_del_h.length,f.lastIndexOf(wpacu_object.end_del_h)),b={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list_e:c,wpacu_list_h:d,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){b&&(a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove(),e.checkSourcesFor404Errors()},200))})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),setTimeout(function(){e.checkSourcesFor404Errors()},100)},200)}))}a('input[name="wpacu_sub_tab_area"]').click(function(){a(this).prop("checked")&&a("#wpacu-selected-sub-tab-area").val(a(this).val())}),a("#wpacu_minify_css_enable, #wpacu_combine_loaded_css_enable, #wpacu_minify_js_enable, #wpacu_combine_loaded_js_enable, #wpacu_cdn_rewrite_enable, #wpacu_enable_test_mode").click(function(){a(this).prop("checked")?a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-on").removeClass("wpacu-off"):a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-off").removeClass("wpacu-on")}),a(document).on("click","#wpacu_inline_css_files_below_size_checkbox",function(){a(this).is(":checked")?a("#wpacu_inline_css_files_enable").prop("checked",!0).trigger("tick"):""===a("#wpacu_inline_css_files_list").val()&&a("#wpacu_inline_css_files_enable").prop("checked",!1).trigger("tick")}),a(document).on("click","#wpacu_inline_js_files_below_size_checkbox",function(){if(a(this).is(":checked")){if(!confirm(wpacu_object.inline_auto_js_files_confirm_msg))return!1;a("#wpacu_inline_js_files_enable").prop("checked",!0).trigger("tick")}else""===a("#wpacu_inline_js_files_list").val()&&a("#wpacu_inline_js_files_enable").prop("checked",!1).trigger("tick")}),a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)}),a("#wpacu-license-form").submit(function(){a("#edd_license_activate_btn").attr("disabled","disabled"),a("#edd_license_deactivate_btn").attr("disabled","disabled"),a(".wpacu-license-spinner").show()});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled").removeClass("button-primary").addClass("button-secondary")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area, #wpacu-cache-assets-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area, #wpacu-cache-assets-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled").removeClass("button-secondary").addClass("button-primary")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){var b,c,d,f=".input-unload-on-this-page.wpacu-not-locked";a(".input-unload-on-this-page").on("click change",function(f){if(b=a(this).attr("data-handle"),c=a(this).hasClass("wpacu_unload_rule_for_style")?"style":"script",a(this).prop("checked")){if("click"===f.type&&!e.triggerAlertWhenAnyUnloadRuleIsChosen(b,c))return!1;e.uncheckAllOtherBulkUnloadRules(a(this),!1),e.showHandleLoadExceptionArea(c,b),a(this).closest("tr").addClass("wpacu_not_load")}else a(this).closest("tr").removeClass("wpacu_not_load"),d=a(this).parents(".wpacu_asset_row"),e.hideHandleLoadExceptionArea(d,b,c)}),a(".wpacu-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!1).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu-plugin-check-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!0).closest("tr.wpacu_is_bulk_unloaded").removeClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu-plugin-uncheck-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!1).closest("tr.wpacu_is_bulk_unloaded").addClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").on("click change",function(f){b=a(this).attr("data-handle"),c=a(this).attr("data-handle-for"),d=a("[data-"+c+'-handle-row="'+b+'"]');var g=a(this).parents("li");if(a(this).prop("checked")){if("click"===f.type&&!e.triggerAlertWhenAnyUnloadRuleIsChosen(b,c))return!1;a(this).hasClass("wpacu_unload_it_regex_checkbox")?(g.find("label").addClass("wpacu_unload_checked"),g.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),g.find(".wpacu_handle_unload_regex_input_wrap").removeClass("wpacu_hide")):(a(this).parent("label").addClass("wpacu_input_load_checked"),a(this).closest("tr").addClass("wpacu_not_load")),e.showHandleLoadExceptionArea(c,b),a(this).hasClass("wpacu_global_unload")?(e.uncheckAllOtherBulkUnloadRules(a(this),!0),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1)):a(this).hasClass("wpacu_post_type_unload")&&(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1))}else a(this).hasClass("wpacu_unload_it_regex_checkbox")?(g.find("label").removeClass("wpacu_unload_checked"),g.find("textarea").blur().addClass("wpacu_disabled"),""===g.find("textarea").val().trim()&&(g.find("textarea").prop("disabled",!0).val(""),g.find(".wpacu_handle_unload_regex_input_wrap").addClass("wpacu_hide"))):(a(this).parent("label").removeClass("wpacu_input_load_checked"),a(this).closest("tr").removeClass("wpacu_not_load")),e.hideHandleLoadExceptionArea(d,b,c);d.hasClass("wpacu_is_bulk_unloaded")||a(".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)").is(":checked")||a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_load_it_option_one.wpacu_load_exception").on("click change",function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")}),a(".wpacu_load_it_option_two").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_bold"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_load_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_bold"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_load_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_script_attr_rule_input").on("click change",function(){a(this).is(":checked")&&(a(this).parents("ul").find(".wpacu_script_attr_rule_input").not(a(this)).prop("checked",!1),a(this).hasClass("wpacu_script_attr_rule_global")&&a(this).parents("ul").find(".wpacu-script-attr-make-exception").removeClass("wpacu_hide")),a(this).parents("ul").find(".wpacu_script_attr_rule_global").is(":checked")||a(this).parents("ul").find(".wpacu-script-attr-make-exception").addClass("wpacu_hide")}),a(".wpacu-add-handle-note").on("click",function(b){b.preventDefault();var c,d,e=a(this).attr("data-handle");a(this).hasClass("wpacu-for-script")?c=a('.wpacu-handle-notes-field[data-script-handle="'+e+'"]'):a(this).hasClass("wpacu-for-style")&&(c=a('.wpacu-handle-notes-field[data-style-handle="'+e+'"]')),c.length<1||(d=c.find(":input"),c.is(":hidden")?(c.show(),d.prop("disabled",!1)):(c.hide(),""===d.val().trim()&&"true"===d.attr("data-wpacu-is-empty-on-page-load")&&d.prop("disabled",!0).val("")))}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this),e=d.attr("data-src");d.hide(),c=d.next(),c.show(),e.includes("/?")?a.get(e,{},function(a,b,d){if("success"!==b)return"N/A";c.html(wpacuBytesToSize(a.length))}):a.post(wpacu_object.ajax_url,{action:wpacu_object.plugin_id+"_get_external_file_size",wpacu_remote_file:e},function(a){c.html(a)})}),a(".wpacu_handle_row_expand_contract").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-handle"),d=a(this).attr("data-wpacu-handle-for");a(this).find("span").hasClass("dashicons-minus")?(a(this).parents("td").attr("data-wpacu-row-status","contracted").find(".wpacu_handle_row_expanded_area").addClass("wpacu_hide"),a(this).find("span").removeClass("dashicons-minus").addClass("dashicons-plus"),a("#wpacu_"+d+"_"+c+"_row_contracted_area").val("1")):a(this).find("span").hasClass("dashicons-plus")&&(a(this).parents("td").attr("data-wpacu-row-status","expanded").find(".wpacu_handle_row_expanded_area").removeClass("wpacu_hide"),a(this).find("span").removeClass("dashicons-plus").addClass("dashicons-minus"),a("#wpacu_"+d+"_"+c+"_row_contracted_area").val(""))});a('[data-is-hardcoded-asset="true"]').length>0&&(a.each(a('[data-is-hardcoded-asset="true"]'),function(b,c){e.updateHardcodedDataHiddenFieldStatus(a(this))}),a('[data-is-hardcoded-asset="true"]').on("click",".wpacu_unload_rule_input",function(){e.updateHardcodedDataHiddenFieldStatus(a(this).parents("[data-is-hardcoded-asset]"))}))},updateHardcodedDataHiddenFieldStatus:function(b){var c=!1;b.is("[data-style-handle-row]")?c=b.attr("data-style-handle-row"):b.is("[data-script-handle-row]")&&(c=b.attr("data-script-handle-row")),c&&(b.find(".wpacu_unload_rule_input:checked").length>0||b.hasClass("wpacu_not_load")?a("#"+c+"_hardcoded_data").prop("disabled",!1):a("#"+c+"_hardcoded_data").prop("disabled",!0))},triggerAlertWhenAnyUnloadRuleIsChosen:function(b,c){if("dashicons"===b&&"style"===c&&a('input[name="wpacu_ignore_child[styles][nf-display]').length>0&&!confirm(wpacu_object.dashicons_unload_alert_ninja_forms))return!1;if("script"===c){if(("jquery"===b||"jquery-core"===b)&&a("#script_jquery_ignore_children").length>0&&!confirm(wpacu_object.jquery_unload_alert))return!1;if(("backbone"===b||"underscore"===b)&&!confirm(wpacu_object.sensitive_library_unload_alert))return!1}return!0},pluginLoadManager:function(){a(".wpacu_plugin_load_it").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")&&(e.hidePluginLoadExceptionArea(b),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"))}),a(".wpacu_plugin_unload_site_wide").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),e.showPluginLoadExceptionArea(b)):(a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!0))}),a(".wpacu_plugin_unload_regex_radio").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),e.showPluginLoadExceptionArea(b),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').prop("checked",!1).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked")):(a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_load_exception_regex").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"):a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide")})},showPluginLoadExceptionArea:function(b){a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!1)},hidePluginLoadExceptionArea:function(b){a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide").find('input[type="checkbox"]').prop("disabled",!0)},showHandleLoadExceptionArea:function(b,c){var d=a("div.wpacu_exception_options_area_wrap[data-"+b+'-handle="'+c+'"]');d.parent("div").removeClass("wpacu_hide"),d.find('input[type="checkbox"]').prop("disabled",!1)},hideHandleLoadExceptionArea:function(b,c,d){if(!b.hasClass("wpacu_is_bulk_unloaded")&&!b.find(".wpacu_bulk_unload").is(":checked")){var e=a("div.wpacu_exception_options_area_wrap[data-"+d+'-handle="'+c+'"]');e.parent("div").addClass("wpacu_hide"),e.find('input[type="checkbox"]').prop("disabled",!0)}},uncheckAllOtherBulkUnloadRules:function(a,b){var c=".wpacu_bulk_unload";!1===b&&(c=".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)"),a.closest("tr").find(c).not(a).prop("checked",!1).parent("label").removeClass("wpacu_input_load_checked").removeClass("wpacu_unload_checked")},checkSourcesFor404Errors:function(){var b=a("[data-wpacu-external-source]");if(!(b.length<1)){var c=b.length,d="";b.each(function(b){var e=a(this),f=e.attr("data-wpacu-external-source");d+=f+"-at-wpacu-at-",b===c-1&&jQuery.post(wpacu_object.ajax_url+"?wpacu_check_external_url",{action:wpacu_object.plugin_id+"_check_external_urls_for_status_code",wpacu_check_urls:d},function(b){var c=jQuery.parseJSON(b);a.each(c,function(b,c){a('[data-wpacu-external-source="'+c+'"]').css({color:"#cc0000"}).parent("div").find("[data-wpacu-external-source-status]").html('<small>* <em style="font-weight: 600;">'+wpacu_object.source_load_error_msg+"</em></small>")})})})}}};a(window).load(function(){e.checkSourcesFor404Errors()}),a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").show():a("#wpacu-settings-assets-retrieval-mode").hide()}),a(".wpacu-dom-get-type-selection").change(function(){a(this).is(":checked")&&(a(".wpacu-dom-get-type-info").hide(),a("#"+a(this).attr("data-target")).fadeIn("fast"))}),a("#wpacu_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").show():a("#wpacu-settings-frontend-exceptions").hide()}),a(".google_fonts_combine_type").change(function(){a(".wpacu_google_fonts_combine_type_area").hide(),"async"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_info_area").fadeIn():"async_preload"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_preload_info_area").fadeIn():a("#wpacu_google_fonts_combine_type_rb_info_area").fadeIn()}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").fadeOut("fast")}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("[data-target-opacity]").on("click change tick",function(){a(this).prop("checked")?a("#"+a(this).attr("data-target-opacity")).css({opacity:1}):a("#"+a(this).attr("data-target-opacity")).css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.parents("form").submit(function(){f.attr("disabled",!0),a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),a(".wpacu_bulk_rule_checkbox, .wpacu_remove_preload").click(function(){var b=a(this).parents(".wpacu_bulk_change_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_regex").click(function(){var b=a(this).parents(".wpacu_regex_rule_row");a(this).prop("checked")?b.addClass("wpacu_enabled"):b.removeClass("wpacu_enabled")}),a(".wpacu_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),a("#wpacu-plugins-load-manager-wrap").length>0&&setTimeout(function(){e.pluginLoadManager()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;("default"===wpacu_object.list_show_status||""===wpacu_object.list_show_status||wpacu_object.override_assets_list_load)&&b(),"fetch_on_click"===wpacu_object.list_show_status&&a("#wpacu_ajax_fetch_on_click_btn").click(function(c){c.preventDefault(),a(this).hide(),a("#wpacu_fetching_assets_list_wrap").show(),b()}),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),wpacuAjaxClearCache(),clearInterval(d)}},d=setInterval(c,900)})}),""!==wpacu_object.clear_cache_on_page_load&&wpacuAjaxClearCache(),""!==wpacu_object.clear_other_caches&&setTimeout(function(){wpacuClearAutoptimizeCache()},150),jQuery(document).ready(function(a){try{var b;a('input[type="hidden"][name="_wp_http_referer"]').length>0&&(b=a('input[type="hidden"][name="_wp_http_referer"]').val(),b.includes("term.php?taxonomy=")&&b.includes("message=")&&wpacuAjaxClearCache(),b.includes("post.php?post=")&&b.includes("message=")&&wpacuAjaxClearCache())}catch(a){console.log(a)}});
|
assets/style.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
@charset "UTF-8";#wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{color:#74777b;float:right;width:auto;margin-right:30px;background:rgba(40,44,42,.05);border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;padding:0;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.extra-info{position:absolute;font-size:12px;left:-50%;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%);white-space:nowrap}.wpacu-tabs nav ul li span.extra-info.has-bulk-unloads{right:48%}.wpacu-tabs nav ul li span.extra-info.no-bulk-unloads{left:0;right:2px;bottom:2px;-webkit-transform:inherit;transform:inherit}.wpacu-tabs nav ul li span.extra-info .dashicons{font-size:16px;margin-right:-3px;margin-top:1px}.wpacu-tabs nav ul li span.extra-info.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.extra-info.license-status.active{color:green}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-false{color:#004567}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-true,.wpacu-tabs nav ul li span.extra-info.bulk-unloads-true{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:"";-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1800px;margin:20px auto 22px 0;width:98%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:"";width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu_hide{display:none!important}.wpacu-script-attributes-area{display:block;margin-bottom:12px}.wpacu-script-attributes-area>div:first-of-type{display:inline-block;float:left;margin-right:15px;line-height:30px;vertical-align:middle}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings{display:inline-block;float:left;padding:5px 7px!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings.wpacu-first{margin:0 15px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li{display:inline-block;margin:0 16px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{width:auto;padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_location_changed>td{border-left:#004567 4px solid}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none;color:inherit!important}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content div.select select{max-width:inherit}#wpacu_meta_box_content .emoji{font-size:18px}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning,#wpacu_meta_box_content .dashicons.dashicons-wordpress-alt{color:#c00}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_exception_options_area_wrap label.wpacu_bold span,.wpacu_load_regex_area_wrap label.wpacu_bold span,.wpacu_unload_regex_area_wrap label.wpacu_bold span{font-weight:600!important}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}@media only screen and (min-width:768px){#wpacu-update-front-settings-area{position:-webkit-sticky;position:sticky;bottom:0;display:block;padding:15px 0;z-index:1000000;border-top:1px solid #cdcdcd;background:#fff}}#wpacu-updating-front-settings{display:none;position:absolute;top:20px;left:142px}.wpacu_load_regex_area_wrap label.wpacu_unload_checked span,.wpacu_unload_regex_area_wrap label.wpacu_unload_checked span{color:#d54e21}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap{margin:4px 0 0}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text],.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text]{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap{display:inline-block}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_two,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_load_regex_input_wrap{display:block}.wpacu_exception_options_area_wrap{display:table;background:#fff!important}.wpacu_exception_options_area_wrap textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_exception_options_area_wrap textarea:focus{width:100%}.wpacu_exception_options_area_wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_exception_options_area_wrap p:first-of-type{margin-top:0}.wpacu_exception_options_area_wrap .wpacu_area_one{display:table-cell;vertical-align:top;padding-right:10px}.wpacu_exception_options_area_wrap .wpacu_area_two{display:table-cell}@media only screen and (max-width:1199px){.wpacu_exception_options_area_wrap,.wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_exception_options_area_wrap .wpacu_area_two{display:block}}#wpacu_meta_box_content .wpacu_widefat{width:100%}#wpacu_meta_box_content .wpacu-assets-collapsible-content{padding:0 10px!important}#wpacu_meta_box_content ul.wpacu_asset_options{vertical-align:middle}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li input[type=text]{margin-left:5px;border:1px solid #e7e7e7;background:#fff}.wpacu-hardcoded-code-area{margin-bottom:8px}.wpacu-hardcoded-code-area.wpacu-has-view-more{max-height:300px;position:relative;overflow:hidden}.wpacu-hardcoded-code-area.wpacu-has-view-more p.wpacu-view-more-link-area{position:absolute;bottom:0;left:0;width:100%;margin:0;padding:20px 0 15px 15px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fbfbfb8c 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fbfbfb8c 100%)}#wpacu_wrap_assets,.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu-hardcoded-code-area pre{margin:0;padding:8px 0;white-space:pre-wrap;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-hardcoded-code-area code{font-style:italic;margin-left:2px;word-break:break-word}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{width:auto!important;margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:30px}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu_verified{margin:0 0 10px!important}.wpacu_asset_row div.select{display:inline-block;width:auto}.wpacu_asset_row:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_row) td p{padding:0!important;margin-bottom:8px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning,.wpacu_asset_row .dashicons-wordpress-alt{color:red!important}.wpacu_asset_row .dashicons-wordpress-alt{font-size:17px;vertical-align:middle}label.wpacu_add_global{cursor:pointer!important}label.wpacu_input_load_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}tr.wpacu_bulk_change_row.wpacu_selected,tr.wpacu_global_rule_row.wpacu_selected,tr.wpacu_remove_preload_row.wpacu_selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}.nav-tab-wrapper.nav-assets-manager .nav-tab{font-size:13px;font-weight:500;padding:6px 10px}.nav-tab-wrapper.nav-assets-manager .nav-tab.for-pro{padding:6px 8px 6px 3px}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 10px 0 0;list-style:none;display:inline-block;line-height:normal}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table{width:100%;font-weight:400}.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#007dc1", endColorstr="#0061a7", GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;cursor:pointer!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn.wpacu_submitting,.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#0061a7", endColorstr="#007dc1", GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn.wpacu_submitting{cursor:default!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.go-pro-button,.go-pro-link-no-style,.wordpress-core-file{display:inline-block;text-decoration:none}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=submit].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{text-shadow:none;font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;color:inherit}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip,.wordpress-core-file .wpacu-tooltip{line-height:18px;text-align:center;-webkit-transition:.1s all ease;z-index:1}.go-pro-link-no-style>img{max-width:20px;max-height:20px}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;position:absolute;visibility:hidden;width:160px;background-color:#00a7a7;color:#fff;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .wpacu-tooltip{font-size:14px;position:absolute;visibility:hidden;width:160px;background-color:#c00;color:#fff;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #008f9c}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}#wpacu-dom-get-type-selections,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap li,.wpacu-wrap p,.wpacu-wrap td{font-weight:400}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap small code{font-size:inherit!important}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area,.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .submit{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:38px;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:35px;left:3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:5px;right:2px;z-index:1000}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:4px;line-height:1.4}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}#wpacu-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.wpacu-license-action-btn-area{margin-top:0;position:relative;display:inline-block}.wpacu-license-spinner{display:none;position:absolute;right:-30px;top:4px}.wpacu-license-spinner img{width:20px;height:20px}#wpacu-activation-issues-info{border-radius:10px;width:90%;margin-top:20px;font-size:14px;padding:6px 20px;background:#fff;border:1px solid #e7e7e7}#wpacu-activation-issues-info ol li{font-size:13px;margin-bottom:10px}#wpacu-mark-license-area-wrap{margin:15px 0}.wpacu-form-table.wpacu-license th{width:120px}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox],.wpacu-form-table label input[type=checkbox]{height:20px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked,.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:hover,.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked:before,.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}.wpacu-form-table .wpacu-fancy-radio input[type=radio]{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:relative;height:20px;width:20px;margin:2px 0 0}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked,.wpacu-form-table .wpacu-fancy-radio input[type=radio]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked:before{margin:0;line-height:inherit;text-indent:inherit;content:"";position:absolute;top:4px;left:4px;width:10px;height:10px;border-radius:50%;background:#52af00;color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text{margin:4px 0 0}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small{font-weight:lighter}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap{position:relative;padding-left:14px}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status{position:absolute;left:0;top:2px;height:10px;width:10px;border-radius:50%;display:inline-block;opacity:.75}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-on{background:#52af00}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-off{background:#ccc}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:20%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:"";position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}@media only screen and (min-width:768px){body.asset-cleanup-pro_page_wpassetcleanup_assets_manager #wpacu-update-button-area,body.asset-cleanup_page_wpassetcleanup_assets_manager #wpacu-update-button-area{position:-webkit-sticky;position:sticky;bottom:0;padding:0;z-index:1000000;border-top:1px solid #cdcdcd;background:#f1f1f1}.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}body[class*=version-5-3] #wpacu-update-button-area .button{height:auto;padding:4px 18px 6px;font-size:15px}body[class*=version-5-3] #wpacu-updating-settings{margin-left:178px}#wpacu-update-button-area{position:relative;margin-left:20%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area .submit{margin:0;padding:19px 0}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:28px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:"";height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}.google_fonts_load_types{clear:both;margin:20px 0 15px;display:flex}.google_fonts_load_types>div{text-align:left}.google_fonts_load_types>div input{float:left;margin:0 7px 20px 0!important}.wpacu-sub-tabs-wrap{min-width:320px;margin:0 auto}.wpacu-sub-tabs-wrap input.wpacu-nav-input{display:none}.wpacu-sub-tabs-wrap label.wpacu-nav-label{display:inline-block;margin:0 0 -1px;padding:15px 25px;font-weight:600;text-align:center;color:#74777b;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;border-bottom:0}.wpacu-sub-tabs-wrap label.wpacu-nav-label:hover{cursor:pointer}.wpacu-sub-tabs-wrap input.wpacu-nav-input:checked+label.wpacu-nav-label{color:#004567;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:3px solid #004567;border-bottom:1px solid #fff}.wpacu-sub-tabs-wrap section{display:none;padding:20px 0 0;border-top:1px solid #ccc}#wpacu-google-fonts-optimize-tab-item:checked~#wpacu-google-fonts-optimize-tab-item-area,#wpacu-google-fonts-remove-tab-item:checked~#wpacu-google-fonts-remove-tab-item-area{display:block}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{padding-top:5px;margin-bottom:-10px;border-top:1px solid #e7e7e7}.wpacu-handle-notes .wpacu-handle-notes-field{display:none}.wpacu-handle-notes .wpacu-handle-notes-field>textarea{font-size:85%;padding:6px;width:320px;max-width:100%}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.wrap_bulk_unload_options{width:auto;display:block;clear:both}.wrap_bulk_unload_options .wpacu_asset_options_wrap{display:inline-block;float:left;margin:5px 10px 14px 0!important;padding:8px 10px 12px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;min-width:52px;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled{opacity:.3}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:1px;right:2px;z-index:1000}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu-wrap{width:98%}.wpacu-wrap tr.wpacu_regex_rule_row{opacity:.45}.wpacu-wrap tr.wpacu_regex_rule_row textarea{line-height:normal;min-height:20px;min-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu-wrap tr.wpacu_regex_rule_row textarea:focus{width:100%}.wpacu-wrap tr.wpacu_regex_rule_row.wpacu_enabled{opacity:1}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small{position:relative;display:inline-block;min-width:30px;width:30px;height:17px;margin-right:5px!important}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider:before{position:absolute;content:"";height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider:before{-webkit-transform:translateX(13px);-ms-transform:translateX(13px);transform:translateX(13px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round{border-radius:17px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round:before{border-radius:50%}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin .wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin .wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin .wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row>td{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all}.wpacu_asset_row input{width:auto;height:auto;min-height:16px}.wpacu_asset_row .tip{background:inherit;border-left:4px solid #e7e7e7;margin:0 0 5px;padding:7px;font-style:italic;font-size:small;line-height:1.4}.wpacu_asset_row td{width:100%;text-align:left}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{display:table;content:""}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix{clear:both;height:0}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.wpacu-assets-collapsible-wrap,.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-area{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 8px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all+.wpacu-plugin-toggle-all{padding:2px 12px 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:""}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:""}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{color:inherit;font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;width:14px;height:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:""}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:""}.wpacu-assets-inline-code-collapsible-content{padding:0 8px 2px 0;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_asset_row p div.select{display:inline-block}.wpacu-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.wpacu_handle_unload_regex_input_wrap,.wpacu_load_regex_input_wrap{display:block;width:100%}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus{width:100%}body.logged-in:not(.wp-admin) .wpacu-view-more-code{box-shadow:inset 0 1px 0 0 #fff;background:linear-gradient(to bottom,#f9f9f9 5%,#e9e9e9 100%);background-color:#f9f9f9;border-radius:6px;border:1px solid #dcdcdc;display:inline-block;cursor:pointer;color:#666;font-size:inherit;font-weight:700;padding:6px 24px;text-decoration:none;text-shadow:0 1px 0 #fff}body.logged-in:not(.wp-admin) .wpacu-view-more-code:hover{background:linear-gradient(to bottom,#e9e9e9 5%,#f9f9f9 100%);background-color:#e9e9e9}body.logged-in:not(.wp-admin) .wpacu-view-more-code:active{position:relative;top:1px}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td{border-top:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:first-of-type{border-left:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:last-of-type{border-right:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td{font-size:14px;border-top:1px solid transparent;border-bottom:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:first-of-type{border-left:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:last-of-type{border-right:1px solid transparent}body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table) tr:not(:first-of-type):not(.wpacu_selected):hover,body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table).wpacu-list-table tr:not(.wpacu_selected):hover{-moz-box-shadow:inset 0 0 2px 1px #b3b3b3;-webkit-box-shadow:inset 0 0 2px 1px #B3B3B3;box-shadow:inset 0 0 2px 1px #B3B3B3}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7!important}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label.wpacu_plugin_unload_rule_input_checked,#wpacu-warning-read span.dashicons-warning,#wpacu-warning-read span.dashicons-wordpress-alt{color:#c00}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;line-height:22px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{width:560px;height:315px}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:"";position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}img.wpacu-emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#wpacu-plugins-load-manager-wrap table td{border-bottom:1px solid #e7e7e7}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_icon{padding:14px 10px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details{vertical-align:middle;padding:10px 0 10px 8px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details .wpacu_plugin_title{font-weight:600}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:8px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_load_it:before{background-color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_unload_rule_input:before{background-color:#c00}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options{padding-top:5px;border-top:1px solid #e7e7e7;width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:6px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu-list-table.plugins{width:98%;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#wpacu-plugins-load-manager-wrap .help_link{text-decoration:none;color:inherit;vertical-align:middle}#wpacu-plugins-load-manager-wrap .help_link.unload_it_regex{vertical-align:top}#wpacu-plugins-load-manager-wrap .wpacu_plugin_details .wpacu_plugin_path{font-style:italic;color:grey}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div{background:#efefef;border:#cdcdcd;border-radius:3px;width:40px;height:40px;vertical-align:middle;position:relative;text-align:center}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div>span{font-size:30px;color:#b3b3b3;top:50%;vertical-align:middle;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;position:absolute}#wpacu-plugins-load-manager-wrap .wpacu_exception_options_area textarea,#wpacu-plugins-load-manager-wrap textarea:focus{width:100%}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap{display:block}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap textarea{margin-top:6px;min-width:400px}#wpacu-plugins-load-manager-wrap textarea{line-height:normal;min-height:20px;min-width:300px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}
|
1 |
+
@charset "UTF-8";#wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{color:#74777b;float:right;width:auto;margin-right:30px;background:rgba(40,44,42,.05);border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;padding:0;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.extra-info{position:absolute;font-size:12px;left:-50%;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%);white-space:nowrap}.wpacu-tabs nav ul li span.extra-info.has-bulk-unloads{right:48%}.wpacu-tabs nav ul li span.extra-info.no-bulk-unloads{left:0;right:2px;bottom:2px;-webkit-transform:inherit;transform:inherit}.wpacu-tabs nav ul li span.extra-info .dashicons{font-size:16px;margin-right:-3px;margin-top:1px}.wpacu-tabs nav ul li span.extra-info.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.extra-info.license-status.active{color:green}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-false{color:#004567}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons,.wpacu-tabs nav ul li span.extra-info.assets-unloaded-true,.wpacu-tabs nav ul li span.extra-info.bulk-unloads-true{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:"";-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1800px;margin:20px auto 22px 0;width:98%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:"";width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu_hide{display:none!important}.wpacu-script-attributes-area{display:block;margin-bottom:12px}.wpacu-script-attributes-area>div:first-of-type{display:inline-block;float:left;margin-right:15px;line-height:30px;vertical-align:middle}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings{display:inline-block;float:left;padding:5px 7px!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings.wpacu-first{margin:0 15px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li{display:inline-block;margin:0 16px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{width:auto;padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_location_changed>td{border-left:#004567 4px solid}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none;color:inherit!important}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content div.select select{max-width:inherit}#wpacu_meta_box_content .emoji{font-size:18px}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning,#wpacu_meta_box_content .dashicons.dashicons-wordpress-alt{color:#c00}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_exception_options_area_wrap label.wpacu_bold span,.wpacu_load_regex_area_wrap label.wpacu_bold span,.wpacu_unload_regex_area_wrap label.wpacu_bold span{font-weight:600!important}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}@media only screen and (min-width:768px){#wpacu-update-front-settings-area{position:-webkit-sticky;position:sticky;bottom:0;display:block;padding:15px 0;z-index:1000000;border-top:1px solid #cdcdcd;background:#fff}}#wpacu-updating-front-settings{display:none;position:absolute;top:20px;left:142px}.wpacu_load_regex_area_wrap label.wpacu_unload_checked span,.wpacu_unload_regex_area_wrap label.wpacu_unload_checked span{color:#d54e21}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap{margin:4px 0 0}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text],.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text]{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap{display:inline-block}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_two,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_load_regex_input_wrap{display:block}.wpacu_exception_options_area_wrap{display:table;background:#fff!important}.wpacu_exception_options_area_wrap textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_exception_options_area_wrap textarea:focus{width:100%}.wpacu_exception_options_area_wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_exception_options_area_wrap p:first-of-type{margin-top:0}.wpacu_exception_options_area_wrap .wpacu_area_one{display:table-cell;vertical-align:top;padding-right:10px}.wpacu_exception_options_area_wrap .wpacu_area_two{display:table-cell}@media only screen and (max-width:1199px){.wpacu_exception_options_area_wrap,.wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_exception_options_area_wrap .wpacu_area_two{display:block}}#wpacu_meta_box_content .wpacu_widefat{width:100%}#wpacu_meta_box_content .wpacu-assets-collapsible-content{padding:0 10px!important}#wpacu_meta_box_content ul.wpacu_asset_options{vertical-align:middle}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li input[type=text]{margin-left:5px;border:1px solid #e7e7e7;background:#fff}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{width:auto!important;margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:30px}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu_verified{margin:0 0 10px!important}.wpacu_asset_row div.select{display:inline-block;width:auto}.wpacu_asset_row:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td[data-wpacu-row-status=contracted]{padding:18px 18px 8px!important}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_row) td p{padding:0!important;margin-bottom:8px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning,.wpacu_asset_row .dashicons-wordpress-alt{color:red!important}.wpacu_asset_row .dashicons-wordpress-alt{font-size:17px;vertical-align:middle}label.wpacu_add_global{cursor:pointer!important}label.wpacu_input_load_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}tr.wpacu_bulk_change_row.wpacu_selected,tr.wpacu_global_rule_row.wpacu_selected,tr.wpacu_remove_preload_row.wpacu_selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}.nav-tab-wrapper.nav-assets-manager .nav-tab{font-size:13px;font-weight:500;padding:6px 10px}.nav-tab-wrapper.nav-assets-manager .nav-tab.for-pro{padding:6px 8px 6px 3px}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 10px 0 0;list-style:none;display:inline-block;line-height:normal}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table{width:100%;font-weight:400}.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#007dc1", endColorstr="#0061a7", GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;cursor:pointer!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn.wpacu_submitting,.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#0061a7", endColorstr="#007dc1", GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn.wpacu_submitting{cursor:default!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=submit].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;text-decoration:none;display:inline-block;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{text-shadow:none;font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;display:inline-block;color:inherit;text-decoration:none}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style>img{max-width:20px;max-height:20px}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#00a7a7;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.wordpress-core-file{position:relative;display:inline-block;font-style:normal;color:inherit;text-decoration:none}.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #008f9c}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}#wpacu-dom-get-type-selections,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap li,.wpacu-wrap p,.wpacu-wrap td{font-weight:400}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap small code{font-size:inherit!important}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area,.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .submit{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:38px;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:35px;left:3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:5px;right:2px;z-index:1000}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:4px;line-height:1.4}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}#wpacu-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.wpacu-license-action-btn-area{margin-top:0;position:relative;display:inline-block}.wpacu-license-spinner{display:none;position:absolute;right:-30px;top:4px}.wpacu-license-spinner img{width:20px;height:20px}#wpacu-activation-issues-info{border-radius:10px;width:90%;margin-top:20px;font-size:14px;padding:6px 20px;background:#fff;border:1px solid #e7e7e7}#wpacu-activation-issues-info ol li{font-size:13px;margin-bottom:10px}#wpacu-mark-license-area-wrap{margin:15px 0}.wpacu-form-table.wpacu-license th{width:120px}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox],.wpacu-form-table label input[type=checkbox]{height:20px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked,.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:hover,.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:disabled,.wpacu-form-table label input[type=checkbox]:disabled{border:none}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:disabled:checked,.wpacu-form-table label input[type=checkbox]:disabled:checked{opacity:.3}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked:before,.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}.wpacu-form-table .wpacu-fancy-radio input[type=radio]{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:relative;height:20px;width:20px;margin:2px 0 0}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked,.wpacu-form-table .wpacu-fancy-radio input[type=radio]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked:before{margin:0;line-height:inherit;text-indent:inherit;content:"";position:absolute;top:4px;left:4px;width:10px;height:10px;border-radius:50%;background:#52af00;color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text{margin:4px 0 0}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small{font-weight:lighter}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap{position:relative;padding-left:14px}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status{position:absolute;left:0;top:2px;height:10px;width:10px;border-radius:50%;display:inline-block;opacity:.75}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-on{background:#52af00}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-off{background:#ccc}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:20%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:"";position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}@media only screen and (min-width:768px){body.asset-cleanup-pro_page_wpassetcleanup_assets_manager #wpacu-update-button-area,body.asset-cleanup_page_wpassetcleanup_assets_manager #wpacu-update-button-area{position:-webkit-sticky;position:sticky;bottom:0;padding:0;z-index:1000000;border-top:1px solid #cdcdcd;background:#f1f1f1}.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}body[class*=version-5-3] #wpacu-update-button-area .button{height:auto;padding:4px 18px 6px;font-size:15px}body[class*=version-5-3] #wpacu-updating-settings{margin-left:178px}#wpacu-update-button-area{position:relative;margin-left:20%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area .submit{margin:0;padding:19px 0}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:28px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:"";height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}.google_fonts_load_types{clear:both;margin:20px 0 15px;display:flex}.google_fonts_load_types>div{text-align:left}.google_fonts_load_types>div input{float:left;margin:0 7px 20px 0!important}.wpacu-sub-tabs-wrap{min-width:320px;margin:0 auto}.wpacu-sub-tabs-wrap input.wpacu-nav-input{display:none}.wpacu-sub-tabs-wrap label.wpacu-nav-label{display:inline-block;margin:0 0 -1px;padding:15px 25px;font-weight:600;text-align:center;color:#74777b;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;border-bottom:0}.wpacu-sub-tabs-wrap label.wpacu-nav-label:hover{cursor:pointer}.wpacu-sub-tabs-wrap input.wpacu-nav-input:checked+label.wpacu-nav-label{color:#004567;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:3px solid #004567;border-bottom:1px solid #fff}.wpacu-sub-tabs-wrap section{display:none;padding:20px 0 0;border-top:1px solid #ccc}#wpacu-google-fonts-optimize-tab-item:checked~#wpacu-google-fonts-optimize-tab-item-area,#wpacu-google-fonts-remove-tab-item:checked~#wpacu-google-fonts-remove-tab-item-area{display:block}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{padding-top:5px;margin-bottom:-10px;border-top:1px solid #e7e7e7}.wpacu-handle-notes .wpacu-handle-notes-field{display:none}.wpacu-handle-notes .wpacu-handle-notes-field>textarea{font-size:85%;padding:6px;width:320px;max-width:100%}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.wrap_bulk_unload_options{width:auto;display:block;clear:both}.wrap_bulk_unload_options .wpacu_asset_options_wrap{display:inline-block;float:left;margin:5px 10px 14px 0!important;padding:8px 10px 12px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;min-width:52px;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled{opacity:.3}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:1px;right:2px;z-index:1000}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu-wrap{width:98%}.wpacu-wrap tr.wpacu_regex_rule_row{opacity:.45}.wpacu-wrap tr.wpacu_regex_rule_row textarea{line-height:normal;min-height:20px;min-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu-wrap tr.wpacu_regex_rule_row textarea:focus{width:100%}.wpacu-wrap tr.wpacu_regex_rule_row.wpacu_enabled{opacity:1}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small{position:relative;display:inline-block;min-width:30px;width:30px;height:17px;margin-right:5px!important}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider:before{position:absolute;content:"";height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider:before{-webkit-transform:translateX(13px);-ms-transform:translateX(13px);transform:translateX(13px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round{border-radius:17px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round:before{border-radius:50%}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin tr.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract .dashicons{width:19px;height:19px;font-size:19px}body.wp-admin tr.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before{right:20px;top:-2px}body.wp-admin tr.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after{left:20px;top:-2px}body.wp-admin tr.wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin tr.wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin tr.wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row .wpacu-hardcoded-code-area{margin:0}.wpacu_asset_row .wpacu-hardcoded-code-area span.wpacu_inside_cond_comm{display:block;margin-bottom:8px}.wpacu_asset_row .wpacu-hardcoded-code-area .wpacu-has-view-more{max-height:300px;position:relative;overflow:hidden}.wpacu_asset_row .wpacu-hardcoded-code-area .wpacu-has-view-more p.wpacu-view-more-link-area{position:absolute;bottom:0;left:0;width:100%;margin:0;padding:20px 0 15px 15px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fbfbfb8c 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fbfbfb8c 100%)}.wpacu_asset_row .wpacu-hardcoded-code-area pre{margin:0;padding:0 0 8px;white-space:pre-wrap;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row .wpacu-hardcoded-code-area code{color:inherit;font-style:italic;margin-left:2px;word-break:break-word}.wpacu_asset_row[data-is-hardcoded-asset=true] .wpacu-source-row{margin-top:0}.wpacu_asset_row[data-is-hardcoded-asset=true] .wpacu_handle_row_expand_contract_area{right:18px;top:18px;background:inherit;z-index:100}.wpacu_asset_row>td{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all}.wpacu_asset_row>td[data-wpacu-row-status=expanded] .wpacu_file_size_area{margin:10px 0}.wpacu_asset_row>td[data-wpacu-row-status=expanded] .wpacu_hardcoded_part_if_contracted{display:none}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_hardcoded_part_if_contracted,.wpacu_asset_row>td[data-wpacu-row-status=expanded] .wpacu_hardcoded_part_if_expanded{display:block}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_file_size_area{margin:0}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_hardcoded_part_if_contracted code{width:100%}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_hardcoded_part_if_expanded{display:none}.wpacu_asset_row>td div.wpacu_dependency_notice_area{line-height:22px;margin:10px 0;text-align:left!important;font-weight:400!important}.wpacu_asset_row>td div.wpacu-source-row{margin-top:12px}.wpacu_asset_row>td .wpacu_hide_if_handle_row_contracted{display:inline-block}.wpacu_asset_row>td[data-wpacu-row-status=contracted]>div{float:left;margin-top:0;margin-right:20px;margin-bottom:10px}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_hide_if_handle_row_contracted{display:none}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract{transition:none}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:focus,.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:focus-visible,.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:visited{text-decoration:none;border:none}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after,.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before{opacity:0;-webkit-transition:-webkit-transform .3s,opacity .2s;-moz-transition:-moz-transform .3s,opacity .2s;transition:transform .3s,opacity .2s}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before{position:absolute;right:20px;top:-4px;content:"[";-webkit-transform:translateX(20px);-moz-transform:translateX(20px);transform:translateX(20px)}.wpacu_asset_row>td[data-wpacu-row-status=contracted] .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after{position:absolute;left:20px;top:-4px;content:"]";-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);transform:translateX(-20px)}.wpacu_asset_row>td[data-wpacu-row-status=contracted].wpacu_hovered .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:focus .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:hover .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract{transition:none}.wpacu_asset_row>td[data-wpacu-row-status=contracted].wpacu_hovered .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:hover,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:focus .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:hover,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:hover .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:hover{color:green}.wpacu_asset_row>td[data-wpacu-row-status=contracted].wpacu_hovered .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after,.wpacu_asset_row>td[data-wpacu-row-status=contracted].wpacu_hovered .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:focus .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:focus .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:hover .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:after,.wpacu_asset_row>td[data-wpacu-row-status=contracted]:hover .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:before{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}.wpacu_asset_row .wpacu_handle_row_expand_contract_area{position:absolute;right:20px;top:20px;float:none!important;margin:0!important}.wpacu_asset_row .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract{color:#000;text-decoration:none}.wpacu_asset_row .wpacu_handle_row_expand_contract_area a.wpacu_handle_row_expand_contract:hover{text-decoration:none}.wpacu_asset_row input{width:auto;height:auto;min-height:16px}.wpacu_asset_row .tip{background:inherit;border-left:4px solid #e7e7e7;margin:10px 0;padding:7px;font-style:italic;font-size:small;line-height:1.4}.wpacu_asset_row td{width:100%;text-align:left}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row div.wpacu_handle{margin:0 0 -8px}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{display:table;content:""}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix{clear:both;height:0}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-area{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 8px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all+.wpacu-plugin-toggle-all{padding:2px 12px 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:""}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:""}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{color:inherit;font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;width:14px;height:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:""}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:""}.wpacu-assets-inline-code-collapsible-content{padding:0 8px 2px 0;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_asset_row p div.select{display:inline-block}.wpacu-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.wpacu_handle_unload_regex_input_wrap,.wpacu_load_regex_input_wrap{display:block;width:100%}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus{width:100%}body.logged-in:not(.wp-admin) .wpacu-view-more-code{box-shadow:inset 0 1px 0 0 #fff;background:linear-gradient(to bottom,#f9f9f9 5%,#e9e9e9 100%);background-color:#f9f9f9;border-radius:6px;border:1px solid #dcdcdc;display:inline-block;cursor:pointer;color:#666;font-size:inherit;font-weight:700;padding:6px 24px;text-decoration:none;text-shadow:0 1px 0 #fff}body.logged-in:not(.wp-admin) .wpacu-view-more-code:hover{background:linear-gradient(to bottom,#e9e9e9 5%,#f9f9f9 100%);background-color:#e9e9e9}body.logged-in:not(.wp-admin) .wpacu-view-more-code:active{position:relative;top:1px}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td{border-top:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:first-of-type{border-left:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:last-of-type{border-right:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td{font-size:14px;border-top:1px solid transparent;border-bottom:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:first-of-type{border-left:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:last-of-type{border-right:1px solid transparent}body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table) tr:not(:first-of-type):not(.wpacu_selected):hover,body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table).wpacu-list-table tr:not(.wpacu_selected):hover{-moz-box-shadow:inset 0 0 2px 1px #b3b3b3;-webkit-box-shadow:inset 0 0 2px 1px #B3B3B3;box-shadow:inset 0 0 2px 1px #B3B3B3}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7!important}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label.wpacu_plugin_unload_rule_input_checked,#wpacu-warning-read span.dashicons-warning,#wpacu-warning-read span.dashicons-wordpress-alt{color:#c00}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}select#wpacu-reset-drop-down{max-width:100%}#wpacu-license-data-remove-area{display:none;margin:14px 0 12px}#wpacu-license-data-remove-area.wpacu-visible{display:block}#wpacu-cache-assets-remove-area{display:none;margin:12px 0 25px}#wpacu-cache-assets-remove-area.wpacu-visible{display:block}#wpacu-cached-assets-removed-msg,span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;line-height:22px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{width:560px;height:315px}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:"";position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal pre{white-space:normal}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-modal-content pre{white-space:normal}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}img.wpacu-emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#wpacu-plugins-load-manager-wrap table td{border-bottom:1px solid #e7e7e7}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_icon{padding:14px 10px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details{vertical-align:middle;padding:10px 0 10px 8px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details .wpacu_plugin_title{font-weight:600}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:8px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_load_it:before{background-color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_unload_rule_input:before{background-color:#c00}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options{padding-top:5px;border-top:1px solid #e7e7e7;width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:6px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu-list-table.plugins{width:98%;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#wpacu-plugins-load-manager-wrap .help_link{text-decoration:none;color:inherit;vertical-align:middle}#wpacu-plugins-load-manager-wrap .help_link.unload_it_regex{vertical-align:top}#wpacu-plugins-load-manager-wrap .wpacu_plugin_details .wpacu_plugin_path{font-style:italic;color:grey}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div{background:#efefef;border:#cdcdcd;border-radius:3px;width:40px;height:40px;vertical-align:middle;position:relative;text-align:center}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div>span{font-size:30px;color:#b3b3b3;top:50%;vertical-align:middle;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;position:absolute}#wpacu-plugins-load-manager-wrap .wpacu_exception_options_area textarea,#wpacu-plugins-load-manager-wrap textarea:focus{width:100%}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap{display:block}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap textarea{margin-top:6px;min-width:400px}#wpacu-plugins-load-manager-wrap textarea{line-height:normal;min-height:20px;min-width:300px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}
|
classes/CleanUp.php
CHANGED
@@ -496,6 +496,13 @@ class CleanUp
|
|
496 |
// No Autoptimize
|
497 |
add_filter('autoptimize_filter_noptimize', '__return_false');
|
498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
// No Fast Velocity Minify
|
500 |
add_action('plugins_loaded', static function() {
|
501 |
remove_action( 'setup_theme', 'fastvelocity_process_frontend' );
|
496 |
// No Autoptimize
|
497 |
add_filter('autoptimize_filter_noptimize', '__return_false');
|
498 |
|
499 |
+
// Use less resources during CSS/JS fetching by preventing other plugins to interfere with the HTML output as it's completely unnecessary in this instance
|
500 |
+
if (Misc::isPluginActive('autoptimize/autoptimize.php')) {
|
501 |
+
foreach (array('autoptimize_html', 'autoptimize_css', 'autoptimize_js', 'autoptimize_cdn_url', 'autoptimize_optimize_logged') as $aoOption) {
|
502 |
+
add_filter('pre_option_'.$aoOption, static function($value) { return ''; });
|
503 |
+
}
|
504 |
+
}
|
505 |
+
|
506 |
// No Fast Velocity Minify
|
507 |
add_action('plugins_loaded', static function() {
|
508 |
remove_action( 'setup_theme', 'fastvelocity_process_frontend' );
|
classes/Debug.php
CHANGED
@@ -178,7 +178,9 @@ class Debug
|
|
178 |
<li>From CSS file to Inline: {wpacu_alter_html_source_for_inline_css_exec_time}</li>
|
179 |
<li>Update Original to Optimized: {wpacu_alter_html_source_original_to_optimized_css_exec_time}</li>
|
180 |
<li>Preloads: {wpacu_alter_html_source_for_preload_css_exec_time}</li>
|
181 |
-
|
|
|
|
|
182 |
<li>Combine: {wpacu_alter_html_source_for_combine_css_exec_time}</li>
|
183 |
<li>Minify Inline Tags: {wpacu_alter_html_source_for_minify_inline_style_tags_exec_time}</li>
|
184 |
<li>Unload (ignore dependencies): {wpacu_alter_html_source_unload_ignore_deps_css_exec_time}</li>
|
@@ -189,7 +191,9 @@ class Debug
|
|
189 |
<ul>
|
190 |
<li>Update Original to Optimized: {wpacu_alter_html_source_original_to_optimized_js_exec_time}</li>
|
191 |
<li>Preloads: {wpacu_alter_html_source_for_preload_js_exec_time}</li>
|
192 |
-
|
|
|
|
|
193 |
<li>Combine: {wpacu_alter_html_source_for_combine_js_exec_time}</li>
|
194 |
<li>Unload (ignore dependencies): {wpacu_alter_html_source_unload_ignore_deps_js_exec_time}</li>
|
195 |
<li>Move any inline wih jQuery code after jQuery library: {wpacu_alter_html_source_move_inline_jquery_after_src_tag_exec_time}</li>
|
178 |
<li>From CSS file to Inline: {wpacu_alter_html_source_for_inline_css_exec_time}</li>
|
179 |
<li>Update Original to Optimized: {wpacu_alter_html_source_original_to_optimized_css_exec_time}</li>
|
180 |
<li>Preloads: {wpacu_alter_html_source_for_preload_css_exec_time}</li>
|
181 |
+
<!-- removeIf(development) -->
|
182 |
+
<!--<li>Dynamic Loaded CSS (if any): {wpacu_alter_html_source_for_dynamic_loaded_css_exec_time}</li>-->
|
183 |
+
<!-- endRemoveIf(development) -->
|
184 |
<li>Combine: {wpacu_alter_html_source_for_combine_css_exec_time}</li>
|
185 |
<li>Minify Inline Tags: {wpacu_alter_html_source_for_minify_inline_style_tags_exec_time}</li>
|
186 |
<li>Unload (ignore dependencies): {wpacu_alter_html_source_unload_ignore_deps_css_exec_time}</li>
|
191 |
<ul>
|
192 |
<li>Update Original to Optimized: {wpacu_alter_html_source_original_to_optimized_js_exec_time}</li>
|
193 |
<li>Preloads: {wpacu_alter_html_source_for_preload_js_exec_time}</li>
|
194 |
+
<!-- removeIf(development) -->
|
195 |
+
<!--<li>Dynamic Loaded JS (if any): {wpacu_alter_html_source_for_dynamic_loaded_js_exec_time}</li>-->
|
196 |
+
<!-- endRemoveIf(development) -->
|
197 |
<li>Combine: {wpacu_alter_html_source_for_combine_js_exec_time}</li>
|
198 |
<li>Unload (ignore dependencies): {wpacu_alter_html_source_unload_ignore_deps_js_exec_time}</li>
|
199 |
<li>Move any inline wih jQuery code after jQuery library: {wpacu_alter_html_source_move_inline_jquery_after_src_tag_exec_time}</li>
|
classes/HardcodedAssets.php
CHANGED
@@ -228,71 +228,28 @@ class HardcodedAssets
|
|
228 |
preg_match_all( '@<script[^>]*?>.*?</script>@si', $htmlSourceAlt, $matchesScriptTags, PREG_SET_ORDER );
|
229 |
|
230 |
if ( isset( wp_scripts()->done ) && ! empty( wp_scripts()->done ) ) {
|
231 |
-
|
232 |
-
// Go through the STYLE list
|
233 |
-
foreach ( $matchesScriptTags as $matchedTagIndex => $matchedTag ) {
|
234 |
-
if ( isset( $matchedTag[0] ) ) {
|
235 |
-
$matchedTagOutput = trim( $matchedTag[0] );
|
236 |
-
|
237 |
-
if ( strpos( $matchedTagOutput, 'window._wpemojiSettings' ) !== false
|
238 |
-
&& strpos( $matchedTagOutput, 'twemoji' ) !== false ) {
|
239 |
-
unset( $matchesScriptTags[ $matchedTagIndex ] );
|
240 |
-
continue;
|
241 |
-
}
|
242 |
-
|
243 |
-
// Check the type and only allow SCRIPT tags with type='text/javascript' or no type at all (it default to 'text/javascript')
|
244 |
-
$matchedTagInner = strip_tags( $matchedTagOutput );
|
245 |
-
$matchedTagOnlyTags = str_replace( $matchedTagInner, '', $matchedTagOutput );
|
246 |
-
preg_match_all( '#type=(["\'])' . '(.*)' . '(["\'])#Usmi', $matchedTagOnlyTags,
|
247 |
-
$outputMatches );
|
248 |
-
$scriptType = isset( $outputMatches[2][0] ) ? trim( $outputMatches[2][0],
|
249 |
-
'"\'' ) : 'text/javascript';
|
250 |
-
|
251 |
-
if ( strpos( $scriptType, 'text/javascript' ) === false ) {
|
252 |
-
unset( $matchesScriptTags[ $matchedTagIndex ] );
|
253 |
-
continue;
|
254 |
-
}
|
255 |
-
|
256 |
-
if ( strpos( $matchedTagOutput, 'data-wpacu-script-handle=' ) !== false ) {
|
257 |
-
unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove the SCRIPT with src that was enqueued properly and keep the hardcoded ones
|
258 |
-
continue;
|
259 |
-
}
|
260 |
-
|
261 |
-
if ( (strpos( $matchedTagOutput, 'data-wpacu-own-inline-script=' ) !== false) ||
|
262 |
-
(strpos( $matchedTagOutput, 'data-wpacu-inline-js-file=' ) !== false) ) {
|
263 |
-
unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove plugin's own SCRIPT tags as they are not relevant in this context
|
264 |
-
continue;
|
265 |
-
}
|
266 |
|
267 |
-
|
268 |
-
|
|
|
|
|
|
|
|
|
|
|
269 |
continue;
|
270 |
}
|
271 |
|
272 |
-
|
273 |
-
|
274 |
-
$anyInlineAssocWithJsHandle = OptimizeJs::getInlineAssociatedWithScriptHandle( $assetHandle, wp_scripts()->registered, 'handle' );
|
275 |
-
if ( ! empty( $anyInlineAssocWithJsHandle ) ) {
|
276 |
-
foreach ( $anyInlineAssocWithJsHandle as $jsInlineTagContent ) {
|
277 |
-
if ( trim( $jsInlineTagContent ) === '' ) {
|
278 |
-
continue;
|
279 |
-
}
|
280 |
-
|
281 |
-
$jsInlineTagContentMin = MinifyJs::applyMinification( $jsInlineTagContent );
|
282 |
-
$matchedTagOutputMin = MinifyJs::applyMinification( $matchedTagOutput );
|
283 |
-
|
284 |
-
if ( strpos( $matchedTagOutputMin, $jsInlineTagContentMin ) !== false ) {
|
285 |
-
unset( $matchesScriptTags[ $matchedTagIndex ] );
|
286 |
-
}
|
287 |
-
}
|
288 |
-
}
|
289 |
-
}
|
290 |
}
|
291 |
}
|
292 |
-
}
|
293 |
|
|
|
|
|
|
|
294 |
|
295 |
-
// Go through the
|
296 |
if ( isset( $matchesScriptTags ) && ! empty( $matchesScriptTags ) ) {
|
297 |
// Only the hashes are set
|
298 |
// For instance, 'd1eae32c4e99d24573042dfbb71f5258a86e2a8e' is the hash for the following script:
|
@@ -323,19 +280,83 @@ class HardcodedAssets
|
|
323 |
|
324 |
foreach ( $matchesScriptTags as $matchedTag ) {
|
325 |
if ( isset( $matchedTag[0] ) && $matchedTag[0] && strpos( $matchedTag[0], '<script' ) === 0 ) {
|
|
|
|
|
326 |
/*
|
327 |
* Strip certain SCRIPT tags irrelevant for the list (e.g. related to WordPress Customiser, Admin Bar, etc.)
|
328 |
*/
|
329 |
-
if ( in_array( sha1( $
|
330 |
continue;
|
331 |
}
|
332 |
|
333 |
foreach ( $stripsSpecificScriptsContaining as $jsContentTargeted ) {
|
334 |
-
if ( strpos( $
|
335 |
continue;
|
336 |
}
|
337 |
}
|
338 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
$hardCodedAssets['script_src_and_inline_tags'][] = trim( $matchedTag[0] );
|
340 |
}
|
341 |
}
|
228 |
preg_match_all( '@<script[^>]*?>.*?</script>@si', $htmlSourceAlt, $matchesScriptTags, PREG_SET_ORDER );
|
229 |
|
230 |
if ( isset( wp_scripts()->done ) && ! empty( wp_scripts()->done ) ) {
|
231 |
+
$allInlineAssocWithJsHandle = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
|
233 |
+
foreach ( wp_scripts()->done as $assetHandle ) {
|
234 |
+
// Now, go through the list of inline SCRIPTs associated with an enqueued SCRIPT (with "src" attribute)
|
235 |
+
// And make sure they do not show to the hardcoded list, since they are related to the handle and they are stripped when the handle is dequeued
|
236 |
+
$anyInlineAssocWithJsHandle = OptimizeJs::getInlineAssociatedWithScriptHandle( $assetHandle, wp_scripts()->registered, 'handle' );
|
237 |
+
if ( ! empty( $anyInlineAssocWithJsHandle ) ) {
|
238 |
+
foreach ( $anyInlineAssocWithJsHandle as $jsInlineTagContent ) {
|
239 |
+
if ( trim( $jsInlineTagContent ) === '' ) {
|
240 |
continue;
|
241 |
}
|
242 |
|
243 |
+
$allInlineAssocWithJsHandle[] = trim($jsInlineTagContent);
|
244 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
}
|
246 |
}
|
|
|
247 |
|
248 |
+
$allInlineAssocWithJsHandle = array_unique($allInlineAssocWithJsHandle);
|
249 |
+
|
250 |
+
}
|
251 |
|
252 |
+
// Go through the hardcoded SCRIPT tags
|
253 |
if ( isset( $matchesScriptTags ) && ! empty( $matchesScriptTags ) ) {
|
254 |
// Only the hashes are set
|
255 |
// For instance, 'd1eae32c4e99d24573042dfbb71f5258a86e2a8e' is the hash for the following script:
|
280 |
|
281 |
foreach ( $matchesScriptTags as $matchedTag ) {
|
282 |
if ( isset( $matchedTag[0] ) && $matchedTag[0] && strpos( $matchedTag[0], '<script' ) === 0 ) {
|
283 |
+
$matchedTagOutput = trim( $matchedTag[0] );
|
284 |
+
|
285 |
/*
|
286 |
* Strip certain SCRIPT tags irrelevant for the list (e.g. related to WordPress Customiser, Admin Bar, etc.)
|
287 |
*/
|
288 |
+
if ( in_array( sha1( $matchedTagOutput ), $stripsSpecificScriptsHashes ) ) {
|
289 |
continue;
|
290 |
}
|
291 |
|
292 |
foreach ( $stripsSpecificScriptsContaining as $jsContentTargeted ) {
|
293 |
+
if ( strpos( $matchedTagOutput, $jsContentTargeted ) !== false ) {
|
294 |
continue;
|
295 |
}
|
296 |
}
|
297 |
|
298 |
+
if ( strpos( $matchedTagOutput, 'window._wpemojiSettings' ) !== false
|
299 |
+
&& strpos( $matchedTagOutput, 'twemoji' ) !== false ) {
|
300 |
+
continue;
|
301 |
+
}
|
302 |
+
|
303 |
+
// Check the type and only allow SCRIPT tags with type='text/javascript' or no type at all (it default to 'text/javascript')
|
304 |
+
$matchedTagInner = strip_tags( $matchedTagOutput );
|
305 |
+
$matchedTagOnlyTags = str_replace( $matchedTagInner, '', $matchedTagOutput );
|
306 |
+
preg_match_all( '#type=(["\'])' . '(.*)' . '(["\'])#Usmi', $matchedTagOnlyTags,
|
307 |
+
$outputMatches );
|
308 |
+
$scriptType = isset( $outputMatches[2][0] ) ? trim( $outputMatches[2][0],
|
309 |
+
'"\'' ) : 'text/javascript';
|
310 |
+
|
311 |
+
if ( strpos( $scriptType, 'text/javascript' ) === false ) {
|
312 |
+
continue;
|
313 |
+
}
|
314 |
+
|
315 |
+
if ( strpos( $matchedTagOutput, 'data-wpacu-script-handle=' ) !== false ) {
|
316 |
+
// skip the SCRIPT with src that was enqueued properly and keep the hardcoded ones
|
317 |
+
continue;
|
318 |
+
}
|
319 |
+
|
320 |
+
if ( (strpos( $matchedTagOutput, 'data-wpacu-own-inline-script=' ) !== false) ||
|
321 |
+
(strpos( $matchedTagOutput, 'data-wpacu-inline-js-file=' ) !== false) ) {
|
322 |
+
// skip plugin's own SCRIPT tags as they are not relevant in this context
|
323 |
+
continue;
|
324 |
+
}
|
325 |
+
|
326 |
+
if ( strpos( $matchedTagOutput, 'wpacu-preload-async-css-fallback' ) !== false ) {
|
327 |
+
// skip plugin's own SCRIPT tags as they are not relevant in this context
|
328 |
+
continue;
|
329 |
+
}
|
330 |
+
|
331 |
+
$hasSrc = false;
|
332 |
+
|
333 |
+
if (strpos($matchedTagOnlyTags, ' src=') !== false) {
|
334 |
+
$hasSrc = true;
|
335 |
+
}
|
336 |
+
|
337 |
+
if ( ! $hasSrc && ! empty( $allInlineAssocWithJsHandle ) ) {
|
338 |
+
preg_match_all("'<script[^>]*?>(.*?)</script>'si", $matchedTagOutput, $matchesFromTagOutput);
|
339 |
+
$matchedTagOutputInner = isset($matchesFromTagOutput[1][0]) && trim($matchesFromTagOutput[1][0])
|
340 |
+
? trim($matchesFromTagOutput[1][0]) : false;
|
341 |
+
|
342 |
+
$matchedTagOutputInnerCleaner = $matchedTagOutputInner;
|
343 |
+
|
344 |
+
$stripStrStart = '/* <![CDATA[ */';
|
345 |
+
$stripStrEnd = '/* ]]> */';
|
346 |
+
|
347 |
+
if (strpos($matchedTagOutputInnerCleaner, $stripStrStart) === 0
|
348 |
+
&& Misc::endsWith($matchedTagOutputInnerCleaner, '/* ]]> */')) {
|
349 |
+
$matchedTagOutputInnerCleaner = substr($matchedTagOutputInnerCleaner, strlen($stripStrStart));
|
350 |
+
$matchedTagOutputInnerCleaner = substr($matchedTagOutputInnerCleaner, 0, -strlen($stripStrEnd));
|
351 |
+
$matchedTagOutputInnerCleaner = trim($matchedTagOutputInnerCleaner);
|
352 |
+
}
|
353 |
+
|
354 |
+
if (in_array($matchedTagOutputInnerCleaner, $allInlineAssocWithJsHandle)) {
|
355 |
+
continue;
|
356 |
+
}
|
357 |
+
|
358 |
+
}
|
359 |
+
|
360 |
$hardCodedAssets['script_src_and_inline_tags'][] = trim( $matchedTag[0] );
|
361 |
}
|
362 |
}
|
classes/ImportExport.php
CHANGED
@@ -22,8 +22,13 @@ class ImportExport
|
|
22 |
// e.g. jQuery Migrate, Comment Reply
|
23 |
$globalUnloadList = Main::instance()->getGlobalUnload();
|
24 |
|
25 |
-
|
26 |
-
$settingsArray['
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
return json_encode($settingsArray);
|
29 |
}
|
@@ -177,10 +182,26 @@ SQL;
|
|
177 |
$wpacuSettings = new Settings();
|
178 |
|
179 |
// "Site-wide Common Unloads" - apply settings
|
180 |
-
$disableJQueryMigrate = isset($valuesArray['settings']['disable_jquery_migrate']) ? $valuesArray['settings']['disable_jquery_migrate'] : false;
|
181 |
-
$disableCommentReply = isset($valuesArray['settings']['disable_comment_reply']) ? $valuesArray['settings']['disable_comment_reply'] : false;
|
182 |
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($valuesArray['settings']));
|
186 |
$importedList[] = 'settings';
|
22 |
// e.g. jQuery Migrate, Comment Reply
|
23 |
$globalUnloadList = Main::instance()->getGlobalUnload();
|
24 |
|
25 |
+
// CSS
|
26 |
+
$settingsArray['disable_dashicons_for_guests'] = in_array( 'dashicons', $globalUnloadList['styles'] );
|
27 |
+
$settingsArray['disable_wp_block_library'] = in_array( 'wp-block-library', $globalUnloadList['styles'] );
|
28 |
+
|
29 |
+
// JS
|
30 |
+
$settingsArray['disable_jquery_migrate'] = in_array( 'jquery-migrate', $globalUnloadList['scripts'] );
|
31 |
+
$settingsArray['disable_comment_reply'] = in_array( 'comment-reply', $globalUnloadList['scripts'] );
|
32 |
|
33 |
return json_encode($settingsArray);
|
34 |
}
|
182 |
$wpacuSettings = new Settings();
|
183 |
|
184 |
// "Site-wide Common Unloads" - apply settings
|
|
|
|
|
185 |
|
186 |
+
// JS
|
187 |
+
$disableJQueryMigrate = isset( $valuesArray['settings']['disable_jquery_migrate'] ) ? $valuesArray['settings']['disable_jquery_migrate'] : false;
|
188 |
+
$disableCommentReply = isset( $valuesArray['settings']['disable_comment_reply'] ) ? $valuesArray['settings']['disable_comment_reply'] : false;
|
189 |
+
|
190 |
+
// CSS
|
191 |
+
$disableGutenbergCssBlockLibrary = isset( $valuesArray['settings']['disable_wp_block_library'] ) ? $valuesArray['settings']['disable_wp_block_library'] : false;
|
192 |
+
$disableDashiconsForGuests = isset( $valuesArray['settings']['disable_dashicons_for_guests'] ) ? $valuesArray['settings']['disable_dashicons_for_guests'] : false;
|
193 |
+
|
194 |
+
$wpacuSettings->updateSiteWideRuleForCommonAssets(
|
195 |
+
array(
|
196 |
+
// JS
|
197 |
+
'jquery_migrate' => $disableJQueryMigrate,
|
198 |
+
'comment_reply' => $disableCommentReply,
|
199 |
+
|
200 |
+
// CSS
|
201 |
+
'wp_block_library' => $disableGutenbergCssBlockLibrary,
|
202 |
+
'dashicons' => $disableDashiconsForGuests,
|
203 |
+
)
|
204 |
+
);
|
205 |
|
206 |
Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($valuesArray['settings']));
|
207 |
$importedList[] = 'settings';
|
classes/Main.php
CHANGED
@@ -279,18 +279,15 @@ class Main
|
|
279 |
add_action('wp_print_styles', array($this, 'filterStyles'), 9); // priority should be below 10
|
280 |
}
|
281 |
|
282 |
-
// Unload Styles - HEAD
|
283 |
-
add_action( 'wp_print_styles', array( $this, 'filterStyles' ), 100000 );
|
284 |
$this->filterStylesSpecialCases(); // e.g. CSS enqueued in a different way via Oxygen Builder
|
285 |
|
286 |
-
// Unload
|
287 |
-
add_action( 'wp_print_scripts', array( $this, 'filterScripts' ), 100000 );
|
288 |
|
289 |
-
// Unload
|
290 |
// Needs to be triggered very soon as some old plugins/themes use wp_footer() to enqueue scripts
|
291 |
// Sometimes styles are loaded in the BODY section of the page
|
292 |
-
add_action( 'wp_print_footer_scripts', array( $this, '
|
293 |
-
add_action( 'wp_print_footer_scripts', array( $this, 'filterStyles' ), 1 );
|
294 |
|
295 |
// Preloads
|
296 |
add_action('wp_head', static function() {
|
@@ -298,10 +295,26 @@ class Main
|
|
298 |
return;
|
299 |
}
|
300 |
|
301 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
302 |
}, 1);
|
303 |
|
304 |
add_filter('style_loader_tag', static function($styleTag, $tagHandle) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
// Alter for debugging purposes; triggers before anything else
|
306 |
// e.g. you're working on a website and there is no Dashboard access and you want to determine the handle name
|
307 |
// if the handle name is not showing up, then the LINK stylesheet has been hardcoded (not enqueued the WordPress way)
|
@@ -539,6 +552,15 @@ SQL;
|
|
539 |
}
|
540 |
}
|
541 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
/* [START] Styles Dequeue */
|
543 |
/**
|
544 |
* See if there is any list with styles to be removed in JSON format
|
@@ -552,129 +574,140 @@ SQL;
|
|
552 |
return;
|
553 |
}
|
554 |
|
555 |
-
|
556 |
-
$nonAssetConfigPage = (! $this->isUpdateable && ! Misc::getShowOnFront());
|
557 |
-
// [/wpacu_lite]
|
558 |
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
|
563 |
-
|
564 |
-
if ($nonAssetConfigPage && ! empty($globalUnload['styles'])) {
|
565 |
-
$list = $globalUnload['styles'];
|
566 |
-
} else { // [/wpacu_lite]
|
567 |
-
// Post, Page, Front-page
|
568 |
-
// and more (if the Premium Extension is activated)
|
569 |
-
$toRemove = $this->getAssetsUnloaded();
|
570 |
|
571 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
572 |
|
573 |
-
|
|
|
|
|
|
|
574 |
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
|
579 |
-
//
|
580 |
-
if (! empty($globalUnload['styles'])) {
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
|
|
585 |
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
: array();
|
593 |
}
|
594 |
|
595 |
-
|
596 |
-
|
|
|
597 |
$list[] = $handleStyle;
|
598 |
}
|
599 |
}
|
600 |
-
}
|
601 |
-
// [wpacu_lite]
|
602 |
-
}
|
603 |
-
// [/wpacu_lite]
|
604 |
-
|
605 |
-
// Site-Wide Unload for "Dashicons" if user is not logged-in
|
606 |
-
if ($this->settings['disable_dashicons_for_guests'] && ! is_user_logged_in()) {
|
607 |
-
$list[] = 'dashicons';
|
608 |
-
}
|
609 |
|
610 |
-
|
611 |
-
|
612 |
-
|
|
|
|
|
|
|
|
|
|
|
613 |
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
}
|
|
|
620 |
}
|
621 |
-
|
622 |
|
623 |
-
|
|
|
|
|
|
|
624 |
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
//
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
|
|
|
|
|
|
|
|
|
|
636 |
}
|
637 |
}
|
638 |
-
}
|
639 |
|
640 |
-
|
641 |
-
|
|
|
642 |
}
|
643 |
-
}
|
644 |
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
|
|
654 |
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
|
|
|
|
|
|
667 |
}
|
668 |
}
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
* */
|
673 |
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
|
|
678 |
}
|
679 |
|
680 |
$ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
|
@@ -703,10 +736,19 @@ SQL;
|
|
703 |
continue;
|
704 |
}
|
705 |
|
|
|
|
|
|
|
|
|
|
|
706 |
wp_deregister_style($handle);
|
707 |
wp_dequeue_style($handle);
|
708 |
}
|
709 |
|
|
|
|
|
|
|
|
|
710 |
/* [wpacu_timing] */ Misc::scriptExecTimer( 'filter_dequeue_styles', 'end' ); /* [/wpacu_timing] */
|
711 |
}
|
712 |
|
@@ -817,115 +859,141 @@ SQL;
|
|
817 |
return;
|
818 |
}
|
819 |
|
820 |
-
|
821 |
-
$nonAssetConfigPage = (! $this->isUpdateable && ! Misc::getShowOnFront());
|
822 |
-
// [/wpacu_lite]
|
823 |
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
|
828 |
-
|
829 |
-
if ($nonAssetConfigPage && ! empty($globalUnload['scripts'])) {
|
830 |
-
$list = $globalUnload['scripts'];
|
831 |
-
} else { // [/wpacu_lite]
|
832 |
-
// Post, Page or Front-page?
|
833 |
-
$toRemove = $this->getAssetsUnloaded();
|
834 |
|
835 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
836 |
|
837 |
-
|
|
|
|
|
|
|
838 |
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
|
850 |
-
|
851 |
-
// Any bulk unloaded styles (e.g. for all pages belonging to a post type)? Append them
|
852 |
-
if (empty($this->postTypesUnloaded)) {
|
853 |
-
$post = $this->getCurrentPost();
|
854 |
|
855 |
-
|
856 |
-
$this->postTypesUnloaded = (isset($post->post_type) && $post->post_type) ? $this->getBulkUnload('post_type', $post->post_type) : array();
|
857 |
-
}
|
858 |
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
}
|
863 |
-
}
|
864 |
-
}
|
865 |
-
// [wpacu_lite]
|
866 |
-
}
|
867 |
-
// [/wpacu_lite]
|
868 |
|
869 |
-
|
|
|
|
|
|
|
|
|
|
|
870 |
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
unset($list[$handleKey]);
|
876 |
-
}
|
877 |
-
}
|
878 |
-
}
|
879 |
|
880 |
-
|
|
|
|
|
|
|
881 |
|
882 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
883 |
|
884 |
-
|
885 |
-
foreach ($allScripts->registered as $handle => $value) {
|
886 |
-
// This could be triggered several times, check if the script already exists
|
887 |
-
if (! isset($this->wpAllScripts['registered'][$handle])) {
|
888 |
-
$this->wpAllScripts['registered'][$handle] = $value;
|
889 |
-
if (in_array($handle, $allScripts->queue)) {
|
890 |
-
$this->wpAllScripts['queue'][] = $handle;
|
891 |
-
}
|
892 |
-
}
|
893 |
-
}
|
894 |
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
899 |
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
|
|
912 |
}
|
913 |
}
|
914 |
-
}
|
915 |
-
/*
|
916 |
-
* [END] Load Exception Check
|
917 |
-
* */
|
918 |
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
924 |
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
929 |
}
|
930 |
|
931 |
$ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
|
@@ -973,6 +1041,10 @@ SQL;
|
|
973 |
wp_dequeue_script($handle);
|
974 |
}
|
975 |
|
|
|
|
|
|
|
|
|
976 |
/* [wpacu_timing] */ Misc::scriptExecTimer( 'filter_dequeue_scripts', 'end' ); /* [/wpacu_timing] */
|
977 |
}
|
978 |
/* [END] Scripts Dequeue */
|
@@ -1590,12 +1662,6 @@ SQL;
|
|
1590 |
}
|
1591 |
|
1592 |
if (! empty($stylesList)) {
|
1593 |
-
/* These styles below are used by this plugin (except admin-bar) and they should not show in the list
|
1594 |
-
as they are loaded only when you (or other admin) manage the assets, never for your website visitors */
|
1595 |
-
if (is_admin_bar_showing() && is_admin()) {
|
1596 |
-
$this->skipAssets['styles'][] = 'dashicons';
|
1597 |
-
}
|
1598 |
-
|
1599 |
foreach ($manageStyles as $handle) {
|
1600 |
if (! isset($stylesList[$handle]) || in_array($handle, $this->skipAssets['styles'])) {
|
1601 |
continue;
|
@@ -2577,7 +2643,7 @@ SQL;
|
|
2577 |
public function wpacuHtmlNoticeForAdmin()
|
2578 |
{
|
2579 |
add_action('wp_footer', static function() {
|
2580 |
-
if (! apply_filters('wpacu_show_admin_console_notice', true) || Plugin::preventAnyChanges()) {
|
2581 |
return;
|
2582 |
}
|
2583 |
|
279 |
add_action('wp_print_styles', array($this, 'filterStyles'), 9); // priority should be below 10
|
280 |
}
|
281 |
|
|
|
|
|
282 |
$this->filterStylesSpecialCases(); // e.g. CSS enqueued in a different way via Oxygen Builder
|
283 |
|
284 |
+
add_action( 'wp_print_styles', array( $this, 'filterStyles' ), 100000 ); // Unload Styles - HEAD
|
285 |
+
add_action( 'wp_print_scripts', array( $this, 'filterScripts' ), 100000 ); // Unload Scripts - HEAD
|
286 |
|
287 |
+
// Unload Styles & Scripts - FOOTER
|
288 |
// Needs to be triggered very soon as some old plugins/themes use wp_footer() to enqueue scripts
|
289 |
// Sometimes styles are loaded in the BODY section of the page
|
290 |
+
add_action( 'wp_print_footer_scripts', array( $this, 'onPrintFooterScriptsStyles' ), 1 );
|
|
|
291 |
|
292 |
// Preloads
|
293 |
add_action('wp_head', static function() {
|
295 |
return;
|
296 |
}
|
297 |
|
298 |
+
// Only place the market IF there's at least one preload
|
299 |
+
$preloadsClass = new Preloads();
|
300 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
301 |
+
if ( isset( $preloadsClass->preloads[$assetType] ) && ! empty( $preloadsClass->preloads[$assetType] ) ) {
|
302 |
+
echo ($assetType === 'styles') ? Preloads::DEL_STYLES_PRELOADS : Preloads::DEL_SCRIPTS_PRELOADS;
|
303 |
+
}
|
304 |
+
}
|
305 |
}, 1);
|
306 |
|
307 |
add_filter('style_loader_tag', static function($styleTag, $tagHandle) {
|
308 |
+
// Preload the plugin's CSS for assets management layout (for faster content paint if the user is logged-in and manages the assets in the front-end)
|
309 |
+
// For a better admin experience
|
310 |
+
if ($tagHandle === WPACU_PLUGIN_ID . '-style') {
|
311 |
+
$styleTag = str_ireplace(
|
312 |
+
array('<link ', 'rel=\'stylesheet\'', 'rel="stylesheet"', 'id=\'', 'id="'),
|
313 |
+
array('<link rel=\'preload\' as=\'style\' data-wpacu-preload-it-async=\'1\' ', 'onload="this.rel=\'stylesheet\'"', 'onload="this.rel=\'stylesheet\'"', 'id=\'wpacu-preload-', 'id="wpacu-preload-'),
|
314 |
+
$styleTag
|
315 |
+
);
|
316 |
+
}
|
317 |
+
|
318 |
// Alter for debugging purposes; triggers before anything else
|
319 |
// e.g. you're working on a website and there is no Dashboard access and you want to determine the handle name
|
320 |
// if the handle name is not showing up, then the LINK stylesheet has been hardcoded (not enqueued the WordPress way)
|
552 |
}
|
553 |
}
|
554 |
|
555 |
+
/**
|
556 |
+
* In case there were assets enqueued within "wp_footer" action hook, instead of the standard "wp_enqueue_scripts"
|
557 |
+
*/
|
558 |
+
public function onPrintFooterScriptsStyles()
|
559 |
+
{
|
560 |
+
$this->filterStyles();
|
561 |
+
$this->filterScripts();
|
562 |
+
}
|
563 |
+
|
564 |
/* [START] Styles Dequeue */
|
565 |
/**
|
566 |
* See if there is any list with styles to be removed in JSON format
|
574 |
return;
|
575 |
}
|
576 |
|
577 |
+
global $wp_styles;
|
|
|
|
|
578 |
|
579 |
+
if (current_action() === 'wp_print_styles') {
|
580 |
+
wp_cache_set('wpacu_styles_object_after_wp_print_styles', $wp_styles);
|
581 |
+
}
|
582 |
|
583 |
+
$list = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
584 |
|
585 |
+
if (current_action() === 'wp_print_footer_scripts') {
|
586 |
+
$cachedWpStyles = wp_cache_get('wpacu_styles_object_after_wp_print_styles');
|
587 |
+
if (isset($cachedWpStyles->registered) && count($cachedWpStyles->registered) === count($wp_styles->registered)) {
|
588 |
+
// The list was already generated in "wp_print_styles" and the number of registered assets are the same
|
589 |
+
// Save resources and do not re-generate it
|
590 |
+
$list = wp_cache_get('wpacu_styles_handles_marked_for_unload');
|
591 |
+
}
|
592 |
+
}
|
593 |
|
594 |
+
if ( empty($list) ) {
|
595 |
+
// [wpacu_lite]
|
596 |
+
$nonAssetConfigPage = ( ! $this->isUpdateable && ! Misc::getShowOnFront() );
|
597 |
+
// [/wpacu_lite]
|
598 |
|
599 |
+
// It looks like the page loaded is neither a post, page or the front-page
|
600 |
+
// We'll see if there are assets unloaded globally and unload them
|
601 |
+
$globalUnload = $this->globalUnloaded;
|
602 |
|
603 |
+
// [wpacu_lite]
|
604 |
+
if ( $nonAssetConfigPage && ! empty( $globalUnload['styles'] ) ) {
|
605 |
+
$list = $globalUnload['styles'];
|
606 |
+
} else { // [/wpacu_lite]
|
607 |
+
// Post, Page, Front-page
|
608 |
+
// and more (if the Premium Extension is activated)
|
609 |
+
$toRemove = $this->getAssetsUnloaded();
|
610 |
|
611 |
+
$jsonList = @json_decode( $toRemove );
|
612 |
+
|
613 |
+
$list = array();
|
614 |
+
|
615 |
+
if ( isset( $jsonList->styles ) ) {
|
616 |
+
$list = (array) $jsonList->styles;
|
|
|
617 |
}
|
618 |
|
619 |
+
// Any global unloaded styles? Append them
|
620 |
+
if ( ! empty( $globalUnload['styles'] ) ) {
|
621 |
+
foreach ( $globalUnload['styles'] as $handleStyle ) {
|
622 |
$list[] = $handleStyle;
|
623 |
}
|
624 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
625 |
|
626 |
+
if ( $this->isSingularPage() ) {
|
627 |
+
// Any bulk unloaded styles (e.g. for all pages belonging to a post type)? Append them
|
628 |
+
if ( empty( $this->postTypesUnloaded ) ) {
|
629 |
+
$post = $this->getCurrentPost();
|
630 |
+
$this->postTypesUnloaded = ( isset( $post->post_type ) && $post->post_type )
|
631 |
+
? $this->getBulkUnload( 'post_type', $post->post_type )
|
632 |
+
: array();
|
633 |
+
}
|
634 |
|
635 |
+
if ( isset( $this->postTypesUnloaded['styles'] ) && ! empty( $this->postTypesUnloaded['styles'] ) ) {
|
636 |
+
foreach ( $this->postTypesUnloaded['styles'] as $handleStyle ) {
|
637 |
+
$list[] = $handleStyle;
|
638 |
+
}
|
639 |
+
}
|
640 |
}
|
641 |
+
// [wpacu_lite]
|
642 |
}
|
643 |
+
// [/wpacu_lite]
|
644 |
|
645 |
+
// Site-Wide Unload for "Dashicons" if user is not logged-in
|
646 |
+
if ( $this->settings['disable_dashicons_for_guests'] && ! is_user_logged_in() ) {
|
647 |
+
$list[] = 'dashicons';
|
648 |
+
}
|
649 |
|
650 |
+
// Any bulk unloaded styles for 'category', 'post_tag' and more?
|
651 |
+
// If the premium extension is enabled, any of the unloaded CSS will be added to the list
|
652 |
+
$list = apply_filters( 'wpacu_filter_styles', array_unique( $list ) );
|
653 |
+
|
654 |
+
// Add handles such as the Oxygen Builder CSS ones that are missing and added differently to the queue
|
655 |
+
$allStyles = $this->wpStylesFilter( $wp_styles, 'registered', $list );
|
656 |
+
|
657 |
+
if ( $allStyles !== null && ! empty( $allStyles->registered ) ) {
|
658 |
+
// Going through all the registered styles
|
659 |
+
foreach ( $allStyles->registered as $handle => $value ) {
|
660 |
+
// This could be triggered several times, check if the style already exists
|
661 |
+
if ( ! isset( $this->wpAllStyles['registered'][ $handle ] ) ) {
|
662 |
+
$this->wpAllStyles['registered'][ $handle ] = $value;
|
663 |
+
if ( in_array( $handle, $allStyles->queue ) ) {
|
664 |
+
$this->wpAllStyles['queue'][] = $handle;
|
665 |
+
}
|
666 |
}
|
667 |
}
|
|
|
668 |
|
669 |
+
if ( isset( $this->wpAllStyles['queue'] ) && ! empty( $this->wpAllStyles['queue'] ) ) {
|
670 |
+
$this->wpAllStyles['queue'] = array_unique( $this->wpAllStyles['queue'] );
|
671 |
+
}
|
672 |
}
|
|
|
673 |
|
674 |
+
if ( isset( $this->wpAllStyles['registered'] ) && ! empty( $this->wpAllStyles['registered'] ) ) {
|
675 |
+
wp_cache_set( 'wpacu_all_styles_handles', array_keys( $this->wpAllStyles['registered'] ) );
|
676 |
+
}
|
677 |
|
678 |
+
// e.g. for test/debug mode or AJAX calls (where all assets have to load)
|
679 |
+
if ( array_key_exists( 'wpacu_no_css_unload', $_GET ) || $this->preventAssetsSettings() ) {
|
680 |
+
/* [wpacu_timing] */
|
681 |
+
Misc::scriptExecTimer( 'filter_dequeue_styles', 'end' ); /* [/wpacu_timing] */
|
682 |
+
return;
|
683 |
+
}
|
684 |
|
685 |
+
/*
|
686 |
+
* [START] Load Exception Check
|
687 |
+
* */
|
688 |
+
// Let's see if there are load exceptions for this page or site-wide (e.g. for logged-in users)
|
689 |
+
$anyStylesLoadExceptions = ( ! empty( $this->loadExceptions['styles'] ) || ! empty( $this->loadExceptionsLoggedInGlobal['styles'] ) );
|
690 |
+
|
691 |
+
if ( ! empty( $list ) && $anyStylesLoadExceptions ) {
|
692 |
+
foreach ( $list as $handleKey => $handle ) {
|
693 |
+
$loadStyleAsException = in_array( $handle,
|
694 |
+
$this->loadExceptions['styles'] ) // per page, per group pages
|
695 |
+
|| ( in_array( $handle,
|
696 |
+
$this->loadExceptionsLoggedInGlobal['styles'] ) && is_user_logged_in() ); // site-wide if the user is logged-in
|
697 |
+
if ( $loadStyleAsException ) {
|
698 |
+
unset( $list[ $handleKey ] );
|
699 |
+
}
|
700 |
}
|
701 |
}
|
702 |
+
/*
|
703 |
+
* [END] Load Exception Check
|
704 |
+
* */
|
|
|
705 |
|
706 |
+
// Is $list still empty? Nothing to unload? Stop here
|
707 |
+
if (empty($list)) {
|
708 |
+
/* [wpacu_timing] */ Misc::scriptExecTimer( 'filter_dequeue_styles', 'end' ); /* [/wpacu_timing] */
|
709 |
+
return;
|
710 |
+
}
|
711 |
}
|
712 |
|
713 |
$ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
|
736 |
continue;
|
737 |
}
|
738 |
|
739 |
+
// Do not apply rule if the user if the top WordPress admin bar is showing up
|
740 |
+
if ($handle === 'dashicons' && is_admin_bar_showing()) {
|
741 |
+
continue;
|
742 |
+
}
|
743 |
+
|
744 |
wp_deregister_style($handle);
|
745 |
wp_dequeue_style($handle);
|
746 |
}
|
747 |
|
748 |
+
if (current_action() === 'wp_print_styles') {
|
749 |
+
wp_cache_set( 'wpacu_styles_handles_marked_for_unload', $list );
|
750 |
+
}
|
751 |
+
|
752 |
/* [wpacu_timing] */ Misc::scriptExecTimer( 'filter_dequeue_styles', 'end' ); /* [/wpacu_timing] */
|
753 |
}
|
754 |
|
859 |
return;
|
860 |
}
|
861 |
|
862 |
+
global $wp_scripts;
|
|
|
|
|
863 |
|
864 |
+
if (current_action() === 'wp_print_scripts') {
|
865 |
+
wp_cache_set('wpacu_scripts_object_after_wp_print_scripts', $wp_scripts);
|
866 |
+
}
|
867 |
|
868 |
+
$list = array();
|
|
|
|
|
|
|
|
|
|
|
869 |
|
870 |
+
if (current_action() === 'wp_print_footer_scripts') {
|
871 |
+
$cachedWpScripts = wp_cache_get('wpacu_scripts_object_after_wp_print_scripts');
|
872 |
+
if (isset($cachedWpScripts->registered) && count($cachedWpScripts->registered) === count($wp_scripts->registered)) {
|
873 |
+
// The list was already generated in "wp_print_scripts" and the number of registered assets are the same
|
874 |
+
// Save resources and do not re-generate it
|
875 |
+
$list = wp_cache_get('wpacu_scripts_handles_marked_for_unload');
|
876 |
+
}
|
877 |
+
}
|
878 |
|
879 |
+
if ( empty($list) ) {
|
880 |
+
// [wpacu_lite]
|
881 |
+
$nonAssetConfigPage = ( ! $this->isUpdateable && ! Misc::getShowOnFront() );
|
882 |
+
// [/wpacu_lite]
|
883 |
|
884 |
+
// It looks like the page loaded is neither a post, page or the front-page
|
885 |
+
// We'll see if there are assets unloaded globally and unload them
|
886 |
+
$globalUnload = $this->globalUnloaded;
|
887 |
|
888 |
+
// [wpacu_lite]
|
889 |
+
if ( $nonAssetConfigPage && ! empty( $globalUnload['scripts'] ) ) {
|
890 |
+
$list = $globalUnload['scripts'];
|
891 |
+
} else { // [/wpacu_lite]
|
892 |
+
// Post, Page or Front-page?
|
893 |
+
$toRemove = $this->getAssetsUnloaded();
|
894 |
|
895 |
+
$jsonList = @json_decode( $toRemove );
|
|
|
|
|
|
|
896 |
|
897 |
+
$list = array();
|
|
|
|
|
898 |
|
899 |
+
if ( isset( $jsonList->scripts ) ) {
|
900 |
+
$list = (array) $jsonList->scripts;
|
901 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
902 |
|
903 |
+
// Any global unloaded styles? Append them
|
904 |
+
if ( ! empty( $globalUnload['scripts'] ) ) {
|
905 |
+
foreach ( $globalUnload['scripts'] as $handleScript ) {
|
906 |
+
$list[] = $handleScript;
|
907 |
+
}
|
908 |
+
}
|
909 |
|
910 |
+
if ( $this->isSingularPage() ) {
|
911 |
+
// Any bulk unloaded styles (e.g. for all pages belonging to a post type)? Append them
|
912 |
+
if ( empty( $this->postTypesUnloaded ) ) {
|
913 |
+
$post = $this->getCurrentPost();
|
|
|
|
|
|
|
|
|
914 |
|
915 |
+
// Make sure the post_type is set; it's not in specific pages (e.g. BuddyPress ones)
|
916 |
+
$this->postTypesUnloaded = ( isset( $post->post_type ) && $post->post_type ) ? $this->getBulkUnload( 'post_type',
|
917 |
+
$post->post_type ) : array();
|
918 |
+
}
|
919 |
|
920 |
+
if ( isset( $this->postTypesUnloaded['scripts'] ) && ! empty( $this->postTypesUnloaded['scripts'] ) ) {
|
921 |
+
foreach ( $this->postTypesUnloaded['scripts'] as $handleStyle ) {
|
922 |
+
$list[] = $handleStyle;
|
923 |
+
}
|
924 |
+
}
|
925 |
+
}
|
926 |
+
// [wpacu_lite]
|
927 |
+
}
|
928 |
+
// [/wpacu_lite]
|
929 |
|
930 |
+
$list = apply_filters( 'wpacu_filter_scripts', array_unique( $list ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
931 |
|
932 |
+
// Let's see if there are load exceptions for this page
|
933 |
+
if ( ! empty( $list ) && ! empty( $this->loadExceptions['scripts'] ) ) {
|
934 |
+
foreach ( $list as $handleKey => $handle ) {
|
935 |
+
if ( in_array( $handle, $this->loadExceptions['scripts'] ) ) {
|
936 |
+
unset( $list[ $handleKey ] );
|
937 |
+
}
|
938 |
+
}
|
939 |
+
}
|
940 |
+
|
941 |
+
global $wp_scripts;
|
942 |
+
|
943 |
+
$allScripts = $wp_scripts;
|
944 |
|
945 |
+
if ( $allScripts !== null && ! empty( $allScripts->registered ) ) {
|
946 |
+
foreach ( $allScripts->registered as $handle => $value ) {
|
947 |
+
// This could be triggered several times, check if the script already exists
|
948 |
+
if ( ! isset( $this->wpAllScripts['registered'][ $handle ] ) ) {
|
949 |
+
$this->wpAllScripts['registered'][ $handle ] = $value;
|
950 |
+
if ( in_array( $handle, $allScripts->queue ) ) {
|
951 |
+
$this->wpAllScripts['queue'][] = $handle;
|
952 |
+
}
|
953 |
+
}
|
954 |
+
}
|
955 |
+
|
956 |
+
if ( isset( $this->wpAllScripts['queue'] ) && ! empty( $this->wpAllScripts['queue'] ) ) {
|
957 |
+
$this->wpAllScripts['queue'] = array_unique( $this->wpAllScripts['queue'] );
|
958 |
}
|
959 |
}
|
|
|
|
|
|
|
|
|
960 |
|
961 |
+
/*
|
962 |
+
* [START] Load Exception Check
|
963 |
+
* */
|
964 |
+
// Let's see if there are load exceptions for this page or site-wide (e.g. for logged-in users)
|
965 |
+
$anyScriptsLoadExceptions = ( ! empty( $this->loadExceptions['scripts'] ) || ! empty( $this->loadExceptionsLoggedInGlobal['scripts'] ) );
|
966 |
+
|
967 |
+
if ( ! empty( $list ) && $anyScriptsLoadExceptions ) {
|
968 |
+
foreach ( $list as $handleKey => $handle ) {
|
969 |
+
$loadScriptAsException = in_array( $handle,
|
970 |
+
$this->loadExceptions['scripts'] ) // per page, per group pages
|
971 |
+
|| ( in_array( $handle,
|
972 |
+
$this->loadExceptionsLoggedInGlobal['scripts'] ) && is_user_logged_in() ); // site-wide if the user is logged-in
|
973 |
+
if ( $loadScriptAsException ) {
|
974 |
+
unset( $list[ $handleKey ] );
|
975 |
+
}
|
976 |
+
}
|
977 |
+
}
|
978 |
+
/*
|
979 |
+
* [END] Load Exception Check
|
980 |
+
* */
|
981 |
|
982 |
+
// Nothing to unload
|
983 |
+
if ( empty( $list ) ) {
|
984 |
+
/* [wpacu_timing] */
|
985 |
+
Misc::scriptExecTimer( 'filter_dequeue_scripts', 'end' ); /* [/wpacu_timing] */
|
986 |
+
|
987 |
+
return;
|
988 |
+
}
|
989 |
+
|
990 |
+
// e.g. for test/debug mode or AJAX calls (where all assets have to load)
|
991 |
+
if ( array_key_exists( 'wpacu_no_js_unload', $_GET ) || $this->preventAssetsSettings() ) {
|
992 |
+
/* [wpacu_timing] */
|
993 |
+
Misc::scriptExecTimer( 'filter_dequeue_scripts', 'end' ); /* [/wpacu_timing] */
|
994 |
+
|
995 |
+
return;
|
996 |
+
}
|
997 |
}
|
998 |
|
999 |
$ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
|
1041 |
wp_dequeue_script($handle);
|
1042 |
}
|
1043 |
|
1044 |
+
if (current_action() === 'wp_print_scripts') {
|
1045 |
+
wp_cache_set( 'wpacu_scripts_handles_marked_for_unload', $list );
|
1046 |
+
}
|
1047 |
+
|
1048 |
/* [wpacu_timing] */ Misc::scriptExecTimer( 'filter_dequeue_scripts', 'end' ); /* [/wpacu_timing] */
|
1049 |
}
|
1050 |
/* [END] Scripts Dequeue */
|
1662 |
}
|
1663 |
|
1664 |
if (! empty($stylesList)) {
|
|
|
|
|
|
|
|
|
|
|
|
|
1665 |
foreach ($manageStyles as $handle) {
|
1666 |
if (! isset($stylesList[$handle]) || in_array($handle, $this->skipAssets['styles'])) {
|
1667 |
continue;
|
2643 |
public function wpacuHtmlNoticeForAdmin()
|
2644 |
{
|
2645 |
add_action('wp_footer', static function() {
|
2646 |
+
if ((WPACU_GET_LOADED_ASSETS_ACTION === true) || (! apply_filters('wpacu_show_admin_console_notice', true)) || Plugin::preventAnyChanges()) {
|
2647 |
return;
|
2648 |
}
|
2649 |
|
classes/Maintenance.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WpAssetCleanUp;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class Maintenance
|
6 |
+
* @package WpAssetCleanUp
|
7 |
+
*/
|
8 |
+
class Maintenance
|
9 |
+
{
|
10 |
+
public function __construct()
|
11 |
+
{
|
12 |
+
if (is_admin() && isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_ID.'_') === 0) {
|
13 |
+
add_action('admin_init', static function() {
|
14 |
+
Maintenance::cleanUnusedAssetsFromInfoArea();
|
15 |
+
});
|
16 |
+
}
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
*
|
21 |
+
*/
|
22 |
+
public static function cleanUnusedAssetsFromInfoArea()
|
23 |
+
{
|
24 |
+
$allAssetsWithAtLeastOneRule = Overview::handlesWithAtLeastOneRule();
|
25 |
+
|
26 |
+
if (empty($allAssetsWithAtLeastOneRule)) {
|
27 |
+
return;
|
28 |
+
}
|
29 |
+
|
30 |
+
// Stored in the "assets_info" key from "wpassetcleanup_global_data" option name (from `{$wpdb->prefix}options` table)
|
31 |
+
$allAssetsFromInfoArea = Main::getHandlesInfo();
|
32 |
+
|
33 |
+
$handlesToClearFromInfo = array('styles' => array(), 'scripts' => array());
|
34 |
+
|
35 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
36 |
+
if ( isset( $allAssetsFromInfoArea[$assetType] ) && ! empty( $allAssetsFromInfoArea[$assetType] ) ) {
|
37 |
+
foreach ( array_keys( $allAssetsFromInfoArea[$assetType] ) as $assetHandle ) {
|
38 |
+
if ( ! isset($allAssetsWithAtLeastOneRule[$assetType][$assetHandle]) ) { // not found in $allAssetsWithAtLeastOneRule? Add it to the clear list
|
39 |
+
$handlesToClearFromInfo[$assetType][] = $assetHandle;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
if (! empty($handlesToClearFromInfo['styles']) || ! empty($handlesToClearFromInfo['scripts'])) {
|
46 |
+
self::removeHandlesInfoFromGlobalDataOption($handlesToClearFromInfo);
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @param $handlesToClearFromInfo
|
52 |
+
*/
|
53 |
+
public static function removeHandlesInfoFromGlobalDataOption($handlesToClearFromInfo)
|
54 |
+
{
|
55 |
+
$optionToUpdate = WPACU_PLUGIN_ID . '_global_data';
|
56 |
+
$globalKey = 'assets_info';
|
57 |
+
|
58 |
+
$existingListEmpty = array('styles' => array($globalKey => array()), 'scripts' => array($globalKey => array()));
|
59 |
+
$existingListJson = get_option($optionToUpdate);
|
60 |
+
|
61 |
+
$existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
|
62 |
+
$existingList = $existingListData['list'];
|
63 |
+
|
64 |
+
// $assetType could be 'styles' or 'scripts'
|
65 |
+
foreach ($handlesToClearFromInfo as $assetType => $handles) {
|
66 |
+
foreach ($handles as $handle) {
|
67 |
+
if ( isset( $existingList[ $assetType ][ $globalKey ][ $handle ] ) ) {
|
68 |
+
unset( $existingList[ $assetType ][ $globalKey ][ $handle ] );
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
Misc::addUpdateOption($optionToUpdate, json_encode(Misc::filterList($existingList)));
|
74 |
+
}
|
75 |
+
}
|
classes/Misc.php
CHANGED
@@ -686,6 +686,64 @@ SQL;
|
|
686 |
return $unloadedTotalAssets;
|
687 |
}
|
688 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
689 |
/**
|
690 |
* @param bool $onlyTransient
|
691 |
*
|
@@ -864,6 +922,11 @@ SQL;
|
|
864 |
*/
|
865 |
public static function triggerFrontendOptimization()
|
866 |
{
|
|
|
|
|
|
|
|
|
|
|
867 |
// "Elementor" Edit Mode
|
868 |
if (isset($_GET['elementor-preview']) && $_GET['elementor-preview']) {
|
869 |
return false;
|
@@ -910,6 +973,10 @@ SQL;
|
|
910 |
*/
|
911 |
public static function formatBytes($size, $precision = 2)
|
912 |
{
|
|
|
|
|
|
|
|
|
913 |
// In case a string is passed, make it to float
|
914 |
$size = (float)$size;
|
915 |
|
686 |
return $unloadedTotalAssets;
|
687 |
}
|
688 |
|
689 |
+
/**
|
690 |
+
* @param $src
|
691 |
+
*
|
692 |
+
* @return bool|mixed
|
693 |
+
*/
|
694 |
+
public static function maybeIsInactiveAsset($src)
|
695 |
+
{
|
696 |
+
// Quickest way
|
697 |
+
preg_match_all('#/wp-content/plugins/(.*?)/#', $src, $matches, PREG_PATTERN_ORDER);
|
698 |
+
|
699 |
+
if (isset($matches[1][0]) && $matches[1][0]) {
|
700 |
+
$pluginDirName = $matches[1][0];
|
701 |
+
|
702 |
+
$activePlugins = get_option( 'active_plugins' );
|
703 |
+
$activePluginsStr = implode(',', $activePlugins);
|
704 |
+
|
705 |
+
if (strpos($activePluginsStr, $pluginDirName.'/') === false) {
|
706 |
+
return $pluginDirName; // it belongs to an inactive plugin
|
707 |
+
}
|
708 |
+
}
|
709 |
+
|
710 |
+
$relPluginsUrl = str_replace(site_url(), '', plugins_url());
|
711 |
+
|
712 |
+
$srcAlt = $src;
|
713 |
+
|
714 |
+
if (strpos($srcAlt, '//') === 0) {
|
715 |
+
$srcAlt = str_replace(
|
716 |
+
str_replace(array('http://', 'https://'),'//', site_url()),
|
717 |
+
'',
|
718 |
+
$srcAlt
|
719 |
+
);
|
720 |
+
}
|
721 |
+
|
722 |
+
$relSrc = str_replace( site_url(), '', $srcAlt );
|
723 |
+
|
724 |
+
if (strpos($relSrc, '/wp-content/plugins') !== 0) {
|
725 |
+
list (,$relSrc) = '/wp-content/plugins' . explode('/wp-content/plugins', $relSrc);
|
726 |
+
}
|
727 |
+
|
728 |
+
if (strpos($relSrc, $relPluginsUrl) !== false) {
|
729 |
+
// Determine the plugin behind the $src
|
730 |
+
$relSrc = trim(str_replace($relPluginsUrl, '', $relSrc), '/');
|
731 |
+
|
732 |
+
if (strpos($relSrc, '/') !== false) {
|
733 |
+
list ( $pluginDirName, ) = explode( '/', $relSrc );
|
734 |
+
|
735 |
+
$activePlugins = get_option( 'active_plugins' );
|
736 |
+
$activePluginsStr = implode(',', $activePlugins);
|
737 |
+
|
738 |
+
if (strpos($activePluginsStr, $pluginDirName.'/') === false) {
|
739 |
+
return $pluginDirName; // it belongs to an inactive plugin
|
740 |
+
}
|
741 |
+
}
|
742 |
+
}
|
743 |
+
|
744 |
+
return false;
|
745 |
+
}
|
746 |
+
|
747 |
/**
|
748 |
* @param bool $onlyTransient
|
749 |
*
|
922 |
*/
|
923 |
public static function triggerFrontendOptimization()
|
924 |
{
|
925 |
+
// Not when the CSS/JS is fetched
|
926 |
+
if (WPACU_GET_LOADED_ASSETS_ACTION === true) {
|
927 |
+
return false;
|
928 |
+
}
|
929 |
+
|
930 |
// "Elementor" Edit Mode
|
931 |
if (isset($_GET['elementor-preview']) && $_GET['elementor-preview']) {
|
932 |
return false;
|
973 |
*/
|
974 |
public static function formatBytes($size, $precision = 2)
|
975 |
{
|
976 |
+
if ((int)$size === 0) {
|
977 |
+
return '<span style="vertical-align: middle;" class="dashicons dashicons-warning"></span> <strong>'.__('The file appears to be empty', 'wp-asset-clean-up').'</strong>';
|
978 |
+
}
|
979 |
+
|
980 |
// In case a string is passed, make it to float
|
981 |
$size = (float)$size;
|
982 |
|
classes/OptimiseAssets/CombineCss.php
CHANGED
@@ -196,9 +196,25 @@ class CombineCss
|
|
196 |
|
197 |
$finalTagUrl = OptimizeCommon::filterWpContentUrl($cdnUrlForCss) . OptimizeCss::getRelPathCssCacheDir() . $storageJsonContentLocation['uri_to_final_css_file'];
|
198 |
|
|
|
|
|
|
|
|
|
199 |
$finalCssTag = <<<HTML
|
200 |
<link rel='stylesheet' id='wpacu-combined-css-{$docLocationTag}-{$groupLocation}' href='{$finalTagUrl}' type='text/css' media='{$mediaValue}' />
|
201 |
HTML;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
$htmlSourceBeforeAnyLinkTagReplacement = $htmlSource;
|
203 |
|
204 |
// Detect first LINK tag from the <$locationTag> and replace it with the final combined LINK tag
|
@@ -248,6 +264,7 @@ HTML;
|
|
248 |
continue;
|
249 |
}
|
250 |
|
|
|
251 |
$domTag = new \DOMDocument();
|
252 |
|
253 |
libxml_use_internal_errors(true);
|
196 |
|
197 |
$finalTagUrl = OptimizeCommon::filterWpContentUrl($cdnUrlForCss) . OptimizeCss::getRelPathCssCacheDir() . $storageJsonContentLocation['uri_to_final_css_file'];
|
198 |
|
199 |
+
$finalCssTagAttrs = array();
|
200 |
+
$finalCssTagAttrs['rel'] = 'stylesheet';
|
201 |
+
$finalCssTagAttrs['media'] = $mediaValue;
|
202 |
+
|
203 |
$finalCssTag = <<<HTML
|
204 |
<link rel='stylesheet' id='wpacu-combined-css-{$docLocationTag}-{$groupLocation}' href='{$finalTagUrl}' type='text/css' media='{$mediaValue}' />
|
205 |
HTML;
|
206 |
+
// In case one (e.g. usually a developer) needs to alter it
|
207 |
+
$finalCssTag = apply_filters(
|
208 |
+
'wpacu_combined_css_tag',
|
209 |
+
$finalCssTag,
|
210 |
+
array(
|
211 |
+
'attrs' => $finalCssTagAttrs,
|
212 |
+
'doc_location' => $docLocationTag,
|
213 |
+
'group_no' => $groupLocation,
|
214 |
+
'href' => $finalTagUrl
|
215 |
+
)
|
216 |
+
);
|
217 |
+
|
218 |
$htmlSourceBeforeAnyLinkTagReplacement = $htmlSource;
|
219 |
|
220 |
// Detect first LINK tag from the <$locationTag> and replace it with the final combined LINK tag
|
264 |
continue;
|
265 |
}
|
266 |
|
267 |
+
// The DOMDocument is already checked if it's enabled in doCombine()
|
268 |
$domTag = new \DOMDocument();
|
269 |
|
270 |
libxml_use_internal_errors(true);
|
classes/OptimiseAssets/CombineJs.php
CHANGED
@@ -236,7 +236,13 @@ class CombineJs
|
|
236 |
}
|
237 |
|
238 |
$groupScriptSrcsFilter = array_map(static function($src) {
|
239 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
}, $groupScriptSrcs);
|
241 |
|
242 |
$finalCacheList[$docLocationScript][$groupNo] = array(
|
@@ -287,21 +293,32 @@ class CombineJs
|
|
287 |
|
288 |
$finalTagUrl = OptimizeCommon::filterWpContentUrl($cdnUrlForJs) . OptimizeJs::getRelPathJsCacheDir() . $uriToFinalJsFile;
|
289 |
|
290 |
-
$
|
291 |
-
|
292 |
if (isset($cachedValues['extra_attributes']) && ! empty($cachedValues['extra_attributes'])) {
|
293 |
-
|
294 |
-
$
|
295 |
-
} elseif (in_array('async', $cachedValues['extra_attributes'])) {
|
296 |
-
$deferAttr = 'async=\'async\'';
|
297 |
-
} elseif (in_array('defer', $cachedValues['extra_attributes'])) {
|
298 |
-
$deferAttr = 'defer=\'defer\'';
|
299 |
}
|
|
|
300 |
}
|
301 |
|
302 |
$finalJsTag = <<<HTML
|
303 |
-
<script {$
|
304 |
HTML;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
$scriptTagsStrippedNo = 0;
|
306 |
|
307 |
$scriptTags = OptimizeJs::getScriptTagsFromSrcs($filesSources, $htmlSource);
|
@@ -469,8 +486,6 @@ HTML;
|
|
469 |
|
470 |
$contentToAddToCombinedFile = '/*! '.str_replace(ABSPATH, '/', $localAssetsPath)." */\n";
|
471 |
|
472 |
-
$jsContent = OptimizeJs::maybeAlterJsContent($jsContent);
|
473 |
-
|
474 |
$contentToAddToCombinedFile .= OptimizeJs::maybeDoJsFixes($jsContent, $pathToAssetDir . '/') . "\n";
|
475 |
|
476 |
$finalJsContents .= $contentToAddToCombinedFile;
|
236 |
}
|
237 |
|
238 |
$groupScriptSrcsFilter = array_map(static function($src) {
|
239 |
+
$src = str_replace(site_url(), '', $src);
|
240 |
+
// Starts with // (protocol is missing) - the replacement above wasn't made
|
241 |
+
if (strpos($src, '//') === 0) {
|
242 |
+
$siteUrlNoProtocol = str_replace(array('http:', 'https:'), '', site_url());
|
243 |
+
return str_replace($siteUrlNoProtocol, '', $src);
|
244 |
+
}
|
245 |
+
return $src;
|
246 |
}, $groupScriptSrcs);
|
247 |
|
248 |
$finalCacheList[$docLocationScript][$groupNo] = array(
|
293 |
|
294 |
$finalTagUrl = OptimizeCommon::filterWpContentUrl($cdnUrlForJs) . OptimizeJs::getRelPathJsCacheDir() . $uriToFinalJsFile;
|
295 |
|
296 |
+
$finalJsTagAttrsOutput = '';
|
|
|
297 |
if (isset($cachedValues['extra_attributes']) && ! empty($cachedValues['extra_attributes'])) {
|
298 |
+
foreach ($cachedValues['extra_attributes'] as $finalJsTagAttr) {
|
299 |
+
$finalJsTagAttrsOutput .= ' '.$finalJsTagAttr.'=\''.$finalJsTagAttr.'\' ';
|
|
|
|
|
|
|
|
|
300 |
}
|
301 |
+
$finalJsTagAttrsOutput = trim($finalJsTagAttrsOutput);
|
302 |
}
|
303 |
|
304 |
$finalJsTag = <<<HTML
|
305 |
+
<script {$finalJsTagAttrsOutput} id='wpacu-combined-js-{$docLocationScript}-group-{$groupNo}' type='text/javascript' src='{$finalTagUrl}'></script>
|
306 |
HTML;
|
307 |
+
// In case one needs to alter it (e.g. developers that might want to add custom attributes such as data-cfasync="false")
|
308 |
+
$finalJsTag = apply_filters(
|
309 |
+
'wpacu_combined_js_tag',
|
310 |
+
$finalJsTag,
|
311 |
+
array(
|
312 |
+
'attrs' => $cachedValues['extra_attributes'],
|
313 |
+
'doc_location' => $docLocationScript,
|
314 |
+
'group_no' => $groupNo,
|
315 |
+
'src' => $finalTagUrl
|
316 |
+
)
|
317 |
+
);
|
318 |
+
|
319 |
+
// Reference: https://stackoverflow.com/questions/2368539/php-replacing-multiple-spaces-with-a-single-space
|
320 |
+
$finalJsTag = preg_replace('!\s+!', ' ', $finalJsTag);
|
321 |
+
|
322 |
$scriptTagsStrippedNo = 0;
|
323 |
|
324 |
$scriptTags = OptimizeJs::getScriptTagsFromSrcs($filesSources, $htmlSource);
|
486 |
|
487 |
$contentToAddToCombinedFile = '/*! '.str_replace(ABSPATH, '/', $localAssetsPath)." */\n";
|
488 |
|
|
|
|
|
489 |
$contentToAddToCombinedFile .= OptimizeJs::maybeDoJsFixes($jsContent, $pathToAssetDir . '/') . "\n";
|
490 |
|
491 |
$finalJsContents .= $contentToAddToCombinedFile;
|
classes/OptimiseAssets/FontsGoogle.php
CHANGED
@@ -40,7 +40,7 @@ class FontsGoogle
|
|
40 |
|
41 |
add_action('wp_head', array($this, 'preloadFontFiles'), 1);
|
42 |
add_action('wp_footer', static function() {
|
43 |
-
if ( Plugin::preventAnyChanges() || Main::isTestModeActive() ) {
|
44 |
return;
|
45 |
}
|
46 |
|
@@ -50,7 +50,7 @@ class FontsGoogle
|
|
50 |
add_action('init', function() {
|
51 |
// don't apply any changes if not in the front-end view (e.g. Dashboard view)
|
52 |
// or test mode is enabled and a guest user is accessing the page
|
53 |
-
if ( Plugin::preventAnyChanges() || Main::isTestModeActive() ) {
|
54 |
return;
|
55 |
}
|
56 |
|
40 |
|
41 |
add_action('wp_head', array($this, 'preloadFontFiles'), 1);
|
42 |
add_action('wp_footer', static function() {
|
43 |
+
if ( Plugin::preventAnyChanges() || Main::isTestModeActive() || Main::instance()->settings['google_fonts_remove'] ) {
|
44 |
return;
|
45 |
}
|
46 |
|
50 |
add_action('init', function() {
|
51 |
// don't apply any changes if not in the front-end view (e.g. Dashboard view)
|
52 |
// or test mode is enabled and a guest user is accessing the page
|
53 |
+
if ( Plugin::preventAnyChanges() || Main::isTestModeActive() || Main::instance()->settings['google_fonts_remove'] ) {
|
54 |
return;
|
55 |
}
|
56 |
|
classes/OptimiseAssets/MinifyCss.php
CHANGED
@@ -111,6 +111,11 @@ class MinifyCss
|
|
111 |
return $htmlSource; // no STYLE tags
|
112 |
}
|
113 |
|
|
|
|
|
|
|
|
|
|
|
114 |
$domTag = new \DOMDocument();
|
115 |
libxml_use_internal_errors(true);
|
116 |
$domTag->loadHTML($htmlSource);
|
@@ -126,7 +131,10 @@ class MinifyCss
|
|
126 |
'astra-edd-inline-css',
|
127 |
'et-builder-module-design-cached-inline-styles',
|
128 |
'fusion-stylesheet-inline-css',
|
129 |
-
'
|
|
|
|
|
|
|
130 |
);
|
131 |
|
132 |
foreach ($styleTagsObj as $styleTagObj) {
|
111 |
return $htmlSource; // no STYLE tags
|
112 |
}
|
113 |
|
114 |
+
// DOMDocument extension has to be enabled, otherwise return the HTML source as was (no changes)
|
115 |
+
if (! (function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('\DOMDocument'))) {
|
116 |
+
return $htmlSource;
|
117 |
+
}
|
118 |
+
|
119 |
$domTag = new \DOMDocument();
|
120 |
libxml_use_internal_errors(true);
|
121 |
$domTag->loadHTML($htmlSource);
|
131 |
'astra-edd-inline-css',
|
132 |
'et-builder-module-design-cached-inline-styles',
|
133 |
'fusion-stylesheet-inline-css',
|
134 |
+
'woocommerce-general-inline-css',
|
135 |
+
'woocommerce-inline-inline-css',
|
136 |
+
'data-wpacu-own-inline-style', // Only shown to the admin, irrelevant for any optimization (save resources)
|
137 |
+
'data-wpacu-inline-css-file' // already minified/optimized since the INLINE was generated from the cached file
|
138 |
);
|
139 |
|
140 |
foreach ($styleTagsObj as $styleTagObj) {
|
classes/OptimiseAssets/OptimizeCommon.php
CHANGED
@@ -8,6 +8,7 @@ use WpAssetCleanUp\Main;
|
|
8 |
use WpAssetCleanUp\Menu;
|
9 |
use WpAssetCleanUp\Misc;
|
10 |
use WpAssetCleanUp\Plugin;
|
|
|
11 |
use WpAssetCleanUp\Tools;
|
12 |
|
13 |
/**
|
@@ -58,6 +59,7 @@ class OptimizeCommon
|
|
58 |
}
|
59 |
|
60 |
add_action('admin_post_assetcleanup_clear_assets_cache', static function() {
|
|
|
61 |
self::clearAllCache(true);
|
62 |
});
|
63 |
|
@@ -848,6 +850,12 @@ class OptimizeCommon
|
|
848 |
return;
|
849 |
}
|
850 |
|
|
|
|
|
|
|
|
|
|
|
|
|
851 |
$isAjaxCall = isset($_POST['action']) && $_POST['action'] === WPACU_PLUGIN_ID . '_clear_cache' && is_admin();
|
852 |
$clearedOutput = $keptOutput = array();
|
853 |
|
@@ -894,6 +902,8 @@ class OptimizeCommon
|
|
894 |
);
|
895 |
|
896 |
foreach ( $targetedDirs as $targetedDir ) {
|
|
|
|
|
897 |
if ( ! is_dir($targetedDir) ) { continue; }
|
898 |
|
899 |
$dirItems = new \RecursiveDirectoryIterator( $targetedDir, \RecursiveDirectoryIterator::SKIP_DOTS );
|
@@ -1040,8 +1050,6 @@ SQL;
|
|
1040 |
echo $keptInfo."\n";
|
1041 |
}
|
1042 |
}
|
1043 |
-
|
1044 |
-
exit();
|
1045 |
}
|
1046 |
|
1047 |
if ($redirectAfter && wp_get_referer()) {
|
@@ -1050,6 +1058,19 @@ SQL;
|
|
1050 |
}
|
1051 |
}
|
1052 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1053 |
/**
|
1054 |
* @return array
|
1055 |
*/
|
8 |
use WpAssetCleanUp\Menu;
|
9 |
use WpAssetCleanUp\Misc;
|
10 |
use WpAssetCleanUp\Plugin;
|
11 |
+
use WpAssetCleanUp\Settings;
|
12 |
use WpAssetCleanUp\Tools;
|
13 |
|
14 |
/**
|
59 |
}
|
60 |
|
61 |
add_action('admin_post_assetcleanup_clear_assets_cache', static function() {
|
62 |
+
set_transient('wpacu_clear_assets_cache_via_link', true);
|
63 |
self::clearAllCache(true);
|
64 |
});
|
65 |
|
850 |
return;
|
851 |
}
|
852 |
|
853 |
+
// No settings available? Must be triggered very early before 'init' action hook; Get the settings!
|
854 |
+
if ( ! isset(Main::instance()->settings['clear_cached_files_after']) ) {
|
855 |
+
$wpacuSettingsClass = new Settings();
|
856 |
+
Main::instance()->settings = $wpacuSettingsClass->getAll();
|
857 |
+
}
|
858 |
+
|
859 |
$isAjaxCall = isset($_POST['action']) && $_POST['action'] === WPACU_PLUGIN_ID . '_clear_cache' && is_admin();
|
860 |
$clearedOutput = $keptOutput = array();
|
861 |
|
902 |
);
|
903 |
|
904 |
foreach ( $targetedDirs as $targetedDir ) {
|
905 |
+
$targetedDir = rtrim(str_replace('//', '/', $targetedDir), '/'); // clean it
|
906 |
+
|
907 |
if ( ! is_dir($targetedDir) ) { continue; }
|
908 |
|
909 |
$dirItems = new \RecursiveDirectoryIterator( $targetedDir, \RecursiveDirectoryIterator::SKIP_DOTS );
|
1050 |
echo $keptInfo."\n";
|
1051 |
}
|
1052 |
}
|
|
|
|
|
1053 |
}
|
1054 |
|
1055 |
if ($redirectAfter && wp_get_referer()) {
|
1058 |
}
|
1059 |
}
|
1060 |
|
1061 |
+
/**
|
1062 |
+
* This is usually done when the plugin is deactivated
|
1063 |
+
* e.g. if you use Autoptimize and it remains active, you will likely want to have its caching cleared with traces from Asset CleanUp
|
1064 |
+
*/
|
1065 |
+
public static function clearOtherPluginsCache()
|
1066 |
+
{
|
1067 |
+
if (Misc::isPluginActive('autoptimize/autoptimize.php')
|
1068 |
+
&& class_exists('\autoptimizeCache')
|
1069 |
+
&& method_exists('\autoptimizeCache', 'clearall')) {
|
1070 |
+
\autoptimizeCache::clearall();
|
1071 |
+
}
|
1072 |
+
}
|
1073 |
+
|
1074 |
/**
|
1075 |
* @return array
|
1076 |
*/
|
classes/OptimiseAssets/OptimizeJs.php
CHANGED
@@ -19,7 +19,12 @@ class OptimizeJs
|
|
19 |
*/
|
20 |
public function init()
|
21 |
{
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
23 |
}
|
24 |
|
25 |
/**
|
@@ -395,12 +400,8 @@ class OptimizeJs
|
|
395 |
public static function updateOriginalToOptimizedTag($scriptSourceTag, $sourceUrl, $optimizeUrl)
|
396 |
{
|
397 |
$newScriptSourceTag = str_replace($sourceUrl, $optimizeUrl, $scriptSourceTag);
|
398 |
-
|
399 |
-
|
400 |
-
if (CombineJs::proceedWithJsCombine()) {
|
401 |
-
$sourceUrlRel = is_array($sourceUrl) ? OptimizeCommon::getSourceRelPath($sourceUrl[0]) : OptimizeCommon::getSourceRelPath($sourceUrl);
|
402 |
-
$newScriptSourceTag = str_ireplace('<script ', '<script data-wpacu-script-rel-src-before="'.$sourceUrlRel.'" ', $newScriptSourceTag);
|
403 |
-
}
|
404 |
|
405 |
// Strip ?ver=
|
406 |
$toStrip = Misc::extractBetween($newScriptSourceTag, '?ver', '>');
|
@@ -415,6 +416,8 @@ class OptimizeJs
|
|
415 |
$newScriptSourceTag = str_replace('.js&ver='.$wp_version, '.js', $newScriptSourceTag);
|
416 |
$newScriptSourceTag = str_replace('.js&ver=', '.js', $newScriptSourceTag);
|
417 |
|
|
|
|
|
418 |
return $newScriptSourceTag;
|
419 |
}
|
420 |
|
@@ -495,16 +498,19 @@ class OptimizeJs
|
|
495 |
|
496 |
if (self::isWorthCheckingForOptimization() && ! Main::instance()->preventAssetsSettings()) {
|
497 |
/* [wpacu_timing] */ $wpacuTimingName = 'alter_html_source_for_minify_inline_script_tags'; Misc::scriptExecTimer($wpacuTimingName); /* [/wpacu_timing] */
|
498 |
-
$htmlSource = self::
|
499 |
/* [wpacu_timing] */ Misc::scriptExecTimer($wpacuTimingName, 'end'); /* [/wpacu_timing] */
|
500 |
}
|
501 |
|
502 |
// Final cleanups
|
503 |
-
$htmlSource = preg_replace('
|
504 |
|
505 |
-
$htmlSource = preg_replace('
|
506 |
$htmlSource = preg_replace('#<script(.*)data-wpacu-script-handle=\'(.*)\'#Umi', '<script \\1', $htmlSource);
|
507 |
|
|
|
|
|
|
|
508 |
/* [wpacu_timing] */ Misc::scriptExecTimer('alter_html_source_for_optimize_js', 'end'); /* [/wpacu_timing] */
|
509 |
|
510 |
return $htmlSource;
|
@@ -515,12 +521,17 @@ class OptimizeJs
|
|
515 |
*
|
516 |
* @return mixed|string
|
517 |
*/
|
518 |
-
public static function
|
519 |
{
|
520 |
if (stripos($htmlSource, '<script') === false) {
|
521 |
return $htmlSource; // no SCRIPT tags, hmm
|
522 |
}
|
523 |
|
|
|
|
|
|
|
|
|
|
|
524 |
$domTag = new \DOMDocument();
|
525 |
libxml_use_internal_errors(true);
|
526 |
$domTag->loadHTML($htmlSource);
|
@@ -531,7 +542,7 @@ class OptimizeJs
|
|
531 |
return $htmlSource;
|
532 |
}
|
533 |
|
534 |
-
$
|
535 |
|
536 |
$skipTagsContaining = array_map( static function ( $toMatch ) {
|
537 |
return preg_quote($toMatch, '/');
|
@@ -542,7 +553,10 @@ class OptimizeJs
|
|
542 |
'wpacu-preload-async-css-fallback',
|
543 |
/* [wpacu_pro] */'data-wpacu-inline-js-file',/* [/wpacu_pro] */
|
544 |
'document.body.prepend(wpacuLinkTag',
|
545 |
-
'var wc_product_block_data = JSON.parse( decodeURIComponent('
|
|
|
|
|
|
|
546 |
));
|
547 |
|
548 |
foreach ($scriptTagsObj as $scriptTagObj) {
|
@@ -571,7 +585,7 @@ class OptimizeJs
|
|
571 |
$originalTagContents = (isset($scriptTagObj->nodeValue) && trim($scriptTagObj->nodeValue) !== '') ? $scriptTagObj->nodeValue : false;
|
572 |
|
573 |
if ($originalTagContents) {
|
574 |
-
$newTagContents = self::maybeAlterJsContent($originalTagContents, $
|
575 |
|
576 |
if ($newTagContents !== $originalTagContents) {
|
577 |
$htmlSource = str_ireplace(
|
@@ -609,6 +623,12 @@ class OptimizeJs
|
|
609 |
foreach ($scriptSrcs as $scriptSrc) {
|
610 |
$scriptSrc = str_replace('{site_url}', '', $scriptSrc);
|
611 |
|
|
|
|
|
|
|
|
|
|
|
|
|
612 |
preg_match_all('#<script[^>]*src(|\s+)=(|\s+)[^>]*'. preg_quote($scriptSrc, '/'). '.*(>)(.*|)</script>#Usmi', $htmlSource, $matchesFromSrc, PREG_SET_ORDER);
|
613 |
|
614 |
if (isset($matchesFromSrc[0][0]) && strip_tags($matchesFromSrc[0][0]) === '') {
|
@@ -680,6 +700,10 @@ class OptimizeJs
|
|
680 |
return $htmlSource; // no SCRIPT tags, hmm
|
681 |
}
|
682 |
|
|
|
|
|
|
|
|
|
683 |
$domTag = new \DOMDocument();
|
684 |
libxml_use_internal_errors(true);
|
685 |
$domTag->loadHTML($htmlSource);
|
19 |
*/
|
20 |
public function init()
|
21 |
{
|
22 |
+
if (WPACU_GET_LOADED_ASSETS_ACTION === true) {
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
|
26 |
+
// Only relevant when the list of CSS/JS is not fetched
|
27 |
+
add_action( 'wp_print_footer_scripts', array( $this, 'prepareOptimizeList' ), PHP_INT_MAX );
|
28 |
}
|
29 |
|
30 |
/**
|
400 |
public static function updateOriginalToOptimizedTag($scriptSourceTag, $sourceUrl, $optimizeUrl)
|
401 |
{
|
402 |
$newScriptSourceTag = str_replace($sourceUrl, $optimizeUrl, $scriptSourceTag);
|
403 |
+
$sourceUrlRel = is_array($sourceUrl) ? OptimizeCommon::getSourceRelPath($sourceUrl[0]) : OptimizeCommon::getSourceRelPath($sourceUrl);
|
404 |
+
$newScriptSourceTag = str_ireplace('<script ', '<script data-wpacu-script-rel-src-before="'.$sourceUrlRel.'" ', $newScriptSourceTag);
|
|
|
|
|
|
|
|
|
405 |
|
406 |
// Strip ?ver=
|
407 |
$toStrip = Misc::extractBetween($newScriptSourceTag, '?ver', '>');
|
416 |
$newScriptSourceTag = str_replace('.js&ver='.$wp_version, '.js', $newScriptSourceTag);
|
417 |
$newScriptSourceTag = str_replace('.js&ver=', '.js', $newScriptSourceTag);
|
418 |
|
419 |
+
$newScriptSourceTag = preg_replace('!\s+!', ' ', $newScriptSourceTag); // replace multiple spaces with only one space
|
420 |
+
|
421 |
return $newScriptSourceTag;
|
422 |
}
|
423 |
|
498 |
|
499 |
if (self::isWorthCheckingForOptimization() && ! Main::instance()->preventAssetsSettings()) {
|
500 |
/* [wpacu_timing] */ $wpacuTimingName = 'alter_html_source_for_minify_inline_script_tags'; Misc::scriptExecTimer($wpacuTimingName); /* [/wpacu_timing] */
|
501 |
+
$htmlSource = self::minifyInlineScriptTags($htmlSource);
|
502 |
/* [wpacu_timing] */ Misc::scriptExecTimer($wpacuTimingName, 'end'); /* [/wpacu_timing] */
|
503 |
}
|
504 |
|
505 |
// Final cleanups
|
506 |
+
$htmlSource = preg_replace('#(\s+|)(data-wpacu-jquery-core-handle=1|data-wpacu-jquery-migrate-handle=1)(\s+|)#Umi', '', $htmlSource);
|
507 |
|
508 |
+
$htmlSource = preg_replace('#(\s+|)data-wpacu-script-rel-src-before=(["\'])' . '(.*)' . '(\1)(\s+|)#Usmi', '', $htmlSource);
|
509 |
$htmlSource = preg_replace('#<script(.*)data-wpacu-script-handle=\'(.*)\'#Umi', '<script \\1', $htmlSource);
|
510 |
|
511 |
+
// Clear possible empty SCRIPT tags (e.g. left from associated 'before' and 'after' tags after their content was stripped)
|
512 |
+
$htmlSource = preg_replace('#<script(\s+| )(type=\'text/javascript\'|)(\s+|)></script>#Umi', '', $htmlSource);
|
513 |
+
|
514 |
/* [wpacu_timing] */ Misc::scriptExecTimer('alter_html_source_for_optimize_js', 'end'); /* [/wpacu_timing] */
|
515 |
|
516 |
return $htmlSource;
|
521 |
*
|
522 |
* @return mixed|string
|
523 |
*/
|
524 |
+
public static function minifyInlineScriptTags($htmlSource)
|
525 |
{
|
526 |
if (stripos($htmlSource, '<script') === false) {
|
527 |
return $htmlSource; // no SCRIPT tags, hmm
|
528 |
}
|
529 |
|
530 |
+
// DOMDocument extension has to be enabled, otherwise return the HTML source as was (no changes)
|
531 |
+
if (! (function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('DOMDocument'))) {
|
532 |
+
return $htmlSource;
|
533 |
+
}
|
534 |
+
|
535 |
$domTag = new \DOMDocument();
|
536 |
libxml_use_internal_errors(true);
|
537 |
$domTag->loadHTML($htmlSource);
|
542 |
return $htmlSource;
|
543 |
}
|
544 |
|
545 |
+
$doJsMinifyInline = MinifyJs::isMinifyJsEnabled() && Main::instance()->settings['minify_loaded_js_inline'];
|
546 |
|
547 |
$skipTagsContaining = array_map( static function ( $toMatch ) {
|
548 |
return preg_quote($toMatch, '/');
|
553 |
'wpacu-preload-async-css-fallback',
|
554 |
/* [wpacu_pro] */'data-wpacu-inline-js-file',/* [/wpacu_pro] */
|
555 |
'document.body.prepend(wpacuLinkTag',
|
556 |
+
'var wc_product_block_data = JSON.parse( decodeURIComponent(',
|
557 |
+
'/(^|\s)(no-)?customize-support(?=\s|$)/', // WP Core
|
558 |
+
'b[c] += ( window.postMessage && request ? \' \' : \' no-\' ) + cs;', // WP Core
|
559 |
+
'data-wpacu-own-inline-script' // Only shown to the admin, irrelevant for any optimization (save resources)
|
560 |
));
|
561 |
|
562 |
foreach ($scriptTagsObj as $scriptTagObj) {
|
585 |
$originalTagContents = (isset($scriptTagObj->nodeValue) && trim($scriptTagObj->nodeValue) !== '') ? $scriptTagObj->nodeValue : false;
|
586 |
|
587 |
if ($originalTagContents) {
|
588 |
+
$newTagContents = self::maybeAlterJsContent($originalTagContents, $doJsMinifyInline);
|
589 |
|
590 |
if ($newTagContents !== $originalTagContents) {
|
591 |
$htmlSource = str_ireplace(
|
623 |
foreach ($scriptSrcs as $scriptSrc) {
|
624 |
$scriptSrc = str_replace('{site_url}', '', $scriptSrc);
|
625 |
|
626 |
+
// Clean it up for the preg_quote() call
|
627 |
+
if (strpos($scriptSrc, '.js?') !== false) {
|
628 |
+
list($scriptSrc,) = explode('.js?', $scriptSrc);
|
629 |
+
$scriptSrc .= '.js';
|
630 |
+
}
|
631 |
+
|
632 |
preg_match_all('#<script[^>]*src(|\s+)=(|\s+)[^>]*'. preg_quote($scriptSrc, '/'). '.*(>)(.*|)</script>#Usmi', $htmlSource, $matchesFromSrc, PREG_SET_ORDER);
|
633 |
|
634 |
if (isset($matchesFromSrc[0][0]) && strip_tags($matchesFromSrc[0][0]) === '') {
|
700 |
return $htmlSource; // no SCRIPT tags, hmm
|
701 |
}
|
702 |
|
703 |
+
if (! (function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('DOMDocument')) && class_exists('DOMXpath')) {
|
704 |
+
return $htmlSource; // DOMDocument has to be enabled
|
705 |
+
}
|
706 |
+
|
707 |
$domTag = new \DOMDocument();
|
708 |
libxml_use_internal_errors(true);
|
709 |
$domTag->loadHTML($htmlSource);
|
classes/Overview.php
CHANGED
@@ -14,238 +14,248 @@ class Overview
|
|
14 |
public $data = array();
|
15 |
|
16 |
/**
|
17 |
-
*
|
18 |
*/
|
19 |
-
public function
|
20 |
-
|
21 |
-
|
22 |
|
23 |
-
|
24 |
|
25 |
-
|
26 |
|
27 |
-
|
28 |
* Per page rules (unload, load exceptions if a bulk rule is enabled, async & defer for SCRIPT tags)
|
29 |
*/
|
30 |
-
|
31 |
-
|
32 |
|
33 |
-
|
34 |
-
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
|
45 |
-
|
46 |
-
|
47 |
|
48 |
-
|
49 |
-
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
|
74 |
-
|
75 |
-
|
76 |
foreach ($wpacuFrontPageDataArray['scripts_attributes_no_load'] as $assetHandle => $assetAttrsNoLoad) {
|
77 |
$allHandles['scripts'][$assetHandle]['attrs_no_load']['home_page'] = $assetAttrsNoLoad;
|
78 |
}
|
79 |
-
|
80 |
-
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
SELECT * FROM `{$tableName}`
|
86 |
WHERE meta_key IN('_{$wpacuPluginId}_no_load', '_{$wpacuPluginId}_data', '_{$wpacuPluginId}_load_exceptions')
|
87 |
SQL;
|
88 |
-
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
if ( empty( $decodedValues ) ) {
|
94 |
-
continue;
|
95 |
-
}
|
96 |
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
$refKey = 'post';
|
101 |
-
} elseif ($tableName === $wpdb->termmeta) {
|
102 |
-
$refId = $wpacuValues['term_id'];
|
103 |
-
$refKey = 'term';
|
104 |
-
} else {
|
105 |
-
$refId = $wpacuValues['user_id'];
|
106 |
-
$refKey = 'user';
|
107 |
-
}
|
108 |
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
$allHandles[ $assetType ][ $assetHandle ]['load_exception_on_this_page'][$refKey][] = $refId;
|
121 |
-
}
|
122 |
-
}
|
123 |
-
} elseif ( $wpacuValues['meta_key'] === '_' . $wpacuPluginId . '_data' ) {
|
124 |
-
if ( isset( $decodedValues['scripts'] ) && ! empty( $decodedValues['scripts'] ) ) {
|
125 |
-
foreach ( $decodedValues['scripts'] as $scriptHandle => $scriptData ) {
|
126 |
-
if ( isset( $scriptData['attributes'] ) && ! empty( $scriptData['attributes'] ) ) {
|
127 |
-
// async, defer attributes
|
128 |
-
$allHandles['scripts'][ $scriptHandle ]['script_attrs'][$refKey][$refId] = $scriptData['attributes'];
|
129 |
-
}
|
130 |
-
}
|
131 |
-
}
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
-
|
143 |
* Global (Site-wide) Rules: Preloading, Position changing, Unload via RegEx, etc.
|
144 |
*/
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
|
|
159 |
// For date, 404, search pages
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
foreach ($unloadedInValues as $assetHandle => $assetAttrsNoLoad) {
|
183 |
$allHandles['scripts'][$assetHandle]['attrs_no_load'][$unloadedIn] = $assetAttrsNoLoad;
|
184 |
}
|
185 |
-
|
186 |
-
|
187 |
|
188 |
-
|
189 |
* Unload Site-Wide (Everywhere) Rules: Preloading, Position changing, Unload via RegEx, etc.
|
190 |
*/
|
191 |
-
|
192 |
-
|
193 |
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
|
202 |
-
|
203 |
* Bulk Unload Rules - post, page, custom post type (e.g. product, download), taxonomy (e.g. category), 404, date, etc.
|
204 |
*/
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
foreach ($assetHandles as $assetHandle) {
|
219 |
-
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['post_type'][] = $postType;
|
220 |
-
}
|
221 |
-
}
|
222 |
-
} elseif (in_array($unloadBulkType, array('date', '404', 'search'))) {
|
223 |
-
foreach ($unloadBulkValues as $assetHandle) {
|
224 |
-
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk'][$unloadBulkType] = 1;
|
225 |
-
}
|
226 |
-
} elseif ($unloadBulkType === 'taxonomy') {
|
227 |
-
foreach ($unloadBulkValues as $taxonomyType => $assetHandles) {
|
228 |
-
foreach ($assetHandles as $assetHandle) {
|
229 |
-
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['taxonomy'][] = $taxonomyType;
|
230 |
-
}
|
231 |
-
}
|
232 |
-
} elseif ($unloadBulkType === 'author' && isset($unloadBulkValues['all']) && ! empty($unloadBulkValues['all'])) {
|
233 |
-
foreach ($unloadBulkValues['all'] as $assetHandle) {
|
234 |
-
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['author'] = 1;
|
235 |
-
}
|
236 |
-
}
|
237 |
-
}
|
238 |
-
}
|
239 |
-
}
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
|
245 |
-
|
246 |
-
|
247 |
-
}
|
248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
$this->data['handles'] = $allHandles;
|
250 |
|
251 |
if (isset($this->data['handles']['styles']) || isset($this->data['handles']['scripts'])) {
|
@@ -545,7 +555,11 @@ SQL;
|
|
545 |
}
|
546 |
?>
|
547 |
<div><a <?php if ($isExternalSrc) { ?> data-wpacu-external-source="<?php echo $src . $appendAfterSrc; ?>" <?php } ?> href="<?php echo $src . $appendAfterSrc; ?>" target="_blank"><small><?php echo str_replace( site_url(), '', $src ); ?></small></a> <?php if ($isExternalSrc) { ?><span data-wpacu-external-source-status></span><?php } ?></div>
|
548 |
-
|
|
|
|
|
|
|
|
|
549 |
}
|
550 |
|
551 |
// Any note?
|
@@ -589,6 +603,7 @@ SQL;
|
|
589 |
|
590 |
if (isset($handleData['unload_bulk']['taxonomy']) && ! empty($handleData['unload_bulk']['taxonomy'])) {
|
591 |
$handleChangesOutput['bulk'] .= ' Unloaded for all pages belonging to the following taxonomies: <strong>'.implode(', ', $handleData['unload_bulk']['taxonomy']).'</strong>, ';
|
|
|
592 |
}
|
593 |
|
594 |
if (isset($handleData['unload_bulk']['date']) || isset($handleData['unload_bulk']['404']) || isset($handleData['unload_bulk']['search'])) {
|
@@ -729,6 +744,59 @@ SQL;
|
|
729 |
$anyLoadExceptionRule = true;
|
730 |
}
|
731 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
732 |
if (isset($handleData['load_regex']) && $handleData['load_regex']) {
|
733 |
if ($anyLoadExceptionRule) {
|
734 |
$textToShow = ' <strong>or</strong> if the request URI (from the URL) matches this RegEx';
|
14 |
public $data = array();
|
15 |
|
16 |
/**
|
17 |
+
* @return array
|
18 |
*/
|
19 |
+
public static function handlesWithAtLeastOneRule()
|
20 |
+
{
|
21 |
+
global $wpdb;
|
22 |
|
23 |
+
$wpacuPluginId = WPACU_PLUGIN_ID;
|
24 |
|
25 |
+
$allHandles = array();
|
26 |
|
27 |
+
/*
|
28 |
* Per page rules (unload, load exceptions if a bulk rule is enabled, async & defer for SCRIPT tags)
|
29 |
*/
|
30 |
+
// Homepage (Unloads)
|
31 |
+
$wpacuFrontPageUnloads = get_option(WPACU_PLUGIN_ID . '_front_page_no_load');
|
32 |
|
33 |
+
if ($wpacuFrontPageUnloads) {
|
34 |
+
$wpacuFrontPageUnloadsArray = @json_decode( $wpacuFrontPageUnloads, ARRAY_A );
|
35 |
|
36 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
37 |
+
if ( isset( $wpacuFrontPageUnloadsArray[$assetType] ) && ! empty( $wpacuFrontPageUnloadsArray[$assetType] ) ) {
|
38 |
+
foreach ( $wpacuFrontPageUnloadsArray[$assetType] as $assetHandle ) {
|
39 |
+
$allHandles[$assetType][ $assetHandle ]['unload_on_home_page'] = 1;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
|
45 |
+
// Homepage (Load Exceptions)
|
46 |
+
$wpacuFrontPageLoadExceptions = get_option(WPACU_PLUGIN_ID . '_front_page_load_exceptions');
|
47 |
|
48 |
+
if ($wpacuFrontPageLoadExceptions) {
|
49 |
+
$wpacuFrontPageLoadExceptionsArray = @json_decode( $wpacuFrontPageLoadExceptions, ARRAY_A );
|
50 |
|
51 |
+
foreach ( array('styles', 'scripts') as $assetType ) {
|
52 |
+
if ( isset( $wpacuFrontPageLoadExceptionsArray[$assetType] ) && ! empty( $wpacuFrontPageLoadExceptionsArray[$assetType] ) ) {
|
53 |
+
foreach ( $wpacuFrontPageLoadExceptionsArray[$assetType] as $assetHandle ) {
|
54 |
+
$allHandles[$assetType][ $assetHandle ]['load_exception_on_home_page'] = 1;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
// Homepage (async, defer)
|
61 |
+
$wpacuFrontPageData = get_option(WPACU_PLUGIN_ID . '_front_page_data');
|
62 |
+
|
63 |
+
if ($wpacuFrontPageData) {
|
64 |
+
$wpacuFrontPageDataArray = @json_decode( $wpacuFrontPageData, ARRAY_A );
|
65 |
+
if ( isset($wpacuFrontPageDataArray['scripts']) && ! empty($wpacuFrontPageDataArray['scripts']) ) {
|
66 |
+
foreach ($wpacuFrontPageDataArray['scripts'] as $assetHandle => $assetData) {
|
67 |
+
if (isset($assetData['attributes']) && ! empty($assetData['attributes'])) {
|
68 |
+
// async, defer attributes
|
69 |
+
$allHandles['scripts'][ $assetHandle ]['script_attrs']['home_page'] = $assetData['attributes'];
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
|
74 |
+
// Do not apply "async", "defer" exceptions (e.g. "defer" is applied site-wide, except the home page)
|
75 |
+
if (isset($wpacuFrontPageDataArray['scripts_attributes_no_load']) && ! empty($wpacuFrontPageDataArray['scripts_attributes_no_load'])) {
|
76 |
foreach ($wpacuFrontPageDataArray['scripts_attributes_no_load'] as $assetHandle => $assetAttrsNoLoad) {
|
77 |
$allHandles['scripts'][$assetHandle]['attrs_no_load']['home_page'] = $assetAttrsNoLoad;
|
78 |
}
|
79 |
+
}
|
80 |
+
}
|
81 |
|
82 |
+
// Get all Asset CleanUp (Pro) meta keys from all WordPress meta tables where it can be possibly used
|
83 |
+
foreach (array($wpdb->postmeta, $wpdb->termmeta, $wpdb->usermeta) as $tableName) {
|
84 |
+
$wpacuGetValuesQuery = <<<SQL
|
85 |
SELECT * FROM `{$tableName}`
|
86 |
WHERE meta_key IN('_{$wpacuPluginId}_no_load', '_{$wpacuPluginId}_data', '_{$wpacuPluginId}_load_exceptions')
|
87 |
SQL;
|
88 |
+
$wpacuMetaData = $wpdb->get_results( $wpacuGetValuesQuery, ARRAY_A );
|
89 |
|
90 |
+
foreach ( $wpacuMetaData as $wpacuValues ) {
|
91 |
+
$decodedValues = @json_decode( $wpacuValues['meta_value'], ARRAY_A );
|
|
|
|
|
|
|
|
|
92 |
|
93 |
+
if ( empty( $decodedValues ) ) {
|
94 |
+
continue;
|
95 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
+
// $refId is the ID for the targeted element from the meta table which could be: post, taxonomy ID or user ID
|
98 |
+
if ($tableName === $wpdb->postmeta) {
|
99 |
+
$refId = $wpacuValues['post_id'];
|
100 |
+
$refKey = 'post';
|
101 |
+
} elseif ($tableName === $wpdb->termmeta) {
|
102 |
+
$refId = $wpacuValues['term_id'];
|
103 |
+
$refKey = 'term';
|
104 |
+
} else {
|
105 |
+
$refId = $wpacuValues['user_id'];
|
106 |
+
$refKey = 'user';
|
107 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
|
109 |
+
if ( $wpacuValues['meta_key'] === '_' . $wpacuPluginId . '_no_load' ) {
|
110 |
+
foreach ( $decodedValues as $assetType => $assetHandles ) {
|
111 |
+
foreach ( $assetHandles as $assetHandle ) {
|
112 |
+
// Unload it on this page
|
113 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_on_this_page'][$refKey][] = $refId;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
} elseif ( $wpacuValues['meta_key'] === '_' . $wpacuPluginId . '_load_exceptions' ) {
|
117 |
+
foreach ( $decodedValues as $assetType => $assetHandles ) {
|
118 |
+
foreach ( $assetHandles as $assetHandle ) {
|
119 |
+
// If bulk unloaded, 'Load it on this page'
|
120 |
+
$allHandles[ $assetType ][ $assetHandle ]['load_exception_on_this_page'][$refKey][] = $refId;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
} elseif ( $wpacuValues['meta_key'] === '_' . $wpacuPluginId . '_data' ) {
|
124 |
+
if ( isset( $decodedValues['scripts'] ) && ! empty( $decodedValues['scripts'] ) ) {
|
125 |
+
foreach ( $decodedValues['scripts'] as $assetHandle => $scriptData ) {
|
126 |
+
if ( isset( $scriptData['attributes'] ) && ! empty( $scriptData['attributes'] ) ) {
|
127 |
+
// async, defer attributes
|
128 |
+
$allHandles['scripts'][ $assetHandle ]['script_attrs'][$refKey][$refId] = $scriptData['attributes'];
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
if ( isset( $decodedValues['scripts_attributes_no_load'] ) && ! empty( $decodedValues['scripts_attributes_no_load'] ) ) {
|
134 |
+
foreach ( $decodedValues['scripts_attributes_no_load'] as $assetHandle => $scriptNoLoadAttrs ) {
|
135 |
+
$allHandles['scripts'][$assetHandle]['attrs_no_load'][$refKey][$refId] = $scriptNoLoadAttrs;
|
136 |
+
}
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
+
}
|
141 |
|
142 |
+
/*
|
143 |
* Global (Site-wide) Rules: Preloading, Position changing, Unload via RegEx, etc.
|
144 |
*/
|
145 |
+
$wpacuGlobalData = get_option(WPACU_PLUGIN_ID . '_global_data');
|
146 |
+
$wpacuGlobalDataArray = @json_decode($wpacuGlobalData, ARRAY_A);
|
147 |
+
|
148 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
149 |
+
foreach (array('load_it_logged_in', 'preloads', 'positions', 'notes', 'ignore_child', 'everywhere', 'date', '404', 'search') as $dataType) {
|
150 |
+
if ( isset( $wpacuGlobalDataArray[ $assetType ][$dataType] ) && ! empty( $wpacuGlobalDataArray[ $assetType ][$dataType] ) ) {
|
151 |
+
foreach ( $wpacuGlobalDataArray[ $assetType ][$dataType] as $assetHandle => $dataValue ) {
|
152 |
+
if ($dataType === 'everywhere' && $assetType === 'scripts' && isset($dataValue['attributes'])) {
|
153 |
+
if (count($dataValue['attributes']) === 0) {
|
154 |
+
continue;
|
155 |
+
}
|
156 |
+
|
157 |
+
// async/defer applied site-wide
|
158 |
+
$allHandles[ $assetType ][ $assetHandle ]['script_site_wide_attrs'] = $dataValue['attributes'];
|
159 |
+
} elseif ($dataType !== 'everywhere' && $assetType === 'scripts' && isset($dataValue['attributes'])) {
|
160 |
// For date, 404, search pages
|
161 |
+
$allHandles[ $assetType ][ $assetHandle ]['script_attrs'][$dataType] = $dataValue['attributes'];
|
162 |
+
} else {
|
163 |
+
$allHandles[ $assetType ][ $assetHandle ][ $dataType ] = $dataValue;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
foreach (array('unload_regex', 'load_regex') as $unloadType) {
|
170 |
+
if (isset($wpacuGlobalDataArray[$assetType][$unloadType]) && ! empty($wpacuGlobalDataArray[$assetType][$unloadType])) {
|
171 |
+
foreach ($wpacuGlobalDataArray[$assetType][$unloadType] as $assetHandle => $unloadData) {
|
172 |
+
if (isset($unloadData['enable'], $unloadData['value']) && $unloadData['enable'] && $unloadData['value']) {
|
173 |
+
$allHandles[ $assetType ][ $assetHandle ][$unloadType] = $unloadData['value'];
|
174 |
+
}
|
175 |
+
}
|
176 |
+
}
|
177 |
+
}
|
178 |
+
}
|
179 |
|
180 |
+
// Do not apply "async", "defer" exceptions (e.g. "defer" is applied site-wide, except the 404, search, date)
|
181 |
+
if (isset($wpacuGlobalDataArray['scripts_attributes_no_load']) && ! empty($wpacuGlobalDataArray['scripts_attributes_no_load'])) {
|
182 |
+
foreach ($wpacuGlobalDataArray['scripts_attributes_no_load'] as $unloadedIn => $unloadedInValues) {
|
183 |
foreach ($unloadedInValues as $assetHandle => $assetAttrsNoLoad) {
|
184 |
$allHandles['scripts'][$assetHandle]['attrs_no_load'][$unloadedIn] = $assetAttrsNoLoad;
|
185 |
}
|
186 |
+
}
|
187 |
+
}
|
188 |
|
189 |
+
/*
|
190 |
* Unload Site-Wide (Everywhere) Rules: Preloading, Position changing, Unload via RegEx, etc.
|
191 |
*/
|
192 |
+
$wpacuGlobalUnloadData = get_option(WPACU_PLUGIN_ID . '_global_unload');
|
193 |
+
$wpacuGlobalUnloadDataArray = @json_decode($wpacuGlobalUnloadData, ARRAY_A);
|
194 |
|
195 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
196 |
+
if (isset($wpacuGlobalUnloadDataArray[$assetType]) && ! empty($wpacuGlobalUnloadDataArray[$assetType])) {
|
197 |
+
foreach ($wpacuGlobalUnloadDataArray[$assetType] as $assetHandle) {
|
198 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_site_wide'] = 1;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
|
203 |
+
/*
|
204 |
* Bulk Unload Rules - post, page, custom post type (e.g. product, download), taxonomy (e.g. category), 404, date, etc.
|
205 |
*/
|
206 |
+
$wpacuBulkUnloadData = get_option(WPACU_PLUGIN_ID . '_bulk_unload');
|
207 |
+
$wpacuBulkUnloadDataArray = @json_decode($wpacuBulkUnloadData, ARRAY_A);
|
208 |
+
|
209 |
+
foreach (array('styles', 'scripts') as $assetType) {
|
210 |
+
if (isset($wpacuBulkUnloadDataArray[$assetType]) && ! empty($wpacuBulkUnloadDataArray[$assetType])) {
|
211 |
+
foreach ($wpacuBulkUnloadDataArray[$assetType] as $unloadBulkType => $unloadBulkValues) {
|
212 |
+
if (empty($unloadBulkValues)) {
|
213 |
+
continue;
|
214 |
+
}
|
215 |
+
|
216 |
+
// $unloadBulkType could be 'post_type', 'date', '404', 'taxonomy', 'search'
|
217 |
+
if ($unloadBulkType === 'post_type') {
|
218 |
+
foreach ($unloadBulkValues as $postType => $assetHandles) {
|
219 |
+
foreach ($assetHandles as $assetHandle) {
|
220 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['post_type'][] = $postType;
|
221 |
+
}
|
222 |
+
}
|
223 |
+
} elseif (in_array($unloadBulkType, array('date', '404', 'search'))) {
|
224 |
+
foreach ($unloadBulkValues as $assetHandle) {
|
225 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk'][$unloadBulkType] = 1;
|
226 |
+
}
|
227 |
+
} elseif ($unloadBulkType === 'taxonomy') {
|
228 |
+
foreach ($unloadBulkValues as $taxonomyType => $assetHandles) {
|
229 |
+
foreach ($assetHandles as $assetHandle) {
|
230 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['taxonomy'][] = $taxonomyType;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
} elseif ($unloadBulkType === 'author' && isset($unloadBulkValues['all']) && ! empty($unloadBulkValues['all'])) {
|
234 |
+
foreach ($unloadBulkValues['all'] as $assetHandle) {
|
235 |
+
$allHandles[ $assetType ][ $assetHandle ]['unload_bulk']['author'] = 1;
|
236 |
+
}
|
237 |
+
}
|
238 |
+
}
|
239 |
+
}
|
240 |
+
}
|
241 |
|
242 |
+
if (isset($allHandles['styles'])) {
|
243 |
+
ksort($allHandles['styles']);
|
244 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
|
246 |
+
if (isset($allHandles['scripts'])) {
|
247 |
+
ksort($allHandles['scripts']);
|
248 |
+
}
|
249 |
|
250 |
+
return $allHandles;
|
251 |
+
}
|
|
|
252 |
|
253 |
+
/**
|
254 |
+
*
|
255 |
+
*/
|
256 |
+
public function pageOverview()
|
257 |
+
{
|
258 |
+
$allHandles = self::handlesWithAtLeastOneRule();
|
259 |
$this->data['handles'] = $allHandles;
|
260 |
|
261 |
if (isset($this->data['handles']['styles']) || isset($this->data['handles']['scripts'])) {
|
555 |
}
|
556 |
?>
|
557 |
<div><a <?php if ($isExternalSrc) { ?> data-wpacu-external-source="<?php echo $src . $appendAfterSrc; ?>" <?php } ?> href="<?php echo $src . $appendAfterSrc; ?>" target="_blank"><small><?php echo str_replace( site_url(), '', $src ); ?></small></a> <?php if ($isExternalSrc) { ?><span data-wpacu-external-source-status></span><?php } ?></div>
|
558 |
+
<?php
|
559 |
+
if ($maybeInactiveAsset = \WpAssetCleanUp\Misc::maybeIsInactiveAsset($src)) { ?>
|
560 |
+
<div><small><strong>Note:</strong> <span style="color: darkred;">The plugin `<strong><?php echo $maybeInactiveAsset; ?></strong>` seems to be inactive, thus any rules set are also inactive & irrelevant, unless you re-activate the plugin.</span></small></div>
|
561 |
+
<?php
|
562 |
+
}
|
563 |
}
|
564 |
|
565 |
// Any note?
|
603 |
|
604 |
if (isset($handleData['unload_bulk']['taxonomy']) && ! empty($handleData['unload_bulk']['taxonomy'])) {
|
605 |
$handleChangesOutput['bulk'] .= ' Unloaded for all pages belonging to the following taxonomies: <strong>'.implode(', ', $handleData['unload_bulk']['taxonomy']).'</strong>, ';
|
606 |
+
$anyGroupPostUnloadRule = true;
|
607 |
}
|
608 |
|
609 |
if (isset($handleData['unload_bulk']['date']) || isset($handleData['unload_bulk']['404']) || isset($handleData['unload_bulk']['search'])) {
|
744 |
$anyLoadExceptionRule = true;
|
745 |
}
|
746 |
|
747 |
+
// [wpacu_pro]
|
748 |
+
// Load exceptions? Per taxonomy page (e.g. /category/clothes/)
|
749 |
+
if (isset($handleData['load_exception_on_this_page']['term'])) {
|
750 |
+
$handleChangesOutput['load_exception_on_this_taxonomy'] = '<span style="color: green;">Loaded (as an exception)</span> in the following taxonomy pages: ';
|
751 |
+
|
752 |
+
$postsList = '';
|
753 |
+
|
754 |
+
sort($handleData['load_exception_on_this_page']['term']);
|
755 |
+
|
756 |
+
foreach ($handleData['load_exception_on_this_page']['term'] as $termId) {
|
757 |
+
$termData = get_term_by('term_taxonomy_id', $termId);
|
758 |
+
$postsList .= '<a title="" target="_blank" href="'.admin_url('term.php?taxonomy='.$termData->taxonomy.'&tag_ID='.$termId).'">'.$termId.'</a> ('.$termData->name.' / taxonomy: '.$termData->taxonomy.'), ';
|
759 |
+
}
|
760 |
+
|
761 |
+
$handleChangesOutput['load_exception_on_this_taxonomy'] .= rtrim($postsList, ', ');
|
762 |
+
$anyLoadExceptionRule = true;
|
763 |
+
}
|
764 |
+
|
765 |
+
// Load exceptions? Per user archive page (e.g. /author/john/)
|
766 |
+
if (isset($handleData['load_exception_on_this_page']['user'])) {
|
767 |
+
$handleChangesOutput['load_exception_on_this_user'] = '<span style="color: green;">Loaded (as an exception)</span> in the following user archive pages: ';
|
768 |
+
|
769 |
+
$usersList = '';
|
770 |
+
|
771 |
+
sort($handleData['load_exception_on_this_page']['user']);
|
772 |
+
|
773 |
+
foreach ($handleData['load_exception_on_this_page']['user'] as $userId) {
|
774 |
+
$userData = get_user_by('id', $userId);
|
775 |
+
$usersList .= '<a title="" target="_blank" href="'.admin_url('user-edit.php?user_id='.$userData->ID).'">'.$userData->ID.'</a> ('.$userData->data->user_nicename.'), ';
|
776 |
+
}
|
777 |
+
|
778 |
+
$handleChangesOutput['load_exception_on_this_user'] .= rtrim($usersList, ', ');
|
779 |
+
$anyLoadExceptionRule = true;
|
780 |
+
}
|
781 |
+
|
782 |
+
// Load exceptions? Search page
|
783 |
+
if (isset($handleData['load_exception_on_this_page']['search'])) {
|
784 |
+
$handleChangesOutput['load_exception_on_search_any_term'] = '<span style="color: green;">Loaded (as an exception)</span> in a `Search` page (any term)';
|
785 |
+
$anyLoadExceptionRule = true;
|
786 |
+
}
|
787 |
+
|
788 |
+
// Load exceptions? 404 page
|
789 |
+
if (isset($handleData['load_exception_on_this_page']['404'])) {
|
790 |
+
$handleChangesOutput['load_exception_on_404_page'] = '<span style="color: green;">Loaded (as an exception)</span> in a `404 (Not Found)` page';
|
791 |
+
$anyLoadExceptionRule = true;
|
792 |
+
}
|
793 |
+
|
794 |
+
// Load exceptions? Date archive page
|
795 |
+
if (isset($handleData['load_exception_on_this_page']['date'])) {
|
796 |
+
$handleChangesOutput['load_exception_on_date_archive_page'] = '<span style="color: green;">Loaded (as an exception)</span> in a `Date` archive page';
|
797 |
+
$anyLoadExceptionRule = true;
|
798 |
+
}
|
799 |
+
|
800 |
if (isset($handleData['load_regex']) && $handleData['load_regex']) {
|
801 |
if ($anyLoadExceptionRule) {
|
802 |
$textToShow = ' <strong>or</strong> if the request URI (from the URL) matches this RegEx';
|
classes/OwnAssets.php
CHANGED
@@ -32,26 +32,68 @@ class OwnAssets
|
|
32 |
|
33 |
add_action('admin_footer', array($this, 'inlineFooterCode'));
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
|
42 |
add_filter('wpacu_object_data', static function($wpacu_object_data) {
|
43 |
$wpacu_object_data['source_load_error_msg'] = __('It looks like the source is not reachable', 'wp-asset-clean-up');
|
44 |
$wpacu_object_data['plugin_id'] = WPACU_PLUGIN_ID;
|
45 |
$wpacu_object_data['ajax_url'] = admin_url('admin-ajax.php');
|
46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
// After homepage/post/page is saved and the page is reloaded, clear the cache
|
49 |
-
|
50 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
return $wpacu_object_data;
|
57 |
});
|
@@ -169,7 +211,7 @@ class OwnAssets
|
|
169 |
public function stylesAndScriptsForPublic()
|
170 |
{
|
171 |
// Do not print it when an AJAX call is made from the Dashboard
|
172 |
-
if (
|
173 |
return;
|
174 |
}
|
175 |
|
@@ -178,9 +220,8 @@ class OwnAssets
|
|
178 |
return;
|
179 |
}
|
180 |
|
181 |
-
//
|
182 |
-
|
183 |
-
if (! is_admin_bar_showing() && ! Main::instance()->frontendShow()) {
|
184 |
return;
|
185 |
}
|
186 |
|
@@ -402,37 +443,35 @@ JS;
|
|
402 |
// [End] Chosen Script
|
403 |
}
|
404 |
|
|
|
405 |
if ($page === WPACU_PLUGIN_ID . '_assets_manager' || (Misc::getVar('get', 'post') && Misc::getVar('get', 'action') === 'edit')) {
|
406 |
// [Start] SweetAlert
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
.swal-
|
415 |
-
|
416 |
-
}
|
417 |
-
|
418 |
-
.swal-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
}
|
426 |
-
|
427 |
-
.swal-button.swal-button--confirm {
|
428 |
-
|
429 |
-
}
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
}
|
434 |
-
CSS;
|
435 |
-
wp_add_inline_style(WPACU_PLUGIN_ID . '-sweetalert-css', $sweetAlertStyleInline);
|
436 |
|
437 |
wp_enqueue_script(
|
438 |
WPACU_PLUGIN_ID . '-sweetalert-js',
|
@@ -470,6 +509,7 @@ JS;
|
|
470 |
wp_add_inline_script(WPACU_PLUGIN_ID . '-sweetalert-js', $sweetAlertScriptInline);
|
471 |
// [ENd] SweetAlert
|
472 |
}
|
|
|
473 |
|
474 |
if (in_array($page, array(WPACU_PLUGIN_ID . '_overview', WPACU_PLUGIN_ID . '_bulk_unloads'))) {
|
475 |
// [Start] Tooltipster Style
|
@@ -544,15 +584,15 @@ JS;
|
|
544 |
* It will force them to refresh whenever there's a change in either of the files
|
545 |
*
|
546 |
* @param $src
|
|
|
547 |
*
|
548 |
* @return mixed
|
549 |
*/
|
550 |
-
public function ownAssetLoaderSrc($src)
|
551 |
-
|
552 |
-
|
553 |
-
|| strpos($src, '/wp-asset-clean-up/assets/style.min.css') !== false) {
|
554 |
$src = str_replace(
|
555 |
-
array('?ver=',
|
556 |
array('?wpacuversion=', '&wpacuversion='),
|
557 |
$src);
|
558 |
}
|
@@ -569,7 +609,7 @@ JS;
|
|
569 |
public function ownAssetLoaderTag($tag, $handle)
|
570 |
{
|
571 |
// Useful in case jQuery library is deferred too (rare situations)
|
572 |
-
if ($handle === WPACU_PLUGIN_ID . '-script'
|
573 |
$tag = str_replace(' src=', ' data-wpacu-plugin-script defer=\'defer\' src=', $tag);
|
574 |
}
|
575 |
|
32 |
|
33 |
add_action('admin_footer', array($this, 'inlineFooterCode'));
|
34 |
|
35 |
+
|
36 |
+
// Rename ?ver= to ?wpacuversion to prevent other plugins from stripping "ver"
|
37 |
+
// This is valid in the front-end and the Dashboard
|
38 |
+
add_filter('script_loader_src', array($this, 'ownAssetLoaderSrc'), 10, 2);
|
39 |
+
add_filter('style_loader_src', array($this, 'ownAssetLoaderSrc'), 10, 2);
|
40 |
+
add_filter('script_loader_tag', array($this, 'ownAssetLoaderTag'), 10, 2);
|
41 |
|
42 |
add_filter('wpacu_object_data', static function($wpacu_object_data) {
|
43 |
$wpacu_object_data['source_load_error_msg'] = __('It looks like the source is not reachable', 'wp-asset-clean-up');
|
44 |
$wpacu_object_data['plugin_id'] = WPACU_PLUGIN_ID;
|
45 |
$wpacu_object_data['ajax_url'] = admin_url('admin-ajax.php');
|
46 |
+
|
47 |
+
$wpacu_object_data['jquery_unload_alert'] = 'jQuery library is a WordPress library that it is used in WordPress plugins/themes most of the time.'."\n\n".
|
48 |
+
'There are currently other JavaScript "children" files connected to it, that will stop working, if this library is unloaded'."\n\n".
|
49 |
+
'If you are positive this page does not require jQuery (very rare cases), then you can continue by pressing "OK"'."\n\n".
|
50 |
+
'Otherwise, it is strongly recommended to keep this library loaded by pressing "Cancel" to avoid breaking the functionality of the website.';
|
51 |
+
|
52 |
+
// backbone, underscore, etc.
|
53 |
+
$wpacu_object_data['sensitive_library_unload_alert'] = 'Please make sure to properly test this page after this particular JavaScript file is unloaded as it is usually loaded for a reason.'."\n\n".
|
54 |
+
'If you are not sure whether it is used or not, then consider using the "Cancel" button to avoid taking ay chances in breaking the website\'s functionality.'."\n\n".
|
55 |
+
'It is advised to check the browser\'s console via right-click and "Inspect" to check for any reported errors.';
|
56 |
+
|
57 |
+
$wpacu_object_data['dashicons_unload_alert_ninja_forms'] = 'It looks like you are using "Ninja Forms" plugin which is sometimes loading Dashicons for the forms\' styling.'."\n\n".
|
58 |
+
'If you are sure your forms do not use Dashicons, please use the following option \'Ignore dependency rule and keep the "children" loaded\' to avoid the unloading of the "nf-display" handle.'. "\n\n".
|
59 |
+
'Click "OK" to continue or "Cancel" if you have any doubts about unloading the Dashicons. It is better to have Dashicons loaded, then take a chance and break the forms\' layout.';
|
60 |
|
61 |
// After homepage/post/page is saved and the page is reloaded, clear the cache
|
62 |
+
// Cache clearing default values
|
63 |
+
$wpacu_object_data['clear_cache_on_page_load'] = $wpacu_object_data['clear_other_caches'] = false; // default
|
64 |
+
|
65 |
+
/*
|
66 |
+
* [Start] Trigger plugin cache and other plugins'/system caches
|
67 |
+
*/
|
68 |
+
// After editing post/page within the Dashboard
|
69 |
+
$unloadAssetsSubmit = (isset($_POST['wpacu_unload_assets_area_loaded']) && $_POST['wpacu_unload_assets_area_loaded']);
|
70 |
|
71 |
+
// After updating the CSS/JS manager within the front-end view (when "Manage in the front-end" is enabled)
|
72 |
+
$frontendViewPageAssetsJustUpdated = (! is_admin() && get_transient('wpacu_page_just_updated'));
|
73 |
+
|
74 |
+
// After updating the "Settings" within the Dashboard
|
75 |
+
$pluginSettingsWithinDashboardJustUpdated = (is_admin() && get_transient('wpacu_settings_updated'));
|
76 |
+
|
77 |
+
if ($unloadAssetsSubmit || $frontendViewPageAssetsJustUpdated || $pluginSettingsWithinDashboardJustUpdated) {
|
78 |
+
// Instruct the script to trigger clearing the cache via AJAX
|
79 |
+
$wpacu_object_data['clear_cache_on_page_load'] = true;
|
80 |
+
}
|
81 |
+
/*
|
82 |
+
* [End] Trigger plugin cache and other plugins'/system caches
|
83 |
+
*/
|
84 |
+
|
85 |
+
/*
|
86 |
+
* [Start] Trigger ONLY other plugins'/system caches
|
87 |
+
*/
|
88 |
+
// When click the "Clear CSS/JS Files Cache" link within the Dashboard (e.g. toolbar or quick action areas)
|
89 |
+
// Cache was already cleared; Do not clear it again (save resources); Clear other caches
|
90 |
+
if (get_transient('wpacu_clear_assets_cache_via_link')) {
|
91 |
+
delete_transient('wpacu_clear_assets_cache_via_link');
|
92 |
+
$wpacu_object_data['clear_other_caches'] = true;
|
93 |
+
}
|
94 |
+
/*
|
95 |
+
* [End] Trigger ONLY other plugins'/system caches
|
96 |
+
*/
|
97 |
|
98 |
return $wpacu_object_data;
|
99 |
});
|
211 |
public function stylesAndScriptsForPublic()
|
212 |
{
|
213 |
// Do not print it when an AJAX call is made from the Dashboard
|
214 |
+
if (WPACU_GET_LOADED_ASSETS_ACTION === true) {
|
215 |
return;
|
216 |
}
|
217 |
|
220 |
return;
|
221 |
}
|
222 |
|
223 |
+
// If "Manage in the Front-end" option is not enabled in the plugin's "Settings", there's no point in loading the assets below
|
224 |
+
if (! Main::instance()->frontendShow()) {
|
|
|
225 |
return;
|
226 |
}
|
227 |
|
443 |
// [End] Chosen Script
|
444 |
}
|
445 |
|
446 |
+
// [wpacu_lite]
|
447 |
if ($page === WPACU_PLUGIN_ID . '_assets_manager' || (Misc::getVar('get', 'post') && Misc::getVar('get', 'action') === 'edit')) {
|
448 |
// [Start] SweetAlert
|
449 |
+
add_action('admin_head', static function() {
|
450 |
+
?>
|
451 |
+
<style type="text/css" data-wpacu-own-inline-style="true">
|
452 |
+
.swal-overlay {
|
453 |
+
z-index: 10000000;
|
454 |
+
}
|
455 |
+
|
456 |
+
.swal-text {
|
457 |
+
line-height: 24px;
|
458 |
+
}
|
459 |
+
|
460 |
+
.swal-footer {
|
461 |
+
text-align: center;
|
462 |
+
padding: 13px 16px 20px;
|
463 |
+
}
|
464 |
+
|
465 |
+
.swal-button.swal-button--confirm {
|
466 |
+
background-color: #008f9c;
|
467 |
+
}
|
468 |
+
|
469 |
+
.swal-button.swal-button--confirm:hover {
|
470 |
+
background-color: #006e78;
|
471 |
+
}
|
472 |
+
</style>
|
473 |
+
<?php
|
474 |
+
});
|
|
|
|
|
|
|
475 |
|
476 |
wp_enqueue_script(
|
477 |
WPACU_PLUGIN_ID . '-sweetalert-js',
|
509 |
wp_add_inline_script(WPACU_PLUGIN_ID . '-sweetalert-js', $sweetAlertScriptInline);
|
510 |
// [ENd] SweetAlert
|
511 |
}
|
512 |
+
// [/wpacu_lite]
|
513 |
|
514 |
if (in_array($page, array(WPACU_PLUGIN_ID . '_overview', WPACU_PLUGIN_ID . '_bulk_unloads'))) {
|
515 |
// [Start] Tooltipster Style
|
584 |
* It will force them to refresh whenever there's a change in either of the files
|
585 |
*
|
586 |
* @param $src
|
587 |
+
* @param $handle
|
588 |
*
|
589 |
* @return mixed
|
590 |
*/
|
591 |
+
public function ownAssetLoaderSrc($src, $handle)
|
592 |
+
{
|
593 |
+
if (in_array($handle, array(WPACU_PLUGIN_ID . '-style', WPACU_PLUGIN_ID . '-script'))) {
|
|
|
594 |
$src = str_replace(
|
595 |
+
array('?ver=', '&ver='),
|
596 |
array('?wpacuversion=', '&wpacuversion='),
|
597 |
$src);
|
598 |
}
|
609 |
public function ownAssetLoaderTag($tag, $handle)
|
610 |
{
|
611 |
// Useful in case jQuery library is deferred too (rare situations)
|
612 |
+
if ($handle === WPACU_PLUGIN_ID . '-script') {
|
613 |
$tag = str_replace(' src=', ' data-wpacu-plugin-script defer=\'defer\' src=', $tag);
|
614 |
}
|
615 |
|
classes/Plugin.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
4 |
use WpAssetCleanUp\OptimiseAssets\OptimizeCommon;
|
|
|
|
|
5 |
|
6 |
/**
|
7 |
* Class Plugin
|
@@ -22,6 +24,7 @@ class Plugin
|
|
22 |
public function __construct()
|
23 |
{
|
24 |
register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
|
|
|
25 |
}
|
26 |
|
27 |
/**
|
@@ -34,7 +37,7 @@ class Plugin
|
|
34 |
|
35 |
// [wpacu_lite]
|
36 |
// Admin footer text: Ask the user to review the plugin
|
37 |
-
add_filter('admin_footer_text', array($this, '
|
38 |
// [/wpacu_lite]
|
39 |
|
40 |
// Show "Settings" and "Go Pro" as plugin action links
|
@@ -62,7 +65,7 @@ class Plugin
|
|
62 |
*
|
63 |
* @return string
|
64 |
*/
|
65 |
-
public function
|
66 |
{
|
67 |
if (isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_ID) !== false) {
|
68 |
$text = sprintf(__('Thank you for using %s', 'wp-asset-clean-up'), WPACU_PLUGIN_TITLE.' v'.WPACU_PLUGIN_VERSION)
|
@@ -82,7 +85,7 @@ class Plugin
|
|
82 |
// [/wpacu_lite]
|
83 |
|
84 |
/**
|
85 |
-
*
|
86 |
*/
|
87 |
public function whenActivated()
|
88 |
{
|
@@ -134,6 +137,94 @@ class Plugin
|
|
134 |
}
|
135 |
}
|
136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
/**
|
138 |
* @param $assetTypes
|
139 |
*/
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
4 |
use WpAssetCleanUp\OptimiseAssets\OptimizeCommon;
|
5 |
+
use WpAssetCleanUp\OptimiseAssets\OptimizeCss;
|
6 |
+
use WpAssetCleanUp\OptimiseAssets\OptimizeJs;
|
7 |
|
8 |
/**
|
9 |
* Class Plugin
|
24 |
public function __construct()
|
25 |
{
|
26 |
register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
|
27 |
+
register_deactivation_hook(WPACU_PLUGIN_FILE, array($this, 'whenDeactivated'));
|
28 |
}
|
29 |
|
30 |
/**
|
37 |
|
38 |
// [wpacu_lite]
|
39 |
// Admin footer text: Ask the user to review the plugin
|
40 |
+
add_filter('admin_footer_text', array($this, 'adminFooterText'), 1, 1);
|
41 |
// [/wpacu_lite]
|
42 |
|
43 |
// Show "Settings" and "Go Pro" as plugin action links
|
65 |
*
|
66 |
* @return string
|
67 |
*/
|
68 |
+
public function adminFooterText($text)
|
69 |
{
|
70 |
if (isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_ID) !== false) {
|
71 |
$text = sprintf(__('Thank you for using %s', 'wp-asset-clean-up'), WPACU_PLUGIN_TITLE.' v'.WPACU_PLUGIN_VERSION)
|
85 |
// [/wpacu_lite]
|
86 |
|
87 |
/**
|
88 |
+
* Actions taken when the plugin is activated
|
89 |
*/
|
90 |
public function whenActivated()
|
91 |
{
|
137 |
}
|
138 |
}
|
139 |
|
140 |
+
/**
|
141 |
+
* Actions taken when the plugin is deactivated
|
142 |
+
*/
|
143 |
+
public function whenDeactivated()
|
144 |
+
{
|
145 |
+
// Clear traces of the plugin which are re-generated once the plugin is enabled
|
146 |
+
// This is good when the admin wants to completely uninstall the plugin
|
147 |
+
self::clearAllTransients();
|
148 |
+
self::removeCacheDirWithoutAssets();
|
149 |
+
|
150 |
+
// Clear other plugin's cache (if they are active)
|
151 |
+
OptimizeCommon::clearOtherPluginsCache();
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Removes all plugin's transients, this is usually done when the plugin is deactivated
|
156 |
+
*/
|
157 |
+
public static function clearAllTransients()
|
158 |
+
{
|
159 |
+
global $wpdb;
|
160 |
+
|
161 |
+
// Remove all transients
|
162 |
+
$transientLikes = array(
|
163 |
+
'_transient_wpacu_',
|
164 |
+
'_transient_'.WPACU_PLUGIN_ID.'_'
|
165 |
+
);
|
166 |
+
|
167 |
+
$transientLikesSql = '';
|
168 |
+
|
169 |
+
foreach ($transientLikes as $transientLike) {
|
170 |
+
$transientLikesSql .= " option_name LIKE '".$transientLike."%' OR ";
|
171 |
+
}
|
172 |
+
|
173 |
+
$transientLikesSql = rtrim($transientLikesSql, ' OR ');
|
174 |
+
|
175 |
+
$sqlQuery = <<<SQL
|
176 |
+
SELECT option_name FROM `{$wpdb->prefix}options` WHERE {$transientLikesSql}
|
177 |
+
SQL;
|
178 |
+
$transientsToClear = $wpdb->get_col($sqlQuery);
|
179 |
+
|
180 |
+
foreach ($transientsToClear as $transientToClear) {
|
181 |
+
$transientNameToClear = str_replace('_transient_', '', $transientToClear);
|
182 |
+
delete_transient($transientNameToClear);
|
183 |
+
}
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* This is usually triggered when the plugin is deactivated
|
188 |
+
* If the caching directory doesn't have any CSS/JS left, it will clear itself
|
189 |
+
* The admin might want to clear all traces of the plugin
|
190 |
+
* If the plugin is re-activated, the caching directory will be re-created automatically
|
191 |
+
*/
|
192 |
+
public static function removeCacheDirWithoutAssets()
|
193 |
+
{
|
194 |
+
$pathToCacheDir = WP_CONTENT_DIR . OptimizeCommon::getRelPathPluginCacheDir();
|
195 |
+
$pathToCacheDirCss = WP_CONTENT_DIR . OptimizeCss::getRelPathCssCacheDir();
|
196 |
+
$pathToCacheDirJs = WP_CONTENT_DIR . OptimizeJs::getRelPathJsCacheDir();
|
197 |
+
|
198 |
+
$allCssFiles = glob( $pathToCacheDirCss . '**/*.css' );
|
199 |
+
$allJsFiles = glob( $pathToCacheDirJs . '**/*.js' );
|
200 |
+
|
201 |
+
// Only valid when there's no CSS or JS (not one single file) there
|
202 |
+
if ( count( $allCssFiles ) === 0 && count( $allJsFiles ) === 0 ) {
|
203 |
+
$dirItems = new \RecursiveDirectoryIterator( $pathToCacheDir );
|
204 |
+
|
205 |
+
$allDirs = array($pathToCacheDir);
|
206 |
+
|
207 |
+
// First, remove the files
|
208 |
+
foreach ( new \RecursiveIteratorIterator( $dirItems, \RecursiveIteratorIterator::SELF_FIRST,
|
209 |
+
\RecursiveIteratorIterator::CATCH_GET_CHILD ) as $item) {
|
210 |
+
if (is_dir($item)) {
|
211 |
+
$allDirs[] = $item;
|
212 |
+
} else {
|
213 |
+
@unlink($item);
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
usort($allDirs, static function($a, $b) {
|
218 |
+
return strlen($b) - strlen($a);
|
219 |
+
});
|
220 |
+
|
221 |
+
// Then, remove the empty dirs in descending order (up to the root)
|
222 |
+
foreach ($allDirs as $dir) {
|
223 |
+
@rmdir($dir);
|
224 |
+
}
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
/**
|
229 |
* @param $assetTypes
|
230 |
*/
|
classes/Settings.php
CHANGED
@@ -105,12 +105,12 @@ class Settings
|
|
105 |
|
106 |
'disable_emojis',
|
107 |
'disable_oembed',
|
108 |
-
'disable_dashicons_for_guests',
|
109 |
|
110 |
// Stored in 'wpassetcleanup_global_unload' option
|
111 |
-
'
|
112 |
-
|
113 |
-
'
|
|
|
114 |
|
115 |
// <head> CleanUp
|
116 |
'remove_rsd_link',
|
@@ -268,7 +268,14 @@ class Settings
|
|
268 |
|
269 |
if (Misc::getVar('get', 'page') === WPACU_PLUGIN_ID . '_settings') {
|
270 |
add_action('wpacu_admin_notices', array($this, 'notices'));
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
|
|
|
|
272 |
}
|
273 |
|
274 |
/**
|
@@ -335,10 +342,17 @@ class Settings
|
|
335 |
|
336 |
$globalUnloadList = Main::instance()->getGlobalUnload();
|
337 |
|
|
|
|
|
|
|
|
|
|
|
338 |
if (in_array('wp-block-library', $globalUnloadList['styles'])) {
|
339 |
$data['disable_wp_block_library'] = 1;
|
340 |
}
|
|
|
341 |
|
|
|
342 |
if (in_array('jquery-migrate', $globalUnloadList['scripts'])) {
|
343 |
$data['disable_jquery_migrate'] = 1;
|
344 |
}
|
@@ -346,6 +360,7 @@ class Settings
|
|
346 |
if (in_array('comment-reply', $globalUnloadList['scripts'])) {
|
347 |
$data['disable_comment_reply'] = 1;
|
348 |
}
|
|
|
349 |
|
350 |
$data['is_optimize_css_enabled_by_other_party'] = OptimizeCss::isOptimizeCssEnabledByOtherParty();
|
351 |
$data['is_optimize_js_enabled_by_other_party'] = OptimizeJs::isOptimizeJsEnabledByOtherParty();
|
@@ -450,7 +465,7 @@ class Settings
|
|
450 |
{
|
451 |
$settings = $this->getAll();
|
452 |
$settings[$key] = $value;
|
453 |
-
$this->update($settings, false
|
454 |
}
|
455 |
|
456 |
/**
|
@@ -460,7 +475,7 @@ class Settings
|
|
460 |
{
|
461 |
$settings = $this->getAll();
|
462 |
$settings[$key] = '';
|
463 |
-
$this->update($settings, false
|
464 |
}
|
465 |
|
466 |
/**
|
@@ -508,9 +523,8 @@ class Settings
|
|
508 |
/**
|
509 |
* @param $settings
|
510 |
* @param bool $redirectAfterUpdate
|
511 |
-
* @param bool $clearCache
|
512 |
*/
|
513 |
-
public function update($settings, $redirectAfterUpdate = true
|
514 |
{
|
515 |
$settingsNotNull = array();
|
516 |
|
@@ -538,12 +552,14 @@ class Settings
|
|
538 |
// The following are only triggered IF the user submitted the form from "Settings" area
|
539 |
if (Misc::getVar('post', 'wpacu_settings_nonce')) {
|
540 |
// "Site-Wide Common Unloads" tab
|
541 |
-
$disableGutenbergCssBlockLibrary = isset($_POST[WPACU_PLUGIN_ID . '_global_unloads']['disable_wp_block_library']);
|
542 |
-
$disableJQueryMigrate
|
543 |
-
$disableCommentReply
|
|
|
544 |
|
545 |
$this->updateSiteWideRuleForCommonAssets(array(
|
546 |
'wp_block_library' => $disableGutenbergCssBlockLibrary,
|
|
|
547 |
'jquery_migrate' => $disableJQueryMigrate,
|
548 |
'comment_reply' => $disableCommentReply
|
549 |
));
|
@@ -551,14 +567,21 @@ class Settings
|
|
551 |
// Some validation
|
552 |
$settings['local_fonts_preload_files'] = strip_tags($settings['local_fonts_preload_files']);
|
553 |
$settings['google_fonts_preload_files'] = strip_tags($settings['google_fonts_preload_files']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
554 |
}
|
555 |
|
556 |
Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode(Misc::filterList($settings)));
|
557 |
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
}
|
562 |
|
563 |
if ($redirectAfterUpdate) {
|
564 |
$this->redirectAfterUpdate();
|
@@ -573,14 +596,25 @@ class Settings
|
|
573 |
$wpacuUpdate = new Update;
|
574 |
|
575 |
$disableGutenbergCssBlockLibrary = $unloadsList['wp_block_library'];
|
576 |
-
$disableJQueryMigrate
|
577 |
-
$disableCommentReply
|
|
|
578 |
|
579 |
/*
|
580 |
* Add element(s) to the global unload rules
|
581 |
*/
|
582 |
-
if ($disableGutenbergCssBlockLibrary) {
|
583 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
584 |
}
|
585 |
|
586 |
if ($disableJQueryMigrate || $disableCommentReply) {
|
@@ -602,10 +636,23 @@ class Settings
|
|
602 |
/*
|
603 |
* Remove element(s) from the global unload rules
|
604 |
*/
|
605 |
-
|
606 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
}
|
608 |
|
|
|
609 |
if (! $disableJQueryMigrate || ! $disableCommentReply) {
|
610 |
$removeFromUnloadList = array();
|
611 |
|
@@ -646,4 +693,58 @@ class Settings
|
|
646 |
wp_redirect(add_query_arg($wpacuQueryString, admin_url('admin.php')));
|
647 |
exit();
|
648 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
649 |
}
|
105 |
|
106 |
'disable_emojis',
|
107 |
'disable_oembed',
|
|
|
108 |
|
109 |
// Stored in 'wpassetcleanup_global_unload' option
|
110 |
+
'disable_dashicons_for_guests', // CSS
|
111 |
+
'disable_wp_block_library', // CSS
|
112 |
+
'disable_jquery_migrate', // JS
|
113 |
+
'disable_comment_reply', // JS
|
114 |
|
115 |
// <head> CleanUp
|
116 |
'remove_rsd_link',
|
268 |
|
269 |
if (Misc::getVar('get', 'page') === WPACU_PLUGIN_ID . '_settings') {
|
270 |
add_action('wpacu_admin_notices', array($this, 'notices'));
|
271 |
+
|
272 |
+
if (function_exists('curl_init')) {
|
273 |
+
// Check if the website supports HTTP/2 protocol and based on that advise the admin that combining CSS/JS is likely unnecessary
|
274 |
+
add_action( 'admin_footer', array($this, 'ajaxCheckHttp2ProtocolSupportJsCode') );
|
275 |
+
}
|
276 |
}
|
277 |
+
|
278 |
+
add_action( 'wp_ajax_' . WPACU_PLUGIN_ID . '_check_http2_protocol_support', array( $this, 'ajaxCheckHttp2ProtocolSupport' ) );
|
279 |
}
|
280 |
|
281 |
/**
|
342 |
|
343 |
$globalUnloadList = Main::instance()->getGlobalUnload();
|
344 |
|
345 |
+
// [CSS]
|
346 |
+
if (in_array('dashicons', $globalUnloadList['styles'])) {
|
347 |
+
$data['disable_dashicons_for_guests'] = 1;
|
348 |
+
}
|
349 |
+
|
350 |
if (in_array('wp-block-library', $globalUnloadList['styles'])) {
|
351 |
$data['disable_wp_block_library'] = 1;
|
352 |
}
|
353 |
+
// [/CSS]
|
354 |
|
355 |
+
// [JS]
|
356 |
if (in_array('jquery-migrate', $globalUnloadList['scripts'])) {
|
357 |
$data['disable_jquery_migrate'] = 1;
|
358 |
}
|
360 |
if (in_array('comment-reply', $globalUnloadList['scripts'])) {
|
361 |
$data['disable_comment_reply'] = 1;
|
362 |
}
|
363 |
+
// [/JS]
|
364 |
|
365 |
$data['is_optimize_css_enabled_by_other_party'] = OptimizeCss::isOptimizeCssEnabledByOtherParty();
|
366 |
$data['is_optimize_js_enabled_by_other_party'] = OptimizeJs::isOptimizeJsEnabledByOtherParty();
|
465 |
{
|
466 |
$settings = $this->getAll();
|
467 |
$settings[$key] = $value;
|
468 |
+
$this->update($settings, false);
|
469 |
}
|
470 |
|
471 |
/**
|
475 |
{
|
476 |
$settings = $this->getAll();
|
477 |
$settings[$key] = '';
|
478 |
+
$this->update($settings, false);
|
479 |
}
|
480 |
|
481 |
/**
|
523 |
/**
|
524 |
* @param $settings
|
525 |
* @param bool $redirectAfterUpdate
|
|
|
526 |
*/
|
527 |
+
public function update($settings, $redirectAfterUpdate = true)
|
528 |
{
|
529 |
$settingsNotNull = array();
|
530 |
|
552 |
// The following are only triggered IF the user submitted the form from "Settings" area
|
553 |
if (Misc::getVar('post', 'wpacu_settings_nonce')) {
|
554 |
// "Site-Wide Common Unloads" tab
|
555 |
+
$disableGutenbergCssBlockLibrary = isset( $_POST[ WPACU_PLUGIN_ID . '_global_unloads' ]['disable_wp_block_library'] );
|
556 |
+
$disableJQueryMigrate = isset( $_POST[ WPACU_PLUGIN_ID . '_global_unloads' ]['disable_jquery_migrate'] );
|
557 |
+
$disableCommentReply = isset( $_POST[ WPACU_PLUGIN_ID . '_global_unloads' ]['disable_comment_reply'] );
|
558 |
+
$disableDashiconsForGuests = isset( $_POST[ WPACU_PLUGIN_ID . '_global_unloads' ]['disable_dashicons_for_guests'] );
|
559 |
|
560 |
$this->updateSiteWideRuleForCommonAssets(array(
|
561 |
'wp_block_library' => $disableGutenbergCssBlockLibrary,
|
562 |
+
'dashicons' => $disableDashiconsForGuests,
|
563 |
'jquery_migrate' => $disableJQueryMigrate,
|
564 |
'comment_reply' => $disableCommentReply
|
565 |
));
|
567 |
// Some validation
|
568 |
$settings['local_fonts_preload_files'] = strip_tags($settings['local_fonts_preload_files']);
|
569 |
$settings['google_fonts_preload_files'] = strip_tags($settings['google_fonts_preload_files']);
|
570 |
+
|
571 |
+
// Apply 'Ignore dependency rule and keep the "children" loaded' for "dashicons" handle if Ninja Forms is active
|
572 |
+
// because "nf-display" handle depends on the Dashicons and it could break the forms' styling
|
573 |
+
if ($disableDashiconsForGuests && Misc::isPluginActive('ninja-forms/ninja-forms.php')) {
|
574 |
+
$mainVarToUse = array();
|
575 |
+
$mainVarToUse['wpacu_ignore_child']['styles']['dashicons'] = 1;
|
576 |
+
Update::updateIgnoreChild($mainVarToUse);
|
577 |
+
}
|
578 |
}
|
579 |
|
580 |
Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode(Misc::filterList($settings)));
|
581 |
|
582 |
+
// New Plugin Update (since 6 April 2020): the cache is cleared after page load via AJAX
|
583 |
+
// This is done in case the cache directory is large and more time is required to clear it
|
584 |
+
// This offers the admin a better user experience (no one likes to wait too much until a page is reloaded, which sometimes could cause confusion)
|
|
|
585 |
|
586 |
if ($redirectAfterUpdate) {
|
587 |
$this->redirectAfterUpdate();
|
596 |
$wpacuUpdate = new Update;
|
597 |
|
598 |
$disableGutenbergCssBlockLibrary = $unloadsList['wp_block_library'];
|
599 |
+
$disableJQueryMigrate = $unloadsList['jquery_migrate'];
|
600 |
+
$disableCommentReply = $unloadsList['comment_reply'];
|
601 |
+
$disableDashiconsForGuests = $unloadsList['dashicons'];
|
602 |
|
603 |
/*
|
604 |
* Add element(s) to the global unload rules
|
605 |
*/
|
606 |
+
if ($disableGutenbergCssBlockLibrary || $disableDashiconsForGuests) {
|
607 |
+
$unloadList = array();
|
608 |
+
|
609 |
+
if ($disableGutenbergCssBlockLibrary) {
|
610 |
+
$unloadList[] = 'wp-block-library';
|
611 |
+
}
|
612 |
+
|
613 |
+
if ($disableDashiconsForGuests) {
|
614 |
+
$unloadList[] = 'dashicons';
|
615 |
+
}
|
616 |
+
|
617 |
+
$wpacuUpdate->saveToEverywhereUnloads($unloadList);
|
618 |
}
|
619 |
|
620 |
if ($disableJQueryMigrate || $disableCommentReply) {
|
636 |
/*
|
637 |
* Remove element(s) from the global unload rules
|
638 |
*/
|
639 |
+
|
640 |
+
// For Stylesheets (.CSS)
|
641 |
+
if (! $disableGutenbergCssBlockLibrary || ! $disableDashiconsForGuests) {
|
642 |
+
$removeFromUnloadList = array();
|
643 |
+
|
644 |
+
if (! $disableGutenbergCssBlockLibrary) {
|
645 |
+
$removeFromUnloadList['wp-block-library'] = 'remove';
|
646 |
+
}
|
647 |
+
|
648 |
+
if (! $disableDashiconsForGuests) {
|
649 |
+
$removeFromUnloadList['dashicons'] = 'remove';
|
650 |
+
}
|
651 |
+
|
652 |
+
$wpacuUpdate->removeEverywhereUnloads($removeFromUnloadList);
|
653 |
}
|
654 |
|
655 |
+
// For JavaScript (.JS)
|
656 |
if (! $disableJQueryMigrate || ! $disableCommentReply) {
|
657 |
$removeFromUnloadList = array();
|
658 |
|
693 |
wp_redirect(add_query_arg($wpacuQueryString, admin_url('admin.php')));
|
694 |
exit();
|
695 |
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
*
|
699 |
+
*/
|
700 |
+
public function ajaxCheckHttp2ProtocolSupport()
|
701 |
+
{
|
702 |
+
if (! isset($_POST['action']) || ! Menu::userCanManageAssets()) {
|
703 |
+
return;
|
704 |
+
}
|
705 |
+
|
706 |
+
$ch = curl_init();
|
707 |
+
|
708 |
+
curl_setopt_array($ch, array(
|
709 |
+
CURLOPT_URL => get_site_url(),
|
710 |
+
CURLOPT_HEADER => true,
|
711 |
+
CURLOPT_NOBODY => true,
|
712 |
+
CURLOPT_RETURNTRANSFER => true,
|
713 |
+
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0, // cURL will attempt to make an HTTP/2.0 request (can downgrade to HTTP/1.1)
|
714 |
+
));
|
715 |
+
|
716 |
+
$response = curl_exec($ch);
|
717 |
+
|
718 |
+
if ($response !== false && strpos($response, 'HTTP/2') === 0) {
|
719 |
+
echo 1;
|
720 |
+
} else {
|
721 |
+
echo curl_error($ch); // something else happened causing the request to fail
|
722 |
+
}
|
723 |
+
|
724 |
+
curl_close($ch);
|
725 |
+
|
726 |
+
exit();
|
727 |
+
}
|
728 |
+
|
729 |
+
/**
|
730 |
+
*
|
731 |
+
*/
|
732 |
+
public function ajaxCheckHttp2ProtocolSupportJsCode()
|
733 |
+
{
|
734 |
+
?>
|
735 |
+
<script type="text/javascript">
|
736 |
+
jQuery(document).ready(function($) {
|
737 |
+
$.post('<?php echo admin_url('admin-ajax.php'); ?>', {
|
738 |
+
'action': '<?php echo WPACU_PLUGIN_ID; ?>_check_http2_protocol_support'
|
739 |
+
}, function (result) {
|
740 |
+
if (result === '1') {
|
741 |
+
$('.wpacu_http2_protocol_is_supported').removeClass('wpacu_hide');
|
742 |
+
} else {
|
743 |
+
$('.wpacu_verify_http2_protocol').removeClass('wpacu_hide');
|
744 |
+
}
|
745 |
+
});
|
746 |
+
});
|
747 |
+
</script>
|
748 |
+
<?php
|
749 |
+
}
|
750 |
}
|
classes/Tips.php
CHANGED
@@ -33,6 +33,16 @@ HTML;
|
|
33 |
This CSS file is related to "Contact Form 7" and if you don't load any form on this page (e.g. you use it only on pages such as Contact, Make a booking etc.), then you can safely unload it (e.g. side-wide and make exceptions on the few pages you use it).
|
34 |
HTML;
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
// JavaScript list
|
37 |
$this->list['js']['wp-embed'] = <<<HTML
|
38 |
To completely disable oEmbeds, you can use "Disable oEmbed (Embeds) Site-Wide" from plugin's "Settings" -> "Site-Wide Common Unloads". It will also prevent this file from loading in the first place and hide it from this location.
|
33 |
This CSS file is related to "Contact Form 7" and if you don't load any form on this page (e.g. you use it only on pages such as Contact, Make a booking etc.), then you can safely unload it (e.g. side-wide and make exceptions on the few pages you use it).
|
34 |
HTML;
|
35 |
|
36 |
+
$this->list['css']['duplicate-post'] = <<<HTML
|
37 |
+
This CSS file is meant to style the "Duplicate Post" plugin's menu within the top admin bar and it's loading when the user (with the right privileges) is logged-in. It's NOT meant to load for the guests (non logged-in visitors). You can leave it loaded.
|
38 |
+
HTML;
|
39 |
+
|
40 |
+
$this->list['css']['dashicons'] = <<<HTML
|
41 |
+
To avoid breaking admin bar's styling which relies on the Wordpress Dashicons, any unload rule set for this handle will be ignored IF the user is logged-in and the admin bar is showing up.
|
42 |
+
HTML;
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
// JavaScript list
|
47 |
$this->list['js']['wp-embed'] = <<<HTML
|
48 |
To completely disable oEmbeds, you can use "Disable oEmbed (Embeds) Site-Wide" from plugin's "Settings" -> "Site-Wide Common Unloads". It will also prevent this file from loading in the first place and hide it from this location.
|
classes/Tools.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
4 |
use WpAssetCleanUp\OptimiseAssets\OptimizeCommon;
|
|
|
|
|
5 |
use WpAssetCleanUp\ThirdParty\Browser;
|
6 |
|
7 |
/**
|
@@ -30,6 +32,11 @@ class Tools
|
|
30 |
*/
|
31 |
public $licenseDataRemoved = false;
|
32 |
|
|
|
|
|
|
|
|
|
|
|
33 |
/**
|
34 |
* @var array
|
35 |
*/
|
@@ -111,8 +118,9 @@ class Tools
|
|
111 |
return;
|
112 |
}
|
113 |
|
114 |
-
$this->resetChoice
|
115 |
-
$this->licenseDataRemoved
|
|
|
116 |
|
117 |
delete_transient('wpacu_reset_done');
|
118 |
|
@@ -386,7 +394,7 @@ class Tools
|
|
386 |
|
387 |
$return .= 'Disable Emojis (site-wide)? '. (($settings['disable_emojis'] == 1) ? 'Yes' : 'No') . "\n";
|
388 |
$return .= 'Disable oEmbed (Embeds) (site-wide)? '. (($settings['disable_oembed'] == 1) ? 'Yes' : 'No') . "\n";
|
389 |
-
$return .= 'Disable Dashicons
|
390 |
$return .= 'Disable Gutenberg CSS Block Editor (site-wide)? '. (($settings['disable_wp_block_library'] == 1) ? 'Yes' : 'No') . "\n";
|
391 |
$return .= 'Disable jQuery Migrate (site-wide)? '. (($settings['disable_jquery_migrate'] == 1) ? 'Yes' : 'No') . "\n";
|
392 |
$return .= 'Disable Comment Reply (site-wide)? '. (($settings['disable_comment_reply'] == 1) ? 'Yes' : 'No') . "\n\n";
|
@@ -662,6 +670,24 @@ SQL;
|
|
662 |
$this->licenseDataRemoved = true;
|
663 |
}
|
664 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
665 |
// Remove Asset CleanUp (Pro)'s cache transients
|
666 |
$this->clearAllCacheTransients();
|
667 |
}
|
@@ -676,8 +702,10 @@ SQL;
|
|
676 |
|
677 |
set_transient('wpacu_reset_done',
|
678 |
json_encode(array(
|
679 |
-
|
680 |
-
|
|
|
|
|
681 |
),
|
682 |
30
|
683 |
);
|
@@ -733,7 +761,11 @@ SQL;
|
|
733 |
$msg = __('Everything was reset (including settings, individual & bulk unloads, load exceptions) to the same point it was when you first activated the plugin.', 'wp-asset-clean-up');
|
734 |
|
735 |
if ($this->licenseDataRemoved) {
|
736 |
-
$msg .= '<span id="wpacu-license-data-removed-msg">'.__('
|
|
|
|
|
|
|
|
|
737 |
}
|
738 |
}
|
739 |
?>
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
4 |
use WpAssetCleanUp\OptimiseAssets\OptimizeCommon;
|
5 |
+
use WpAssetCleanUp\OptimiseAssets\OptimizeCss;
|
6 |
+
use WpAssetCleanUp\OptimiseAssets\OptimizeJs;
|
7 |
use WpAssetCleanUp\ThirdParty\Browser;
|
8 |
|
9 |
/**
|
32 |
*/
|
33 |
public $licenseDataRemoved = false;
|
34 |
|
35 |
+
/**
|
36 |
+
* @var bool
|
37 |
+
*/
|
38 |
+
public $cachedAssetsRemoved = false;
|
39 |
+
|
40 |
/**
|
41 |
* @var array
|
42 |
*/
|
118 |
return;
|
119 |
}
|
120 |
|
121 |
+
$this->resetChoice = isset($resetDoneInfoArray['reset_choice']) ? $resetDoneInfoArray['reset_choice'] : '';
|
122 |
+
$this->licenseDataRemoved = isset($resetDoneInfoArray['license_data_removed']) ? $resetDoneInfoArray['license_data_removed'] : '';
|
123 |
+
$this->cachedAssetsRemoved = isset($resetDoneInfoArray['cached_assets_removed']) ? $resetDoneInfoArray['cached_assets_removed'] : '';
|
124 |
|
125 |
delete_transient('wpacu_reset_done');
|
126 |
|
394 |
|
395 |
$return .= 'Disable Emojis (site-wide)? '. (($settings['disable_emojis'] == 1) ? 'Yes' : 'No') . "\n";
|
396 |
$return .= 'Disable oEmbed (Embeds) (site-wide)? '. (($settings['disable_oembed'] == 1) ? 'Yes' : 'No') . "\n";
|
397 |
+
$return .= 'Disable Dashicons if Toolbar (top admin bar) is not showing (site-wide)? '. (($settings['disable_dashicons_for_guests'] == 1) ? 'Yes' : 'No') . "\n";
|
398 |
$return .= 'Disable Gutenberg CSS Block Editor (site-wide)? '. (($settings['disable_wp_block_library'] == 1) ? 'Yes' : 'No') . "\n";
|
399 |
$return .= 'Disable jQuery Migrate (site-wide)? '. (($settings['disable_jquery_migrate'] == 1) ? 'Yes' : 'No') . "\n";
|
400 |
$return .= 'Disable Comment Reply (site-wide)? '. (($settings['disable_comment_reply'] == 1) ? 'Yes' : 'No') . "\n\n";
|
670 |
$this->licenseDataRemoved = true;
|
671 |
}
|
672 |
|
673 |
+
// Remove all cached CSS/JS files?
|
674 |
+
if (Misc::getVar('post', 'wpacu-remove-cache-assets') !== '') {
|
675 |
+
$pathToCacheDirCss = WP_CONTENT_DIR . OptimizeCss::getRelPathCssCacheDir();
|
676 |
+
$pathToCacheDirJs = WP_CONTENT_DIR . OptimizeJs::getRelPathJsCacheDir();
|
677 |
+
|
678 |
+
$allCssFiles = glob( $pathToCacheDirCss . '**/*.css' );
|
679 |
+
$allJsFiles = glob( $pathToCacheDirJs . '**/*.js' );
|
680 |
+
$allCachedAssets = array_merge($allCssFiles, $allJsFiles);
|
681 |
+
|
682 |
+
if (! empty($allCachedAssets)) {
|
683 |
+
foreach ($allCachedAssets as $cachedAssetFile) {
|
684 |
+
@unlink($cachedAssetFile);
|
685 |
+
}
|
686 |
+
}
|
687 |
+
|
688 |
+
$this->cachedAssetsRemoved = true;
|
689 |
+
}
|
690 |
+
|
691 |
// Remove Asset CleanUp (Pro)'s cache transients
|
692 |
$this->clearAllCacheTransients();
|
693 |
}
|
702 |
|
703 |
set_transient('wpacu_reset_done',
|
704 |
json_encode(array(
|
705 |
+
'reset_choice' => $this->resetChoice,
|
706 |
+
'license_data_removed' => $this->licenseDataRemoved,
|
707 |
+
'cached_assets_removed' => $this->cachedAssetsRemoved
|
708 |
+
)
|
709 |
),
|
710 |
30
|
711 |
);
|
761 |
$msg = __('Everything was reset (including settings, individual & bulk unloads, load exceptions) to the same point it was when you first activated the plugin.', 'wp-asset-clean-up');
|
762 |
|
763 |
if ($this->licenseDataRemoved) {
|
764 |
+
$msg .= ' <span id="wpacu-license-data-removed-msg">'.__('The license information was also removed.', 'wp-asset-clean-up').'</span>';
|
765 |
+
}
|
766 |
+
|
767 |
+
if ($this->cachedAssetsRemoved) {
|
768 |
+
$msg .= ' <span id="wpacu-cached-assets-removed-msg">'.__('The cached CSS/JS files were also removed.', 'wp-asset-clean-up').'</span>';
|
769 |
}
|
770 |
}
|
771 |
?>
|
classes/Update.php
CHANGED
@@ -65,7 +65,7 @@ HTML;
|
|
65 |
add_action('save_post', array($this, 'savePost'));
|
66 |
|
67 |
// Clear cache (via AJAX) only if the user is logged-in (with the right privileges)
|
68 |
-
add_action('wp_ajax_' . WPACU_PLUGIN_ID . '_clear_cache', array($this, 'ajaxClearCache'));
|
69 |
}
|
70 |
|
71 |
/**
|
@@ -155,8 +155,7 @@ HTML;
|
|
155 |
self::updateIgnoreChild();
|
156 |
|
157 |
self::clearTransients();
|
158 |
-
|
159 |
-
}
|
160 |
|
161 |
/**
|
162 |
*
|
@@ -295,9 +294,6 @@ HTML;
|
|
295 |
$this->saveToBulkUnloads();
|
296 |
$this->removeBulkUnloads($post->post_type);
|
297 |
|
298 |
-
// Any positions changed?
|
299 |
-
// For Pro Only
|
300 |
-
|
301 |
// Any preloads
|
302 |
Preloads::updatePreloads();
|
303 |
|
@@ -312,7 +308,11 @@ HTML;
|
|
312 |
|
313 |
self::clearTransients();
|
314 |
|
315 |
-
//
|
|
|
|
|
|
|
|
|
316 |
// To avoid the usage of too much memory (good for shared environments) and avoid any memory related errors showing up to the user which could be confusing
|
317 |
}
|
318 |
|
@@ -896,15 +896,21 @@ HTML;
|
|
896 |
}
|
897 |
|
898 |
/**
|
899 |
-
*
|
900 |
*/
|
901 |
-
public static function updateIgnoreChild()
|
902 |
{
|
903 |
-
|
904 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
905 |
}
|
906 |
|
907 |
-
if (! isset($
|
908 |
return;
|
909 |
}
|
910 |
|
@@ -917,8 +923,8 @@ HTML;
|
|
917 |
$existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
|
918 |
$existingList = $existingListData['list'];
|
919 |
|
920 |
-
if (isset($
|
921 |
-
foreach ($
|
922 |
$styleVal = trim($styleVal);
|
923 |
|
924 |
if ($styleVal === '' && isset($existingList['styles'][$globalKey][$styleHandle])) {
|
@@ -929,8 +935,8 @@ HTML;
|
|
929 |
}
|
930 |
}
|
931 |
|
932 |
-
if (isset($
|
933 |
-
foreach ($
|
934 |
$scriptVal = trim($scriptVal); // should be '1' (meaning it's true)
|
935 |
|
936 |
if ($scriptVal === '' && isset($existingList['scripts'][$globalKey][$scriptHandle])) {
|
@@ -961,7 +967,7 @@ HTML;
|
|
961 |
$existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
|
962 |
$existingList = $existingListData['list'];
|
963 |
|
964 |
-
// $
|
965 |
foreach ($assetList as $assetKey => $assetDataHandleList) {
|
966 |
if (empty($assetDataHandleList) || ! in_array($assetKey, array('styles', 'scripts'))) {
|
967 |
continue;
|
@@ -998,5 +1004,7 @@ HTML;
|
|
998 |
}
|
999 |
|
1000 |
OptimizeCommon::clearAllCache();
|
|
|
|
|
1001 |
}
|
1002 |
}
|
65 |
add_action('save_post', array($this, 'savePost'));
|
66 |
|
67 |
// Clear cache (via AJAX) only if the user is logged-in (with the right privileges)
|
68 |
+
add_action('wp_ajax_' . WPACU_PLUGIN_ID . '_clear_cache', array($this, 'ajaxClearCache'), PHP_INT_MAX);
|
69 |
}
|
70 |
|
71 |
/**
|
155 |
self::updateIgnoreChild();
|
156 |
|
157 |
self::clearTransients();
|
158 |
+
}
|
|
|
159 |
|
160 |
/**
|
161 |
*
|
294 |
$this->saveToBulkUnloads();
|
295 |
$this->removeBulkUnloads($post->post_type);
|
296 |
|
|
|
|
|
|
|
297 |
// Any preloads
|
298 |
Preloads::updatePreloads();
|
299 |
|
308 |
|
309 |
self::clearTransients();
|
310 |
|
311 |
+
// In case Combine CSS/JS was enabled and there are traces of JSON files in the caching directory
|
312 |
+
// Clear them if the caching timing expired as they are not relevant anymore and reduce the disk's space
|
313 |
+
OptimizeCommon::clearJsonStorageForPost($postId, true);
|
314 |
+
|
315 |
+
// Note: Cache is cleared (except the JSON files related to CSS/JS combine option) after the post/page is updated via a separate AJAX call
|
316 |
// To avoid the usage of too much memory (good for shared environments) and avoid any memory related errors showing up to the user which could be confusing
|
317 |
}
|
318 |
|
896 |
}
|
897 |
|
898 |
/**
|
899 |
+
* @param array $mainVarToUse
|
900 |
*/
|
901 |
+
public static function updateIgnoreChild($mainVarToUse = array())
|
902 |
{
|
903 |
+
// No $mainVarToUse passed? Then it's a $_POST
|
904 |
+
// Check if $_POST is empty via Misc::isValidRequest()
|
905 |
+
if (empty($mainVarToUse)) {
|
906 |
+
if (! Misc::isValidRequest('post', 'wpacu_ignore_child')) {
|
907 |
+
return;
|
908 |
+
}
|
909 |
+
|
910 |
+
$mainVarToUse = $_POST;
|
911 |
}
|
912 |
|
913 |
+
if (! isset($mainVarToUse['wpacu_ignore_child']['styles']) && ! isset($mainVarToUse['wpacu_ignore_child']['scripts'])) {
|
914 |
return;
|
915 |
}
|
916 |
|
923 |
$existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
|
924 |
$existingList = $existingListData['list'];
|
925 |
|
926 |
+
if (isset($mainVarToUse['wpacu_ignore_child']['styles']) && ! empty($mainVarToUse['wpacu_ignore_child']['styles'])) {
|
927 |
+
foreach ($mainVarToUse['wpacu_ignore_child']['styles'] as $styleHandle => $styleVal) {
|
928 |
$styleVal = trim($styleVal);
|
929 |
|
930 |
if ($styleVal === '' && isset($existingList['styles'][$globalKey][$styleHandle])) {
|
935 |
}
|
936 |
}
|
937 |
|
938 |
+
if (isset($mainVarToUse['wpacu_ignore_child']['scripts']) && ! empty($mainVarToUse['wpacu_ignore_child']['scripts'])) {
|
939 |
+
foreach ($mainVarToUse['wpacu_ignore_child']['scripts'] as $scriptHandle => $scriptVal) {
|
940 |
$scriptVal = trim($scriptVal); // should be '1' (meaning it's true)
|
941 |
|
942 |
if ($scriptVal === '' && isset($existingList['scripts'][$globalKey][$scriptHandle])) {
|
967 |
$existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
|
968 |
$existingList = $existingListData['list'];
|
969 |
|
970 |
+
// $assetKey could be 'styles' or 'scripts'
|
971 |
foreach ($assetList as $assetKey => $assetDataHandleList) {
|
972 |
if (empty($assetDataHandleList) || ! in_array($assetKey, array('styles', 'scripts'))) {
|
973 |
continue;
|
1004 |
}
|
1005 |
|
1006 |
OptimizeCommon::clearAllCache();
|
1007 |
+
|
1008 |
+
exit();
|
1009 |
}
|
1010 |
}
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: gabelivan
|
|
3 |
Tags: minify css, minify javascript, defer css javascript, page speed, dequeue, performance
|
4 |
Donate link: https://www.gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
|
5 |
Requires at least: 4.5
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 1.3.6.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
@@ -179,6 +179,25 @@ With the recently released "Test Mode" feature, you can safely unload assets on
|
|
179 |
4. Homepage CSS & JS Management (List sorted by location)
|
180 |
|
181 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
= 1.3.6.0 =
|
183 |
* Improved the speed of the generated & printed combined CSS/JS assets by ~30ms (depending on the hosting package and the PHP version used) when the HTML source is altered by avoiding extra useless verifications of the HTML output
|
184 |
* When managing the assets, make sure to show "before" and "after" content (so the user is aware how is that inline tag generated) associated with a handle too (not just the "data" one added via wp_localize_script())
|
3 |
Tags: minify css, minify javascript, defer css javascript, page speed, dequeue, performance
|
4 |
Donate link: https://www.gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
|
5 |
Requires at least: 4.5
|
6 |
+
Tested up to: 5.4
|
7 |
+
Stable tag: 1.3.6.1
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
179 |
4. Homepage CSS & JS Management (List sorted by location)
|
180 |
|
181 |
== Changelog ==
|
182 |
+
= 1.3.6.1 =
|
183 |
+
* Increased the speed of unloading (dequeueing) styles & scripts by ~40ms (caching is used to avoid calling the same PHP code during several action hooks)
|
184 |
+
* Higher accuracy in stripping 'before' and 'after' associated inline SCRIPT after adding the content to the JS combined file
|
185 |
+
* When combining JS content, make sure to extract the right relative path to make it combinable if a local file is loaded and it starts with // in the "src" attribute
|
186 |
+
* Show confirmation message when unloading specific files that are very likely needed such as jQuery, Backbone & Underscore libraries
|
187 |
+
* Alert the admin when there are unload rules from inactive plugins on pages such as "Bulk Changes" & "Overview"
|
188 |
+
* Keep Dashicons loaded if the toolbar (top admin bar) is shown
|
189 |
+
* Prevent front-end optimisation code from triggering while the CSS/JS is fetched, thus saving resources and improving the speed of retrieving the assets
|
190 |
+
* Optimised the plugin to use less calls to MinifyCss & MinifyJs for hardcoded assets reducing considerably the resources used (sometimes timeout errors are generated in hosts with a lower resources allocated)
|
191 |
+
* When a plugin page (e.g. "Settings") is visited within the Dashboard, trigger a maintenance script that will remove inactive handle data information (from handles without any rule attached to it, often from deleted plugins no longer used) from the "wpassetcleanup_global_data" option value (from `options` table), thus making it lighter
|
192 |
+
* In many hosting environments, the total number of fields submitted is maximum 1000 (set by default in php.ini); The total number of fields that were sent have been reduced (e.g. hardcoded assets information) as they are only enabled via JavaScript whenever they are relevant to make sure there are less fields sent (to void partial submit and missing data as a result in case the admin has difficulties increase the default 1000 in php.ini)
|
193 |
+
* Do not automatically store hardcoded assets info when the CSS/JS manager list is loaded; Instead, store it IF there's a rule attached to it in order to make the contents of the "wpassetcleanup_global_data" option smaller in size (for a lighter database & faster MySQL queries)
|
194 |
+
* Clear plugin's cache via AJAX after "Settings" is updated within the Dashboard (this is more effective then clearing it when the page reloads as it could take some time to clear the cache if there are lots of files stored there)
|
195 |
+
* Whenever Asset CleanUp's caching is cleared, the Autoptimize (if enabled) caching is also cleared via AJAX (in an asynchronous way) to avoid any broken CSS/JS (rare cases) even for short time
|
196 |
+
* Trigger certain actions (to save database & disk space) when the plugin is deactivated: Clear all its transients from the database & Remove the caching directory if it doesn't have any more CSS/JS; If all the plugin's changes were cleared via "Tools" -> "Reset", then deactivating the plugin will completely clear any of its traces
|
197 |
+
* The plugin's own files that are needed for the plugin's functionality (they are only loading for the logged-in admin), are loaded asynchronously (CSS) and deferred (JS) to ensure the admin doesn't load them as render-blocking especially when managing the pages in the front-end view
|
198 |
+
* The combined CSS tags can now be altered for any reason via add_filter() through the 'wpacu_combined_css_tag' tag name, just like the combined JS tags are via 'wpacu_combined_js_tag'
|
199 |
+
* Fix: Remove request to non-existent CSS file within the Dashboard that generated a 404 Not Found error in the browser's console (harmless, but confusing)
|
200 |
+
|
201 |
= 1.3.6.0 =
|
202 |
* Improved the speed of the generated & printed combined CSS/JS assets by ~30ms (depending on the hosting package and the PHP version used) when the HTML source is altered by avoiding extra useless verifications of the HTML output
|
203 |
* When managing the assets, make sure to show "before" and "after" content (so the user is aware how is that inline tag generated) associated with a handle too (not just the "data" one added via wp_localize_script())
|
templates/_admin-page-settings-plugin-areas/_cdn-rewrite-urls.php
CHANGED
@@ -40,40 +40,38 @@ $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-ce
|
|
40 |
$cdnRewriteAreaStyle = ($data['cdn_rewrite_enable'] == 1) ? 'opacity: 1;' : 'opacity: 0.4;';
|
41 |
?>
|
42 |
<div id="wpacu_cdn_rewrite_enable_area" style="<?php echo $cdnRewriteAreaStyle; ?>">
|
43 |
-
<div
|
44 |
-
|
45 |
-
<
|
46 |
-
<
|
47 |
-
|
48 |
-
<
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
</label>
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
</div>
|
77 |
<hr />
|
78 |
<p style="margin-top: 10px;"><strong>Note:</strong> Most of the time the CNAME / CDN URL is the same for both CSS & JS files. You can use the same value in both fields.</p>
|
79 |
|
40 |
$cdnRewriteAreaStyle = ($data['cdn_rewrite_enable'] == 1) ? 'opacity: 1;' : 'opacity: 0.4;';
|
41 |
?>
|
42 |
<div id="wpacu_cdn_rewrite_enable_area" style="<?php echo $cdnRewriteAreaStyle; ?>">
|
43 |
+
<div style="margin-top: 20px; margin-bottom: 0;"></div>
|
44 |
+
<table>
|
45 |
+
<tr>
|
46 |
+
<td style="vertical-align: top;" valign="top">For Stylesheet (.css) Files: </td>
|
47 |
+
<td style="padding-bottom: 10px;">
|
48 |
+
<label for="wpacu_cdn_rewrite_url_css"><input id="wpacu_cdn_rewrite_url_css"
|
49 |
+
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[cdn_rewrite_url_css]"
|
50 |
+
value="<?php echo $data['cdn_rewrite_url_css']; ?>"
|
51 |
+
style="width: 300px;" /><br />
|
52 |
+
</label>
|
|
|
53 |
|
54 |
+
<ul style="font-style: italic; line-height: 13px; font-size: 12px; margin-top: 5px; margin-bottom: 0;">
|
55 |
+
<li>e.g. //css-zone-name.kxcdn.com</li>
|
56 |
+
<li>zone-name.kxcdn.com etc.</li>
|
57 |
+
</ul>
|
58 |
+
</td>
|
59 |
+
</tr>
|
60 |
+
<tr>
|
61 |
+
<td style="vertical-align: top;" valign="top">For JavaScript (.js) Files: </td>
|
62 |
+
<td style="padding-bottom: 3px;"><label for="wpacu_cdn_rewrite_url_js">
|
63 |
+
<input id="wpacu_cdn_rewrite_url_js"
|
64 |
+
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[cdn_rewrite_url_js]"
|
65 |
+
value="<?php echo $data['cdn_rewrite_url_js']; ?>"
|
66 |
+
style="width: 300px;" /><br />
|
67 |
+
</label>
|
68 |
+
<ul style="font-style: italic; line-height: 13px; font-size: 12px; margin-top: 5px;">
|
69 |
+
<li>e.g. //js-zone-name.kxcdn.com</li>
|
70 |
+
<li>zone-name.kxcdn.com etc.</li>
|
71 |
+
</ul>
|
72 |
+
</td>
|
73 |
+
</tr>
|
74 |
+
</table>
|
|
|
75 |
<hr />
|
76 |
<p style="margin-top: 10px;"><strong>Note:</strong> Most of the time the CNAME / CDN URL is the same for both CSS & JS files. You can use the same value in both fields.</p>
|
77 |
|
templates/_admin-page-settings-plugin-areas/_common-files-unload.php
CHANGED
@@ -44,7 +44,7 @@ $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-ce
|
|
44 |
</th>
|
45 |
<td>
|
46 |
<label class="wpacu_switch">
|
47 |
-
<input id="
|
48 |
type="checkbox"
|
49 |
<?php echo (($data['disable_oembed'] == 1) ? 'checked="checked"' : ''); ?>
|
50 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_oembed]"
|
44 |
</th>
|
45 |
<td>
|
46 |
<label class="wpacu_switch">
|
47 |
+
<input id="wpacu_disable_wp_embed"
|
48 |
type="checkbox"
|
49 |
<?php echo (($data['disable_oembed'] == 1) ? 'checked="checked"' : ''); ?>
|
50 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_oembed]"
|
templates/_admin-page-settings-plugin-areas/_optimize-css.php
CHANGED
@@ -29,10 +29,10 @@ $availableForPro = '<a class="go-pro-link-no-style" target="_blank" href="' . WP
|
|
29 |
?>
|
30 |
<div class="wpacu-warning" style="font-size: 13px; margin-bottom: 18px;">
|
31 |
<span class="dashicons dashicons-warning"></span> <strong>Incompatibility Notice:</strong>
|
32 |
-
<?php if ($wpRocketIssues['minify_html']) { ?>
|
33 |
<p style="margin-bottom: 0;">At this time, "<strong>Combine loaded CSS (Stylesheets) into fewer files</strong>" & "<strong>Defer CSS Loaded in the <BODY> (Footer)</strong>" options do not take any effect as "<em>Minify HTML</em>" is active in "WP Rocket" -> "File Optimization" Settings. If you wish to keep WP Rocket's Minify HTML on, consider optimizing CSS with WP Rocket while cleaning the useless CSS with <?php echo WPACU_PLUGIN_TITLE; ?>.</p>
|
34 |
<?php } ?>
|
35 |
-
<?php if ($wpRocketIssues['optimize_css_delivery']) { ?>
|
36 |
<p style="margin-bottom: 0;"><?php echo WPACU_PLUGIN_TITLE; ?>'s "<strong>Combine loaded CSS (Stylesheets) into fewer files</strong>" & "<strong>Defer CSS Loaded in the <BODY> (Footer)</strong>" options do not take any effect as "<em>Optimize CSS Delivery</em>" is active in "WP Rocket" -> "File Optimization" Settings. The feature is changing the way CSS is delivered by adding critical CSS to the HEAD section of the website as well as preloading the rest of the CSS files before applying their syntax on page loading. This doesn't affect the performance of your website as you can eliminate the bloat with <?php echo WPACU_PLUGIN_TITLE; ?> and use WP Rocket for CSS Optimization/Delivery if that's what works best for your website.</p>
|
37 |
<?php } ?>
|
38 |
</div>
|
@@ -110,7 +110,7 @@ $availableForPro = '<a class="go-pro-link-no-style" target="_blank" href="' . WP
|
|
110 |
<tr>
|
111 |
<td colspan="2" style="padding: 0;">
|
112 |
<div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
|
113 |
-
<strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. <
|
114 |
</div>
|
115 |
</td>
|
116 |
</tr>
|
@@ -232,17 +232,15 @@ $availableForPro = '<a class="go-pro-link-no-style" target="_blank" href="' . WP
|
|
232 |
|
233 |
<div id="wpacu_inline_css_files_list_area">
|
234 |
<div style="margin: 12px 0 6px;"><?php _e('Alternatively or in addition to automatic inlining, you can place the relative path(s) or part of them to the files you wish to inline below:', 'wp-asset-clean-up'); ?> (<strong><?php _e('one per line', 'wp-asset-clean-up'); ?></strong>):</div>
|
|
|
235 |
<label for="wpacu_inline_css_files_list">
|
236 |
<textarea style="width: 100%;"
|
237 |
rows="4"
|
238 |
id="wpacu_inline_css_files_list"
|
239 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[inline_css_files_list]"><?php echo $data['inline_css_files_list']; ?></textarea>
|
240 |
</label>
|
241 |
-
|
242 |
-
<p><strong>Examples</strong> (you don't have to add the full URL, as it's recommended to use relative paths, especially if you use dev/staging environments or change the domain name of your website):</p>
|
243 |
<code>/wp-content/plugins/plugin-title/styles/small-file.css<br />/wp-content/themes/my-wp-theme-dir/css/small.css</code>
|
244 |
-
|
245 |
-
<p style="margin-top: 18px;"><span class="dashicons dashicons-warning" style="color: #ffc107;"></span> <strong>Note:</strong> Please input the sources to the original CSS files (one per line), not to any optimized ones (which are usually located in <em><?php echo str_replace(site_url(), '', WP_CONTENT_URL) . OptimizeCommon::getRelPathPluginCacheDir(); ?></em>).</p>
|
246 |
</div>
|
247 |
</div>
|
248 |
<hr />
|
29 |
?>
|
30 |
<div class="wpacu-warning" style="font-size: 13px; margin-bottom: 18px;">
|
31 |
<span class="dashicons dashicons-warning"></span> <strong>Incompatibility Notice:</strong>
|
32 |
+
<?php if (isset($wpRocketIssues['minify_html']) && $wpRocketIssues['minify_html']) { ?>
|
33 |
<p style="margin-bottom: 0;">At this time, "<strong>Combine loaded CSS (Stylesheets) into fewer files</strong>" & "<strong>Defer CSS Loaded in the <BODY> (Footer)</strong>" options do not take any effect as "<em>Minify HTML</em>" is active in "WP Rocket" -> "File Optimization" Settings. If you wish to keep WP Rocket's Minify HTML on, consider optimizing CSS with WP Rocket while cleaning the useless CSS with <?php echo WPACU_PLUGIN_TITLE; ?>.</p>
|
34 |
<?php } ?>
|
35 |
+
<?php if (isset($wpRocketIssues['optimize_css_delivery']) && $wpRocketIssues['optimize_css_delivery']) { ?>
|
36 |
<p style="margin-bottom: 0;"><?php echo WPACU_PLUGIN_TITLE; ?>'s "<strong>Combine loaded CSS (Stylesheets) into fewer files</strong>" & "<strong>Defer CSS Loaded in the <BODY> (Footer)</strong>" options do not take any effect as "<em>Optimize CSS Delivery</em>" is active in "WP Rocket" -> "File Optimization" Settings. The feature is changing the way CSS is delivered by adding critical CSS to the HEAD section of the website as well as preloading the rest of the CSS files before applying their syntax on page loading. This doesn't affect the performance of your website as you can eliminate the bloat with <?php echo WPACU_PLUGIN_TITLE; ?> and use WP Rocket for CSS Optimization/Delivery if that's what works best for your website.</p>
|
37 |
<?php } ?>
|
38 |
</div>
|
110 |
<tr>
|
111 |
<td colspan="2" style="padding: 0;">
|
112 |
<div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
|
113 |
+
<strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. <a id="wpacu-http2-info-css-target" href="#wpacu-http2-info-css"><?php _e('Read more', 'wp-asset-clean-up'); ?></a> / <a class="wpacu_hide wpacu_verify_http2_protocol" target="_blank" href="https://tools.keycdn.com/http2-test"><strong><?php _e('Verify if the website is delivered through the HTTP/2 network protocol', 'wp-asset-clean-up'); ?></strong></a> <span class="wpacu_hide wpacu_http2_protocol_is_supported" style="color: green; font-weight: 400;"><span class="dashicons dashicons-yes-alt"></span> Your website `<span style="font-weight: 500;"><?php echo get_site_url(); ?></span>` is delivered through the HTTP/2 network protocol.</span>
|
114 |
</div>
|
115 |
</td>
|
116 |
</tr>
|
232 |
|
233 |
<div id="wpacu_inline_css_files_list_area">
|
234 |
<div style="margin: 12px 0 6px;"><?php _e('Alternatively or in addition to automatic inlining, you can place the relative path(s) or part of them to the files you wish to inline below:', 'wp-asset-clean-up'); ?> (<strong><?php _e('one per line', 'wp-asset-clean-up'); ?></strong>):</div>
|
235 |
+
<p style="margin-top: 8px;"><span class="dashicons dashicons-warning" style="color: #ffc107;"></span> <strong>Note:</strong> Please input the sources to the original CSS files (one per line) like in the examples below, not to the cached/optimized ones (which are usually located in <em><?php echo str_replace(site_url(), '', WP_CONTENT_URL) . OptimizeCommon::getRelPathPluginCacheDir(); ?></em>).</p>
|
236 |
<label for="wpacu_inline_css_files_list">
|
237 |
<textarea style="width: 100%;"
|
238 |
rows="4"
|
239 |
id="wpacu_inline_css_files_list"
|
240 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[inline_css_files_list]"><?php echo $data['inline_css_files_list']; ?></textarea>
|
241 |
</label>
|
242 |
+
<p style="margin-bottom: 6px;"><strong>Examples</strong> (you don't have to add the full URL, as it's recommended to use relative paths, especially if you use dev/staging environments or change the domain name of your website):</p>
|
|
|
243 |
<code>/wp-content/plugins/plugin-title/styles/small-file.css<br />/wp-content/themes/my-wp-theme-dir/css/small.css</code>
|
|
|
|
|
244 |
</div>
|
245 |
</div>
|
246 |
<hr />
|
templates/_admin-page-settings-plugin-areas/_optimize-js.php
CHANGED
@@ -103,7 +103,7 @@ $availableForProMoveScriptsToBody = '<a class="go-pro-link-no-style" target="_bl
|
|
103 |
<tr>
|
104 |
<td colspan="2" style="padding: 0;">
|
105 |
<div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
|
106 |
-
<strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. <
|
107 |
</div>
|
108 |
</td>
|
109 |
</tr>
|
@@ -279,17 +279,15 @@ $availableForProMoveScriptsToBody = '<a class="go-pro-link-no-style" target="_bl
|
|
279 |
|
280 |
<div id="wpacu_inline_js_files_list_area">
|
281 |
<div style="margin: 12px 0 6px;"><?php _e('Alternatively or in addition to automatic inlining, you can place the relative path(s) or part of them to the files you wish to inline below:', 'wp-asset-clean-up'); ?> (<strong><?php _e('one per line', 'wp-asset-clean-up'); ?></strong>):</div>
|
|
|
282 |
<label for="wpacu_inline_js_files_list">
|
283 |
<textarea style="width: 100%;"
|
284 |
rows="4"
|
285 |
id="wpacu_inline_js_files_list"
|
286 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[inline_js_files_list]"><?php echo $data['inline_js_files_list']; ?></textarea>
|
287 |
</label>
|
288 |
-
|
289 |
-
<p><strong>Examples</strong> (you don't have to add the full URL, as it's recommended to use relative paths, especially if you use dev/staging environments or change the domain name of your website):</p>
|
290 |
<code>/wp-content/plugins/plugin-title/scripts/small-file.js<br />/wp-content/themes/my-wp-theme-dir/js/small.js</code>
|
291 |
-
|
292 |
-
<p style="margin-top: 18px;"><span class="dashicons dashicons-warning"></span> <strong>Note:</strong> Please input the sources to the original JavaScript files (one per line), not to any optimized ones (which are usually located in <em><?php echo str_replace(site_url(), '', WP_CONTENT_URL) . OptimizeCommon::getRelPathPluginCacheDir(); ?></em>)</p>
|
293 |
</div>
|
294 |
</div>
|
295 |
</td>
|
103 |
<tr>
|
104 |
<td colspan="2" style="padding: 0;">
|
105 |
<div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
|
106 |
+
<strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. <a id="wpacu-http2-info-js-target" href="#wpacu-http2-info-js"><?php _e('Read more', 'wp-asset-clean-up'); ?></a> / <a class="wpacu_hide wpacu_verify_http2_protocol" target="_blank" href="https://tools.keycdn.com/http2-test"><strong><?php _e('Verify if the website is delivered through the HTTP/2 network protocol', 'wp-asset-clean-up'); ?></strong></a> <span class="wpacu_hide wpacu_http2_protocol_is_supported" style="color: green; font-weight: 400;"><span class="dashicons dashicons-yes-alt"></span> Your website `<span style="font-weight: 500;"><?php echo get_site_url(); ?></span>` is delivered through the HTTP/2 network protocol.</span>
|
107 |
</div>
|
108 |
</td>
|
109 |
</tr>
|
279 |
|
280 |
<div id="wpacu_inline_js_files_list_area">
|
281 |
<div style="margin: 12px 0 6px;"><?php _e('Alternatively or in addition to automatic inlining, you can place the relative path(s) or part of them to the files you wish to inline below:', 'wp-asset-clean-up'); ?> (<strong><?php _e('one per line', 'wp-asset-clean-up'); ?></strong>):</div>
|
282 |
+
<p style="margin-top: 8px;"><span class="dashicons dashicons-warning" style="color: #ffc107;"></span> <strong>Note:</strong> Please input the sources to the original JavaScript files (one per line) like in the examples below, not to the cached/optimized ones (which are usually located in <em><?php echo str_replace(site_url(), '', WP_CONTENT_URL) . OptimizeCommon::getRelPathPluginCacheDir(); ?></em>)</p>
|
283 |
<label for="wpacu_inline_js_files_list">
|
284 |
<textarea style="width: 100%;"
|
285 |
rows="4"
|
286 |
id="wpacu_inline_js_files_list"
|
287 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[inline_js_files_list]"><?php echo $data['inline_js_files_list']; ?></textarea>
|
288 |
</label>
|
289 |
+
<p style="margin-bottom: 6px;"><strong>Examples</strong> (you don't have to add the full URL, as it's recommended to use relative paths, especially if you use dev/staging environments or change the domain name of your website):</p>
|
|
|
290 |
<code>/wp-content/plugins/plugin-title/scripts/small-file.js<br />/wp-content/themes/my-wp-theme-dir/js/small.js</code>
|
|
|
|
|
291 |
</div>
|
292 |
</div>
|
293 |
</td>
|
templates/_admin-page-settings-plugin-areas/_plugin-usage-settings.php
CHANGED
@@ -42,7 +42,7 @@ foreach (\WpAssetCleanUp\MetaBoxes::$noMetaBoxesForPostTypes as $noMetaBoxesForP
|
|
42 |
<div id="wpacu-settings-assets-retrieval-mode" <?php if (! ($data['dashboard_show'] == 1)) { echo 'style="display: none;"'; } ?>>
|
43 |
<ul id="wpacu-dom-get-type-selections">
|
44 |
<li>
|
45 |
-
<label
|
46 |
</li>
|
47 |
<li>
|
48 |
<label>
|
@@ -455,7 +455,9 @@ foreach (\WpAssetCleanUp\MetaBoxes::$noMetaBoxesForPostTypes as $noMetaBoxesForP
|
|
455 |
</div>
|
456 |
</div>
|
457 |
|
|
|
458 |
<!-- [wpacu_lite] -->
|
|
|
459 |
<div id="wpacu-deactivate-modal-info" class="wpacu-modal" style="padding-top: 60px;">
|
460 |
<div class="wpacu-modal-content" style="max-width: 650px;">
|
461 |
<span class="wpacu-close">×</span>
|
@@ -466,4 +468,6 @@ foreach (\WpAssetCleanUp\MetaBoxes::$noMetaBoxesForPostTypes as $noMetaBoxesForP
|
|
466 |
<img style="margin: 0 auto; width: 100%; max-width: 500px; display: table;" src="<?php echo WPACU_PLUGIN_URL. '/assets/images/wpacu-deactivate-modal.jpg'; ?>" alt="" />
|
467 |
</div>
|
468 |
</div>
|
469 |
-
|
|
|
|
42 |
<div id="wpacu-settings-assets-retrieval-mode" <?php if (! ($data['dashboard_show'] == 1)) { echo 'style="display: none;"'; } ?>>
|
43 |
<ul id="wpacu-dom-get-type-selections">
|
44 |
<li>
|
45 |
+
<label><?php _e('Select a retrieval way', 'wp-asset-clean-up'); ?>:</label>
|
46 |
</li>
|
47 |
<li>
|
48 |
<label>
|
455 |
</div>
|
456 |
</div>
|
457 |
|
458 |
+
<!-- removeIf(development) -->
|
459 |
<!-- [wpacu_lite] -->
|
460 |
+
<!--
|
461 |
<div id="wpacu-deactivate-modal-info" class="wpacu-modal" style="padding-top: 60px;">
|
462 |
<div class="wpacu-modal-content" style="max-width: 650px;">
|
463 |
<span class="wpacu-close">×</span>
|
468 |
<img style="margin: 0 auto; width: 100%; max-width: 500px; display: table;" src="<?php echo WPACU_PLUGIN_URL. '/assets/images/wpacu-deactivate-modal.jpg'; ?>" alt="" />
|
469 |
</div>
|
470 |
</div>
|
471 |
+
-->
|
472 |
+
<!-- [/wpacu_lite] -->
|
473 |
+
<!-- endRemoveIf(development) -->
|
templates/admin-page-overview.php
CHANGED
@@ -31,10 +31,21 @@ include_once '_top-area.php';
|
|
31 |
</thead>
|
32 |
<?php
|
33 |
foreach ($data['handles']['styles'] as $handle => $handleData) {
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
36 |
<td>
|
37 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
</td>
|
39 |
<td>
|
40 |
<?php
|
@@ -86,10 +97,21 @@ include_once '_top-area.php';
|
|
86 |
</thead>
|
87 |
<?php
|
88 |
foreach ($data['handles']['scripts'] as $handle => $handleData) {
|
|
|
|
|
|
|
|
|
|
|
89 |
?>
|
90 |
-
<tr class="wpacu_global_rule_row wpacu_bulk_change_row">
|
91 |
<td>
|
92 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
</td>
|
94 |
<td>
|
95 |
<?php
|
31 |
</thead>
|
32 |
<?php
|
33 |
foreach ($data['handles']['styles'] as $handle => $handleData) {
|
34 |
+
// [wpacu_lite]
|
35 |
+
// Traces from the PRO version in case a downgrade to LITE was made
|
36 |
+
$hasProTraces = (strpos($handle, 'wpacu_hardcoded_') !== false);
|
37 |
+
$trStyle = $hasProTraces ? 'opacity: 0.5;' : '';
|
38 |
+
// [/wpacu_lite]
|
39 |
+
?>
|
40 |
+
<tr class="wpacu_global_rule_row wpacu_bulk_change_row" style="<?php echo $trStyle; ?>">
|
41 |
<td>
|
42 |
+
<?php
|
43 |
+
\WpAssetCleanUp\Overview::renderHandleTd($handle, 'styles', $data);
|
44 |
+
|
45 |
+
if ($hasProTraces) {
|
46 |
+
echo ' ⟶ Inactive rule left from the PRO version';
|
47 |
+
}
|
48 |
+
?>
|
49 |
</td>
|
50 |
<td>
|
51 |
<?php
|
97 |
</thead>
|
98 |
<?php
|
99 |
foreach ($data['handles']['scripts'] as $handle => $handleData) {
|
100 |
+
// [wpacu_lite]
|
101 |
+
// Traces from the PRO version in case a downgrade to LITE was made
|
102 |
+
$hasProTraces = (strpos($handle, 'wpacu_hardcoded_') !== false);
|
103 |
+
$trStyle = $hasProTraces ? 'opacity: 0.5;' : '';
|
104 |
+
// [/wpacu_lite]
|
105 |
?>
|
106 |
+
<tr class="wpacu_global_rule_row wpacu_bulk_change_row" style="<?php echo $trStyle; ?>">
|
107 |
<td>
|
108 |
+
<?php
|
109 |
+
\WpAssetCleanUp\Overview::renderHandleTd($handle, 'scripts', $data);
|
110 |
+
|
111 |
+
if ($hasProTraces) {
|
112 |
+
echo ' ⟶ Inactive rule left from the PRO version';
|
113 |
+
}
|
114 |
+
?>
|
115 |
</td>
|
116 |
<td>
|
117 |
<?php
|
templates/admin-page-tools.php
CHANGED
@@ -33,10 +33,16 @@ do_action('wpacu_admin_notices');
|
|
33 |
|
34 |
<div id="wpacu-license-data-remove-area">
|
35 |
<label for="wpacu-remove-license-data">
|
36 |
-
<input id="wpacu-remove-license-data" type="checkbox" name="wpacu-remove-license-data" value="1" /> <?php _e('Also remove license data (
|
37 |
</label>
|
38 |
</div>
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
<div id="wpacu-warning-read"><span class="dashicons dashicons-warning"></span> <strong><?php _e('Please read carefully below what the chosen action does as this process is NOT reversible.', 'wp-asset-clean-up'); ?></strong></div>
|
41 |
|
42 |
<div id="wpacu-warning-reset-settings" class="wpacu-warning">
|
33 |
|
34 |
<div id="wpacu-license-data-remove-area">
|
35 |
<label for="wpacu-remove-license-data">
|
36 |
+
<input id="wpacu-remove-license-data" type="checkbox" name="wpacu-remove-license-data" value="1" /> <?php _e('Also remove any license data left from the Pro version if you ever used it (if you switched from Pro to Lite to make tests, but want to switch back to Pro, then do not choose this option)', 'wp-asset-clean-up'); ?>
|
37 |
</label>
|
38 |
</div>
|
39 |
|
40 |
+
<div id="wpacu-cache-assets-remove-area">
|
41 |
+
<label for="wpacu-remove-cache-assets">
|
42 |
+
<input id="wpacu-remove-cache-assets" type="checkbox" name="wpacu-remove-cache-assets" value="1" /> <?php echo sprintf(__('Also remove any cached CSS/JS files from %s', 'wp-asset-clean-up'), '<code>/'.basename(WP_CONTENT_DIR) . \WpAssetCleanUp\OptimiseAssets\OptimizeCommon::getRelPathPluginCacheDir().'</code>'); ?> (please be careful as there might be cached pages - e.g. people previewing your page via Google Cache - still making reference to the CSS/JS files, you can leave it unchecked if you are not about it)
|
43 |
+
</label>
|
44 |
+
</div>
|
45 |
+
|
46 |
<div id="wpacu-warning-read"><span class="dashicons dashicons-warning"></span> <strong><?php _e('Please read carefully below what the chosen action does as this process is NOT reversible.', 'wp-asset-clean-up'); ?></strong></div>
|
47 |
|
48 |
<div id="wpacu-warning-reset-settings" class="wpacu-warning">
|
templates/meta-box-loaded-assets/_asset-script-single-row.php
CHANGED
@@ -67,7 +67,13 @@ if ($isGroupUnloaded) {
|
|
67 |
// [/wpacu_lite]
|
68 |
|
69 |
if (! empty($extraInfo)) {
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
?>
|
73 |
|
67 |
// [/wpacu_lite]
|
68 |
|
69 |
if (! empty($extraInfo)) {
|
70 |
+
$stylingDiv = 'margin: 0 0 10px;';
|
71 |
+
|
72 |
+
if (isset($hasNoSrc) && $hasNoSrc) {
|
73 |
+
$stylingDiv = 'margin: 15px 0 10px;';
|
74 |
+
}
|
75 |
+
|
76 |
+
echo '<div style="'.$stylingDiv.'">'.implode(' / ', $extraInfo).'</div>';
|
77 |
}
|
78 |
?>
|
79 |
|
templates/meta-box-loaded-assets/_asset-script-single-row/_extra_inline.php
CHANGED
@@ -16,14 +16,20 @@ if ($data['row']['extra_data_js'] || $data['row']['extra_before_js'] || $data['r
|
|
16 |
href="#"><?php _e('Show', 'wp-asset-clean-up'); ?> / <?php _e('Hide', 'wp-asset-clean-up'); ?></a>
|
17 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
18 |
<?php
|
19 |
-
$
|
20 |
'data' => 'CDATA added via wp_localize_script()',
|
21 |
'before' => 'Before the tag:',
|
22 |
'after' => 'After the tag:'
|
23 |
);
|
24 |
|
25 |
-
foreach ($
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
if (is_array($inlineScriptContent) && in_array($extraKeyValue, array('before', 'after'))) {
|
29 |
$inlineScriptContent = (string)ltrim(implode("\n", $inlineScriptContent));
|
16 |
href="#"><?php _e('Show', 'wp-asset-clean-up'); ?> / <?php _e('Hide', 'wp-asset-clean-up'); ?></a>
|
17 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
18 |
<?php
|
19 |
+
$extraInlineKeys = array(
|
20 |
'data' => 'CDATA added via wp_localize_script()',
|
21 |
'before' => 'Before the tag:',
|
22 |
'after' => 'After the tag:'
|
23 |
);
|
24 |
|
25 |
+
foreach ($extraInlineKeys as $extraKeyValue => $extraKeyText) {
|
26 |
+
$keyToMatch = 'extra_'.$extraKeyValue.'_js';
|
27 |
+
|
28 |
+
if ( ! isset($data['row'][$keyToMatch]) ) {
|
29 |
+
continue;
|
30 |
+
}
|
31 |
+
|
32 |
+
$inlineScriptContent = $data['row'][$keyToMatch];
|
33 |
|
34 |
if (is_array($inlineScriptContent) && in_array($extraKeyValue, array('before', 'after'))) {
|
35 |
$inlineScriptContent = (string)ltrim(implode("\n", $inlineScriptContent));
|
templates/meta-box-loaded-assets/_assets-hardcoded-list.php
CHANGED
@@ -42,7 +42,7 @@ if ($totalHardcodedTags === 0) {
|
|
42 |
action hook (despite the name, it is used for enqueuing both scripts and styles) which is the proper one to use when enqueuing scripts and styles that are meant to appear on
|
43 |
the front end. The standard functions that are used inside the hook to do an enqueuing are: <a target="_blank"
|
44 |
href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/">wp_enqueue_style()</a>,
|
45 |
-
<a target="_blank" href="https://codex.wordpress.org/Function_Reference/wp_add_inline_style">wp_add_inline_style()</a
|
46 |
<a target="_blank" href="https://developer.wordpress.org/reference/functions/wp_enqueue_script/">wp_enqueue_script()</a>
|
47 |
& <a target="_blank"
|
48 |
href="https://developer.wordpress.org/reference/functions/wp_add_inline_script/">wp_add_inline_script()</a>. The tags could have been added via editing the PHP code (not using the right standard functions), directly inside posts content, widgets or via plugins such as "Insert Headers and Footers", "Head, Footer and Post Injections", etc. Be careful when unloading any of these tags as they might be related to Google Analytics/AdWords, StatCounter, Facebook Pixel, etc.
|
@@ -224,4 +224,3 @@ if ($totalHardcodedTags === 0) {
|
|
224 |
</div>
|
225 |
</div>
|
226 |
<?php
|
227 |
-
|
42 |
action hook (despite the name, it is used for enqueuing both scripts and styles) which is the proper one to use when enqueuing scripts and styles that are meant to appear on
|
43 |
the front end. The standard functions that are used inside the hook to do an enqueuing are: <a target="_blank"
|
44 |
href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/">wp_enqueue_style()</a>,
|
45 |
+
<a target="_blank" href="https://codex.wordpress.org/Function_Reference/wp_add_inline_style">wp_add_inline_style()</a>,
|
46 |
<a target="_blank" href="https://developer.wordpress.org/reference/functions/wp_enqueue_script/">wp_enqueue_script()</a>
|
47 |
& <a target="_blank"
|
48 |
href="https://developer.wordpress.org/reference/functions/wp_add_inline_script/">wp_add_inline_script()</a>. The tags could have been added via editing the PHP code (not using the right standard functions), directly inside posts content, widgets or via plugins such as "Insert Headers and Footers", "Head, Footer and Post Injections", etc. Be careful when unloading any of these tags as they might be related to Google Analytics/AdWords, StatCounter, Facebook Pixel, etc.
|
224 |
</div>
|
225 |
</div>
|
226 |
<?php
|
|
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded.php
CHANGED
@@ -44,7 +44,8 @@ if (! isset($data)) {
|
|
44 |
$enableViewMore = true;
|
45 |
}
|
46 |
?>
|
47 |
-
<div class="wpacu-hardcoded-code-area
|
|
|
48 |
<?php
|
49 |
if ($tagBelongsTo = \WpAssetCleanUp\HardcodedAssets::belongsTo($data['row']['obj']->tag_output)) {
|
50 |
echo '<div style="margin-bottom: 10px;">'.__('Belongs to', 'wp-asset-clean-up').': <strong>'.$tagBelongsTo . '</strong></div>';
|
@@ -62,6 +63,7 @@ if (! isset($data)) {
|
|
62 |
?>
|
63 |
<p class="wpacu-view-more-link-area" style="margin: 0 !important; padding: 15px !important;"><a href="#" class="<?php echo $wpacuViewMoreCodeBtnClass; ?>"><?php _e('View more', 'wp-asset-clean-up'); ?></a></p>
|
64 |
<?php } ?>
|
|
|
65 |
</div>
|
66 |
<?php
|
67 |
}
|
44 |
$enableViewMore = true;
|
45 |
}
|
46 |
?>
|
47 |
+
<div class="wpacu-hardcoded-code-area">
|
48 |
+
<div class="<?php if ($enableViewMore) { ?>wpacu-has-view-more<?php } ?>">
|
49 |
<?php
|
50 |
if ($tagBelongsTo = \WpAssetCleanUp\HardcodedAssets::belongsTo($data['row']['obj']->tag_output)) {
|
51 |
echo '<div style="margin-bottom: 10px;">'.__('Belongs to', 'wp-asset-clean-up').': <strong>'.$tagBelongsTo . '</strong></div>';
|
63 |
?>
|
64 |
<p class="wpacu-view-more-link-area" style="margin: 0 !important; padding: 15px !important;"><a href="#" class="<?php echo $wpacuViewMoreCodeBtnClass; ?>"><?php _e('View more', 'wp-asset-clean-up'); ?></a></p>
|
65 |
<?php } ?>
|
66 |
+
</div>
|
67 |
</div>
|
68 |
<?php
|
69 |
}
|
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded.php
CHANGED
@@ -44,24 +44,26 @@ if (! isset($data)) {
|
|
44 |
$enableViewMore = true;
|
45 |
}
|
46 |
?>
|
47 |
-
<div class="wpacu-hardcoded-code-area
|
48 |
-
<?php
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
52 |
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
?>
|
57 |
-
<div>
|
58 |
-
<pre><code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code></pre>
|
59 |
-
</div>
|
60 |
-
<?php if ($enableViewMore) {
|
61 |
-
$wpacuViewMoreCodeBtnClass = ! is_admin() ? 'wpacu-view-more-code' : 'button';
|
62 |
?>
|
63 |
-
<
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
</div>
|
66 |
<?php
|
67 |
}
|
44 |
$enableViewMore = true;
|
45 |
}
|
46 |
?>
|
47 |
+
<div class="wpacu-hardcoded-code-area">
|
48 |
+
<div class="<?php if ($enableViewMore) { ?>wpacu-has-view-more<?php } ?>">
|
49 |
+
<?php
|
50 |
+
if ($tagBelongsTo = \WpAssetCleanUp\HardcodedAssets::belongsTo($data['row']['obj']->tag_output)) {
|
51 |
+
echo '<div style="margin-bottom: 10px;">'.__('Belongs to', 'wp-asset-clean-up').': <strong>'.$tagBelongsTo . '</strong></div>';
|
52 |
+
}
|
53 |
|
54 |
+
if ($data['row']['obj']->inside_conditional_comment) {
|
55 |
+
echo '<span><img style="vertical-align: middle;" width="25" height="25" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-ie.svg" alt="" title="Microsoft / Public domain" /> <span style="font-weight: 400; color: #1C87CF;">Loads only in Internet Explorer based on the following condition:</span> <em>if '.$data['row']['obj']->inside_conditional_comment.'</em></span>';
|
56 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
?>
|
58 |
+
<div>
|
59 |
+
<pre><code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code></pre>
|
60 |
+
</div>
|
61 |
+
<?php if ($enableViewMore) {
|
62 |
+
$wpacuViewMoreCodeBtnClass = ! is_admin() ? 'wpacu-view-more-code' : 'button';
|
63 |
+
?>
|
64 |
+
<p class="wpacu-view-more-link-area" style="margin: 0 !important; padding: 15px !important;"><a href="#" class="<?php echo $wpacuViewMoreCodeBtnClass; ?>"><?php _e('View more', 'wp-asset-clean-up'); ?></a></p>
|
65 |
+
<?php } ?>
|
66 |
+
</div>
|
67 |
</div>
|
68 |
<?php
|
69 |
}
|
wpacu-load.php
CHANGED
@@ -60,6 +60,9 @@ new \WpAssetCleanUp\Info();
|
|
60 |
// Any debug?
|
61 |
new \WpAssetCleanUp\Debug();
|
62 |
|
|
|
|
|
|
|
63 |
// Common functions for both CSS & JS combinations
|
64 |
// Clear CSS/JS caching functionality
|
65 |
$wpacuOptimizeCommon = new \WpAssetCleanUp\OptimiseAssets\OptimizeCommon();
|
60 |
// Any debug?
|
61 |
new \WpAssetCleanUp\Debug();
|
62 |
|
63 |
+
// Maintenance
|
64 |
+
new \WpAssetCleanUp\Maintenance();
|
65 |
+
|
66 |
// Common functions for both CSS & JS combinations
|
67 |
// Clear CSS/JS caching functionality
|
68 |
$wpacuOptimizeCommon = new \WpAssetCleanUp\OptimiseAssets\OptimizeCommon();
|
wpacu.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
-
* Version: 1.3.6.
|
6 |
* Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
@@ -12,7 +12,7 @@
|
|
12 |
|
13 |
// Is the Pro version triggered before the Lite one and are both plugins active?
|
14 |
if (! defined('WPACU_PLUGIN_VERSION')) {
|
15 |
-
define('WPACU_PLUGIN_VERSION', '1.3.6.
|
16 |
}
|
17 |
|
18 |
// Exit if accessed directly
|
@@ -107,13 +107,12 @@ define('WPACU_PLUGIN_GO_PRO_URL', 'https://www.gabelivan.com/items/wp-asset-cl
|
|
107 |
// Global Values
|
108 |
define('WPACU_LOAD_ASSETS_REQ_KEY', WPACU_PLUGIN_ID . '_load');
|
109 |
|
110 |
-
require_once WPACU_PLUGIN_DIR.'/wpacu-load.php';
|
111 |
-
|
112 |
$wpacuGetLoadedAssetsAction = ((isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY]) && $_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])
|
113 |
|| (isset($_REQUEST['action']) && $_REQUEST['action'] === WPACU_PLUGIN_ID.'_get_loaded_assets'));
|
114 |
-
|
115 |
define('WPACU_GET_LOADED_ASSETS_ACTION', $wpacuGetLoadedAssetsAction);
|
116 |
|
|
|
|
|
117 |
if (WPACU_GET_LOADED_ASSETS_ACTION === true || ! is_admin()) {
|
118 |
add_action('init', static function() {
|
119 |
// "Smart Slider 3" & "WP Rocket" compatibility fix | triggered ONLY when the assets are fetched
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
+
* Version: 1.3.6.1
|
6 |
* Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
12 |
|
13 |
// Is the Pro version triggered before the Lite one and are both plugins active?
|
14 |
if (! defined('WPACU_PLUGIN_VERSION')) {
|
15 |
+
define('WPACU_PLUGIN_VERSION', '1.3.6.1');
|
16 |
}
|
17 |
|
18 |
// Exit if accessed directly
|
107 |
// Global Values
|
108 |
define('WPACU_LOAD_ASSETS_REQ_KEY', WPACU_PLUGIN_ID . '_load');
|
109 |
|
|
|
|
|
110 |
$wpacuGetLoadedAssetsAction = ((isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY]) && $_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])
|
111 |
|| (isset($_REQUEST['action']) && $_REQUEST['action'] === WPACU_PLUGIN_ID.'_get_loaded_assets'));
|
|
|
112 |
define('WPACU_GET_LOADED_ASSETS_ACTION', $wpacuGetLoadedAssetsAction);
|
113 |
|
114 |
+
require_once WPACU_PLUGIN_DIR.'/wpacu-load.php';
|
115 |
+
|
116 |
if (WPACU_GET_LOADED_ASSETS_ACTION === true || ! is_admin()) {
|
117 |
add_action('init', static function() {
|
118 |
// "Smart Slider 3" & "WP Rocket" compatibility fix | triggered ONLY when the assets are fetched
|