Version Description
- "Combined Loaded CSS" feature (concatenates all the remaining loaded stylesheets within the HEAD section of the page and saves them into one file) to reduce HTTP requests even further
- Improved "Getting Started" area
- Made "Settings" as the default page where you (the administrator user) is redirected when activating the plugin for the first time
Download this release
Release Info
Developer | gabelivan |
Plugin | Asset CleanUp: Page Speed Booster |
Version | 1.2.9.1 |
Comparing to | |
See all releases |
Code changes from version 1.2.9 to 1.2.9.1
- README.md +0 -4
- assets/script.min.js +1 -1
- assets/style.min.css +1 -1
- classes/AdminBar.php +88 -9
- classes/Main.php +8 -3
- classes/Menu.php +0 -1
- classes/OptimizeCss.php +615 -0
- classes/OwnAssets.php +38 -18
- classes/Plugin.php +91 -27
- classes/Settings.php +26 -0
- classes/Update.php +6 -0
- freemius-load.php +2 -2
- readme.txt +9 -4
- templates/admin-page-getting-started.php +15 -14
- templates/admin-page-pages-info.php +7 -4
- templates/admin-page-settings-bulk-unloads.php +1 -1
- templates/admin-page-settings-homepage.php +1 -1
- templates/admin-page-settings-plugin.php +96 -71
- templates/meta-box-loaded-assets/_asset-script-single-row.php +7 -5
- templates/meta-box-loaded-assets/_asset-style-single-row.php +3 -3
- templates/meta-box-loaded-assets/_inline_js.php +4 -2
- templates/meta-box-loaded-assets/view-default.php +3 -3
- templates/settings-frontend.php +11 -7
- wpacu-load.php +4 -0
- wpacu.php +4 -2
README.md
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
# wp-asset-clean-up
|
2 |
-
Performance WordPress Plugin: Make your Website Load FASTER by preventing specific scripts (.JS) and styles (.CSS) from loading on pages/posts and home page
|
3 |
-
|
4 |
-
Read more here: https://wordpress.org/plugins/wp-asset-clean-up/
|
|
|
|
|
|
|
|
assets/script.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(a){function b(){var b={};"direct"===wpacu_object.dom_get_type?(b[wpacu_object.plugin_name+"_load"]=1,b[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:b,cache:!1,complete:function(b,c){if("error"===b.statusText){var d=wpacu_object.ajax_direct_fetch_error;d=d.replace(/\{wpacu_output\}/,b.responseText),d=d.replace(/\{wpacu_status_code_error\}/,b.status),a("#wpacu_meta_box_content").html(d)}}}).done(function(b){var c=b.substring(b.lastIndexOf(wpacu_object.start_del)+wpacu_object.start_del.length,b.lastIndexOf(wpacu_object.end_del)),d={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list:c,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()};if("btoa"in window)try{b=b.replace(/[\u0250-\ue007]/g,""),b=b.replace(/[^\x00-\x7F]/g,""),d.contents=window.btoa(b)}catch(a){d.contents=""}a.post(wpacu_object.ajax_url,d,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()})})):"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,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(),e.load()}))}a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)});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")):("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")),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"===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)});var e={load:function(){e.getExternalFileSize();var b;a(".input-unload-on-this-page").on("click change",function(){a(this).prop("checked")?a(this).closest("tr").addClass("wpacu_not_load"):a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_global_unload").click(function(){b=a(this).attr("data-handle"),a(this).prop("checked")?a(this).parent("label").addClass("wpacu_global_checked"):a(this).parent("label").removeClass("wpacu_global_checked")}),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").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_bulk_unload_active"):a(this).parent("label").removeClass("wpacu_bulk_unload_active")}),a(".wpacu_load_it_option").click(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")})},getExternalFileSize:function(){a(".wpacu-external-file-size").each(function(){var b=a(this);a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:a(this).attr("data-src")},function(a){b.html(a)})})}};if(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").fadeIn():a("#wpacu-settings-assets-retrieval-mode").fadeOut()}),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(".wpacu_remove_rule").click(function(){var b=a(this).parents(".wpacu_global_rule_row");a(this).prop("checked")?b.addClass("selected"):b.removeClass("selected")}),a("#wpacu_wrap_assets").length>0&&e.load(),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click","body.branch-5 .edit-post-header__settings button.is-primary",function(){var c=function(){0===a(".edit-post-header__settings .is-saving").length&&(b(),clearInterval(d))},d=setInterval(c,900)})});
|
1 |
+
jQuery(document).ready(function(a){function b(){var b={};"direct"===wpacu_object.dom_get_type?(b[wpacu_object.plugin_name+"_load"]=1,b[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:b,cache:!1,complete:function(b,c){if("error"===b.statusText){var d=wpacu_object.ajax_direct_fetch_error;d=d.replace(/\{wpacu_output\}/,b.responseText),d=d.replace(/\{wpacu_status_code_error\}/,b.status),a("#wpacu_meta_box_content").html(d)}}}).done(function(b){var c=b.substring(b.lastIndexOf(wpacu_object.start_del)+wpacu_object.start_del.length,b.lastIndexOf(wpacu_object.end_del)),d={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list:c,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()};if("btoa"in window)try{b=b.replace(/[\u0250-\ue007]/g,""),b=b.replace(/[^\x00-\x7F]/g,""),d.contents=window.btoa(b)}catch(a){d.contents=""}a.post(wpacu_object.ajax_url,d,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()})})):"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,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(),e.load()}))}a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)});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")):("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")),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"===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)});var e={load:function(){e.getExternalFileSize();var b;a(".input-unload-on-this-page").on("click change",function(){a(this).prop("checked")?a(this).closest("tr").addClass("wpacu_not_load"):a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_global_unload").click(function(){b=a(this).attr("data-handle"),a(this).prop("checked")?a(this).parent("label").addClass("wpacu_global_checked"):a(this).parent("label").removeClass("wpacu_global_checked")}),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").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_bulk_unload_active"):a(this).parent("label").removeClass("wpacu_bulk_unload_active")}),a(".wpacu_load_it_option").click(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")})},getExternalFileSize:function(){a(".wpacu-external-file-size").each(function(){var b=a(this);a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:a(this).attr("data-src")},function(a){b.html(a)})})}};if(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_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").fadeIn("fast"):a("#wpacu-settings-assets-retrieval-mode").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(".wpacu_remove_rule").click(function(){var b=a(this).parents(".wpacu_global_rule_row");a(this).prop("checked")?b.addClass("selected"):b.removeClass("selected")}),a("#wpacu_wrap_assets").length>0&&e.load(),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click","body.branch-5 .edit-post-header__settings button.is-primary",function(){var c=function(){0===a(".edit-post-header__settings .is-saving").length&&(b(),clearInterval(d))},d=setInterval(c,900)})});
|
assets/style.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{max-width:340px;width:100%}.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;margin:0 auto;padding:0;max-width:1200px;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.license-status{position:absolute;font-size:12px;left:0;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.license-status.active{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:1200px;margin:20px auto 30px 0;width:100%;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:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;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{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.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-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite 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]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpacu_meta_box_content{width:99%}#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{color:#c00}#wpacu_meta_box_content div.wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content div.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_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#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-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#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}#wpacu_wrap_assets small{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets p{margin:10px 0!important;line-height:22px!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child,.wpacu_verified{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_asset_row td{padding:10px!important;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_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{color:red!important}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_bulk_unload_active{color:#d54e21}tr.wpacu_global_rule_row.selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 20px 0 0;list-style:none;display:inline-block}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,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%;border:1px solid #e5e5e5!important}.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;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: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: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=submit].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=button].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}.go-pro-link-no-style .tooltip:after,.wordpress-core-file .tooltip:after{content:"";border-width:10px;border-style:solid;top:100%}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .tooltip{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 .tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;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:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .tooltip{visibility:visible}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .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:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .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-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;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-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .toplevel_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_locked_for_pro{opacity:.3}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.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_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_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-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}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!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;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:.2s;transition:.2s}.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:.2s;transition:.2s}.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_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.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{content:'';display:table}.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: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-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active,a.wpacu-assets-collapsible:hover{background-color:#f1f3f8}.wpacu-assets-collapsible-wrap{border:1px solid #e7e7e7}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li{float:left;margin-right:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}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:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content>div{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{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;height:14px;width: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:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{padding:0 8px;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:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.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}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}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 (min-width:768px){.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}}@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 span.dashicons-warning{color:#c00}#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-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}
|
1 |
+
.wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{max-width:340px;width:100%}.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;margin:0 auto;padding:0;max-width:1200px;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.license-status{position:absolute;font-size:12px;left:0;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.license-status.active{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:1200px;margin:20px auto 30px 0;width:100%;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:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;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{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.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-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite 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]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpacu_meta_box_content{width:99%}#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{color:#c00}#wpacu_meta_box_content div.wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content div.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_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#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-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#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{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!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,.wpacu_verified{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_asset_row td{padding:10px!important;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_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{color:red!important}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_bulk_unload_active{color:#d54e21}tr.wpacu_global_rule_row.selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 20px 0 0;list-style:none;display:inline-block}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,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%;border:1px solid #e5e5e5!important}.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;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: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: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=submit].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=button].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}.go-pro-link-no-style .wpacu-tooltip:after,.wordpress-core-file .wpacu-tooltip:after{content:"";border-width:10px;border-style:solid;top:100%}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{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{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;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:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.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:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{position:absolute;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 #0085ba}.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;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{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child{margin-right:0}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.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_locked_for_pro{opacity:.3}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.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-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}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!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;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:.2s;transition:.2s}.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:.2s;transition:.2s}.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_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.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{content:'';display:table}.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: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-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.wpacu-assets-collapsible-wrap{border:1px solid #e7e7e7}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li{float:left;margin-right:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}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:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content>div{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{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;height:14px;width: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:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;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_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}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}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 (min-width:768px){.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}}@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 span.dashicons-warning{color:#c00}#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-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}
|
classes/AdminBar.php
CHANGED
@@ -30,24 +30,103 @@ class AdminBar
|
|
30 |
*/
|
31 |
public function topBarInfo($wp_admin_bar)
|
32 |
{
|
|
|
|
|
33 |
if (Main::instance()->settings['test_mode']) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
$wp_admin_bar->add_menu(array(
|
35 |
-
'
|
36 |
-
'
|
37 |
-
'
|
|
|
38 |
));
|
|
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
$wp_admin_bar->add_menu(array(
|
41 |
-
'parent' => '
|
42 |
-
'id' => '
|
43 |
-
'title' => 'With "Test Mode"
|
44 |
));
|
45 |
|
46 |
$wp_admin_bar->add_menu(array(
|
47 |
-
'parent' => '
|
48 |
-
'id' => '
|
49 |
-
'title' => 'The visitors will
|
50 |
));
|
51 |
}
|
|
|
52 |
}
|
53 |
}
|
30 |
*/
|
31 |
public function topBarInfo($wp_admin_bar)
|
32 |
{
|
33 |
+
$topTitle = WPACU_PLUGIN_TITLE;
|
34 |
+
|
35 |
if (Main::instance()->settings['test_mode']) {
|
36 |
+
$topTitle .= ' <span class="dashicons dashicons-admin-tools"></span> <strong>TEST MODE</strong> is <strong>ON</strong>';
|
37 |
+
}
|
38 |
+
|
39 |
+
$goBackToCurrentUrl = '&_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) );
|
40 |
+
|
41 |
+
$wp_admin_bar->add_menu(array(
|
42 |
+
'id' => 'assetcleanup-parent',
|
43 |
+
'title' => $topTitle,
|
44 |
+
'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings')
|
45 |
+
));
|
46 |
+
|
47 |
+
$wp_admin_bar->add_menu(array(
|
48 |
+
'parent' => 'assetcleanup-parent',
|
49 |
+
'id' => 'assetcleanup-settings',
|
50 |
+
'title' => 'Settings',
|
51 |
+
'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings')
|
52 |
+
));
|
53 |
+
|
54 |
+
if (Main::instance()->settings['combine_loaded_css']) {
|
55 |
+
$wp_admin_bar->add_menu( array(
|
56 |
+
'parent' => 'assetcleanup-parent',
|
57 |
+
'id' => 'assetcleanup-clear-all-css-cache',
|
58 |
+
'title' => 'Clear Combined CSS Cache',
|
59 |
+
'href' => wp_nonce_url( admin_url( 'admin-post.php?action=assetcleanup_clear_assets_cache' . $goBackToCurrentUrl ),
|
60 |
+
'purge_css_cache' )
|
61 |
+
) );
|
62 |
+
}
|
63 |
+
|
64 |
+
// Only trigger in the front-end view
|
65 |
+
if (! is_admin()) {
|
66 |
+
if ( ! Misc::isHomePage() ) {
|
67 |
+
// Not on the home page
|
68 |
+
$homepageManageAssetsHref = Main::instance()->settings['frontend_show']
|
69 |
+
? get_site_url().'#wpacu_wrap_assets'
|
70 |
+
: admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_home_page' );
|
71 |
+
|
72 |
+
$wp_admin_bar->add_menu(array(
|
73 |
+
'parent' => 'assetcleanup-parent',
|
74 |
+
'id' => 'assetcleanup-homepage',
|
75 |
+
'title' => 'Manage Homepage Assets',
|
76 |
+
'href' => $homepageManageAssetsHref
|
77 |
+
));
|
78 |
+
} else {
|
79 |
+
// On the home page
|
80 |
+
// Front-end view is disabled! Go to Dashboard link
|
81 |
+
if ( ! Main::instance()->settings['frontend_show'] ) {
|
82 |
+
$wp_admin_bar->add_menu( array(
|
83 |
+
'parent' => 'assetcleanup-parent',
|
84 |
+
'id' => 'assetcleanup-homepage',
|
85 |
+
'title' => 'Manage Page Assets',
|
86 |
+
'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_home_page' )
|
87 |
+
) );
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
if (! is_admin() && Main::instance()->settings['frontend_show']) {
|
93 |
$wp_admin_bar->add_menu(array(
|
94 |
+
'parent' => 'assetcleanup-parent',
|
95 |
+
'id' => 'assetcleanup-jump-to-assets-list',
|
96 |
+
'title' => 'Manage Page Assets',
|
97 |
+
'href' => '#wpacu_wrap_assets'
|
98 |
));
|
99 |
+
}
|
100 |
|
101 |
+
$wp_admin_bar->add_menu(array(
|
102 |
+
'parent' => 'assetcleanup-parent',
|
103 |
+
'id' => 'assetcleanup-bulk-unloaded',
|
104 |
+
'title' => 'Bulk Unloaded',
|
105 |
+
'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_bulk_unloads')
|
106 |
+
));
|
107 |
+
|
108 |
+
$wp_admin_bar->add_menu(array(
|
109 |
+
'parent' => 'assetcleanup-parent',
|
110 |
+
'id' => 'assetcleanup-support-forum',
|
111 |
+
'title' => 'Support Forum',
|
112 |
+
'href' => 'https://wordpress.org/support/plugin/wp-asset-clean-up',
|
113 |
+
'meta' => array('target' => '_blank')
|
114 |
+
));
|
115 |
+
|
116 |
+
/*
|
117 |
+
if (Main::instance()->settings['test_mode']) {
|
118 |
$wp_admin_bar->add_menu(array(
|
119 |
+
'parent' => 'assetcleanup-parent',
|
120 |
+
'id' => 'assetcleanup-test-mode-info',
|
121 |
+
'title' => 'With "Test Mode" on, anything will be applied only for your view.',
|
122 |
));
|
123 |
|
124 |
$wp_admin_bar->add_menu(array(
|
125 |
+
'parent' => 'assetcleanup-parent',
|
126 |
+
'id' => 'assetcleanup-test-mode-info-2',
|
127 |
+
'title' => 'The visitors will see the pages as if the plugin is disabled. <a target="_blank" style="display:inline-block; text-decoration: underline; padding-left: 5px;" href="https://assetcleanup.com/docs/">More</a>',
|
128 |
));
|
129 |
}
|
130 |
+
*/
|
131 |
}
|
132 |
}
|
classes/Main.php
CHANGED
@@ -401,7 +401,7 @@ class Main
|
|
401 |
|
402 |
$allScripts = $wp_scripts;
|
403 |
|
404 |
-
if (
|
405 |
$i = $this->lastScriptPos;
|
406 |
|
407 |
foreach ($allScripts->registered as $handle => $value) {
|
@@ -526,7 +526,7 @@ class Main
|
|
526 |
|
527 |
$allStyles = $wp_styles;
|
528 |
|
529 |
-
if (
|
530 |
$i = $this->lastStylePos;
|
531 |
|
532 |
foreach ($allStyles->registered as $handle => $value) {
|
@@ -1504,7 +1504,12 @@ class Main
|
|
1504 |
*/
|
1505 |
public function doDisableEmojis()
|
1506 |
{
|
1507 |
-
|
|
|
|
|
|
|
|
|
|
|
1508 |
return;
|
1509 |
}
|
1510 |
|
401 |
|
402 |
$allScripts = $wp_scripts;
|
403 |
|
404 |
+
if ($allScripts !== null && ! empty($allScripts->registered)) {
|
405 |
$i = $this->lastScriptPos;
|
406 |
|
407 |
foreach ($allScripts->registered as $handle => $value) {
|
526 |
|
527 |
$allStyles = $wp_styles;
|
528 |
|
529 |
+
if ($allStyles !== null && isset($allStyles->registered)) {
|
530 |
$i = $this->lastStylePos;
|
531 |
|
532 |
foreach ($allStyles->registered as $handle => $value) {
|
1504 |
*/
|
1505 |
public function doDisableEmojis()
|
1506 |
{
|
1507 |
+
/*
|
1508 |
+
DO NOT disable Emojis if the following apply:
|
1509 |
+
- Test Mode Enabled & Admin Logged in
|
1510 |
+
- The user is within the admin panel (Dashboard)
|
1511 |
+
*/
|
1512 |
+
if ($this->preventUnloadAssets() || is_admin()) {
|
1513 |
return;
|
1514 |
}
|
1515 |
|
classes/Menu.php
CHANGED
@@ -60,7 +60,6 @@ class Menu
|
|
60 |
array(new Settings, 'settingsPage')
|
61 |
);
|
62 |
|
63 |
-
|
64 |
add_submenu_page(
|
65 |
self::$slug,
|
66 |
__('Home Page', WPACU_PLUGIN_TEXT_DOMAIN),
|
60 |
array(new Settings, 'settingsPage')
|
61 |
);
|
62 |
|
|
|
63 |
add_submenu_page(
|
64 |
self::$slug,
|
65 |
__('Home Page', WPACU_PLUGIN_TEXT_DOMAIN),
|
classes/OptimizeCss.php
ADDED
@@ -0,0 +1,615 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WpAssetCleanUp;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class OptimizeCss
|
6 |
+
* @package WpAssetCleanUp
|
7 |
+
*/
|
8 |
+
class OptimizeCss
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* @var string
|
12 |
+
*/
|
13 |
+
public static $relPathCssCacheDir = '/cache/asset-cleanup/css/'; // keep trailing slash at the end
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var
|
17 |
+
*/
|
18 |
+
public $transientCssName;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
public static $transientCssNamePrefix = 'wpacu_css_';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var float|int
|
27 |
+
*/
|
28 |
+
public static $transientExpiresIn = 60 * 60 * 12; // 8 hours in seconds
|
29 |
+
|
30 |
+
/**
|
31 |
+
* OptimizeCss constructor.
|
32 |
+
*/
|
33 |
+
public function __construct()
|
34 |
+
{
|
35 |
+
add_action('switch_theme', array($this, 'clearAllCacheTransients'));
|
36 |
+
add_action('after_switch_theme', array($this, 'clearAllCacheTransients'));
|
37 |
+
|
38 |
+
// Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
|
39 |
+
add_action('before_rocket_clean_domain', array($this, 'clearAllCacheTransients'));
|
40 |
+
|
41 |
+
// Is the CSS cache transient deleted? Remove the cached CSS file too
|
42 |
+
// The action below is triggered prior to transient deletion and ONLY in the front-end view (not within the Dashboard)
|
43 |
+
add_action('plugins_loaded', array($this, 'afterPluginsLoaded'));
|
44 |
+
|
45 |
+
add_action('admin_post_assetcleanup_clear_assets_cache', array($this, 'clearAllCacheTransients'));
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
*
|
50 |
+
*/
|
51 |
+
public function afterPluginsLoaded()
|
52 |
+
{
|
53 |
+
if (! is_admin() && (strpos($_SERVER['REQUEST_URI'], '?') === false)) {
|
54 |
+
$toMdFive = $_SERVER['REQUEST_URI'];
|
55 |
+
|
56 |
+
if (is_user_logged_in()) {
|
57 |
+
global $current_user;
|
58 |
+
|
59 |
+
if (isset($current_user->ID) && $current_user->ID > 0) {
|
60 |
+
$toMdFive .= '_'.$current_user->ID;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
$this->transientCssName = self::$transientCssNamePrefix . md5( $toMdFive );
|
65 |
+
|
66 |
+
// @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
|
67 |
+
//add_action( 'delete_transient_' . $this->transientCssName, array( $this, 'clearTransientCssCacheFile' ) );
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
*
|
73 |
+
*/
|
74 |
+
public function init()
|
75 |
+
{
|
76 |
+
add_action('wp_loaded', function() {
|
77 |
+
if (! $this->doCssCombine()) {
|
78 |
+
return;
|
79 |
+
}
|
80 |
+
|
81 |
+
ob_start(function ($htmlSource) {
|
82 |
+
$useDom = function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('DOMDocument');
|
83 |
+
|
84 |
+
if (! $useDom) {
|
85 |
+
return $htmlSource;
|
86 |
+
}
|
87 |
+
|
88 |
+
$cssCachedFileExists = false;
|
89 |
+
|
90 |
+
// Speed up processing by getting the already existing final CSS file URI
|
91 |
+
// This will avoid parsing the HTML DOM and determine the combined URI paths for all the CSS files
|
92 |
+
$localFinalCssFileData = $this->getCssCachedTransient();
|
93 |
+
|
94 |
+
// $uriToFinalCssFile will always be relative ONLY within WP_CONTENT_DIR . self::$relPathCssCacheDir
|
95 |
+
// which is usually "wp-content/cache/asset-cleanup/css/"
|
96 |
+
|
97 |
+
if (! empty($localFinalCssFileData) && isset($localFinalCssFileData['local_final_css_file']) && file_exists($localFinalCssFileData['local_final_css_file'])) {
|
98 |
+
/*
|
99 |
+
* URIs to the LINK tags are already cached; No need to parse the DOM
|
100 |
+
*/
|
101 |
+
$uriToFinalCssFile = $localFinalCssFileData['uri_final_css_file'];
|
102 |
+
$linkHrefs = $localFinalCssFileData['link_hrefs'];
|
103 |
+
$cssCachedFileExists = true;
|
104 |
+
} else {
|
105 |
+
/*
|
106 |
+
* NO CACHING TRANSIENT; Parse the DOM
|
107 |
+
*/
|
108 |
+
// Nothing in the database records or the retrieved cached file does not exist?
|
109 |
+
$this->deleteCssCachedTransient();
|
110 |
+
|
111 |
+
// Fetch the DOM, and then set a new transient
|
112 |
+
$document = new \DOMDocument();
|
113 |
+
$document->loadHTML($htmlSource);
|
114 |
+
|
115 |
+
$documentHead = $document->getElementsByTagName('head')->item(0);
|
116 |
+
|
117 |
+
libxml_use_internal_errors( true );
|
118 |
+
|
119 |
+
$combinedUriPaths = $hrefUriPreloads = $localAssetsPaths = $linkHrefs = array();
|
120 |
+
|
121 |
+
foreach ($documentHead->getElementsByTagName('link') as $tagObject) {
|
122 |
+
if (! $tagObject->hasAttributes()) {
|
123 |
+
continue;
|
124 |
+
}
|
125 |
+
|
126 |
+
$getHref = $checkCssPreload = $href = false;
|
127 |
+
|
128 |
+
foreach ($tagObject->attributes as $attrObj) {
|
129 |
+
// Only rel="stylesheet" (with no rel="preload" associated with it) gets prepared for combining as links with rel="preload" (if any) are never combined into a standard render-blocking CSS file
|
130 |
+
// rel="preload" is there for a reason to make sure the CSS code is made available earlier prior to the one from rel="stylesheet" which is render-blocking
|
131 |
+
if ($attrObj->nodeName === 'rel' && $attrObj->nodeValue === 'stylesheet') {
|
132 |
+
$getHref = true;
|
133 |
+
}
|
134 |
+
|
135 |
+
if ($getHref && $attrObj->nodeName === 'href') {
|
136 |
+
// Make sure that tag value is checked and it's matched against the value from the HTML source code
|
137 |
+
//$htmlSource .= $attrObj->nodeValue."\n";
|
138 |
+
$href = (string)$attrObj->nodeValue;
|
139 |
+
|
140 |
+
$localAssetPath = self::getLocalAssetPath($href);
|
141 |
+
|
142 |
+
if ($localAssetPath) {
|
143 |
+
$combinedUriPaths[] = self::getHrefRelPath($href);
|
144 |
+
$localAssetsPaths[$href] = $localAssetPath;
|
145 |
+
$linkHrefs[] = $href;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
// Check if there is any rel="preload" connected to the rel="stylesheet"
|
150 |
+
// and make sure the file is not added to the final CSS combined file
|
151 |
+
if ($attrObj->nodeName === 'rel' && $attrObj->nodeValue === 'preload') {
|
152 |
+
$checkCssPreload = true;
|
153 |
+
}
|
154 |
+
|
155 |
+
if ($checkCssPreload && $attrObj->nodeName === 'href') {
|
156 |
+
$hrefUriPreloads[] = self::getHrefRelPath($attrObj->nodeValue);
|
157 |
+
}
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
// Any rel="preload" found? Remove the stylesheet from the combination
|
162 |
+
if (! empty($hrefUriPreloads)) {
|
163 |
+
foreach ($hrefUriPreloads as $hrefUriPreload) {
|
164 |
+
if (in_array($hrefUriPreload, $combinedUriPaths)) {
|
165 |
+
$linkHrefUriKey = array_search($hrefUriPreload, $combinedUriPaths);
|
166 |
+
unset($combinedUriPaths[$linkHrefUriKey]);
|
167 |
+
|
168 |
+
foreach (array_keys($localAssetsPaths) as $localAssetPathKey) {
|
169 |
+
if (substr($localAssetPathKey, -strlen($hrefUriPreload)) === $hrefUriPreload) {
|
170 |
+
unset($localAssetsPaths[$localAssetPathKey]);
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
foreach ($linkHrefs as $linkHrefKey => $linkHref) {
|
175 |
+
if (substr($linkHref, -strlen($hrefUriPreload)) === $hrefUriPreload) {
|
176 |
+
unset($linkHrefs[$linkHrefKey]);
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
// No Link Tags? Just return output
|
184 |
+
if (empty($linkHrefs)) {
|
185 |
+
return $htmlSource;
|
186 |
+
}
|
187 |
+
|
188 |
+
$maybeDoCssCombine = $this->maybeDoCssCombine( sha1( implode('', $combinedUriPaths) ), $localAssetsPaths );
|
189 |
+
|
190 |
+
// Local path to combined CSS file
|
191 |
+
$localFinalCssFile = $maybeDoCssCombine['local_final_css_file'];
|
192 |
+
|
193 |
+
// URI (e.g. /wp-content/cache/asset-cleanup/[file-name-here.css]) to the combined CSS file
|
194 |
+
$uriToFinalCssFile = $maybeDoCssCombine['uri_final_css_file'];
|
195 |
+
|
196 |
+
if (file_exists($localFinalCssFile)) {
|
197 |
+
$cssCachedFileExists = true;
|
198 |
+
$this->setCssCachedTransient( $uriToFinalCssFile, $linkHrefs );
|
199 |
+
}
|
200 |
+
}
|
201 |
+
|
202 |
+
if ($cssCachedFileExists) {
|
203 |
+
$finalTagUrl = WP_CONTENT_URL . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
204 |
+
|
205 |
+
$finalCssTag = <<<HTML
|
206 |
+
<link id="asset-cleanup-combined-css" rel="stylesheet" href="{$finalTagUrl}" type="text/css" media="all" />
|
207 |
+
HTML;
|
208 |
+
|
209 |
+
// Append the combine CSS Link tag right after <head> section of the website
|
210 |
+
// Any other <head> strings will be ignored as only the first one from the HTML source code matters
|
211 |
+
// e.g. some may use <head> inside a JavaScript code or part of a comment
|
212 |
+
$htmlSource = preg_replace('#<head>#si', '<head>'."\n" . $finalCssTag . "\n", $htmlSource, 1);
|
213 |
+
$htmlSource = $this->stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource); // Strip the combined files to avoid duplicate code
|
214 |
+
}
|
215 |
+
|
216 |
+
return $htmlSource;
|
217 |
+
});
|
218 |
+
}, 1);
|
219 |
+
}
|
220 |
+
|
221 |
+
/**
|
222 |
+
* @param $linkHrefs
|
223 |
+
* @param $htmlSource
|
224 |
+
*
|
225 |
+
* @return mixed
|
226 |
+
*/
|
227 |
+
public function stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource)
|
228 |
+
{
|
229 |
+
preg_match_all('#<link[^>]*stylesheet[^>]*(>)#Usmi', $htmlSource, $matchesLinkStylesheetTags, PREG_SET_ORDER);
|
230 |
+
|
231 |
+
foreach ($matchesLinkStylesheetTags as $matchLinkStylesheetTag) {
|
232 |
+
$matchedLinkStylesheetTag = $matchLinkStylesheetTag[0];
|
233 |
+
|
234 |
+
$domLink = new \DOMDocument();
|
235 |
+
$domLink->loadHTML($matchedLinkStylesheetTag);
|
236 |
+
|
237 |
+
foreach ($domLink->getElementsByTagName( 'link' ) as $tagLinkObject) {
|
238 |
+
if (! $tagLinkObject->hasAttributes()) {
|
239 |
+
continue;
|
240 |
+
}
|
241 |
+
|
242 |
+
foreach ($tagLinkObject->attributes as $tagLinkAttrs) {
|
243 |
+
if ($tagLinkAttrs->nodeName === 'href' && in_array($tagLinkAttrs->nodeValue, $linkHrefs)) {
|
244 |
+
$htmlSource = str_replace($matchedLinkStylesheetTag, '', $htmlSource);
|
245 |
+
}
|
246 |
+
}
|
247 |
+
}
|
248 |
+
}
|
249 |
+
|
250 |
+
return $htmlSource;
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* @param $shaOneCombinedUriPaths
|
255 |
+
* @param $localAssetsPaths
|
256 |
+
*
|
257 |
+
* @return array
|
258 |
+
*/
|
259 |
+
public function maybeDoCssCombine($shaOneCombinedUriPaths, $localAssetsPaths)
|
260 |
+
{
|
261 |
+
$current_user = wp_get_current_user();
|
262 |
+
$dirToUserCachedFile = ((isset($current_user->ID) && $current_user->ID > 0) ? 'logged-in/'.$current_user->ID.'/' : '');
|
263 |
+
|
264 |
+
$uriToFinalCssFile = $dirToUserCachedFile . $shaOneCombinedUriPaths . '.css';
|
265 |
+
$localFinalCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
266 |
+
|
267 |
+
$localDirForCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $dirToUserCachedFile;
|
268 |
+
|
269 |
+
// Only combine if $shaOneCombinedUriPaths.css does not exist
|
270 |
+
// If "?ver" value changes on any of the assets or the asset list changes in any way
|
271 |
+
// then $shaOneCombinedUriPaths will change too and a new CSS file will be generated and loaded
|
272 |
+
|
273 |
+
// || defined('WPACU_DEV_ALWAYS_GENERATE_COMBINED_CSS'
|
274 |
+
if (! file_exists($localFinalCssFile)) {
|
275 |
+
// Change $assetsContents as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated
|
276 |
+
$finalAssetsContents = '';
|
277 |
+
|
278 |
+
foreach ($localAssetsPaths as $assetHref => $localAssetsPath) {
|
279 |
+
$posLastSlash = strrpos($assetHref, '/');
|
280 |
+
$pathToAssetDir = substr($assetHref, 0, $posLastSlash);
|
281 |
+
|
282 |
+
$parseUrl = parse_url($pathToAssetDir);
|
283 |
+
|
284 |
+
if (isset($parseUrl['scheme']) && $parseUrl['scheme'] !== '') {
|
285 |
+
$pathToAssetDir = str_replace(
|
286 |
+
array('http://'.$parseUrl['host'], 'https://'.$parseUrl['host']),
|
287 |
+
'',
|
288 |
+
$pathToAssetDir
|
289 |
+
);
|
290 |
+
} elseif (strpos($pathToAssetDir, '//') === 0) {
|
291 |
+
$pathToAssetDir = str_replace(
|
292 |
+
array('//'.$parseUrl['host'], '//'.$parseUrl['host']),
|
293 |
+
'',
|
294 |
+
$pathToAssetDir
|
295 |
+
);
|
296 |
+
}
|
297 |
+
|
298 |
+
$assetContent = file_get_contents($localAssetsPath);
|
299 |
+
|
300 |
+
if ($assetContent) {
|
301 |
+
$finalAssetsContents .= $this->maybeFixCssBackgroundUrls($assetContent, $pathToAssetDir . '/') . "\n\n";
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
$finalAssetsContents = trim($finalAssetsContents);
|
306 |
+
|
307 |
+
if ($finalAssetsContents) {
|
308 |
+
if ($dirToUserCachedFile !== '' && isset($current_user->ID) && $current_user->ID > 0) {
|
309 |
+
if (!mkdir($localDirForCssFile) && !is_dir($localDirForCssFile)) {
|
310 |
+
return array('uri_final_css_file' => '', 'local_final_css_file' => '');
|
311 |
+
}
|
312 |
+
}
|
313 |
+
|
314 |
+
@file_put_contents($localFinalCssFile, $finalAssetsContents);
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
return array(
|
319 |
+
'uri_final_css_file' => $uriToFinalCssFile,
|
320 |
+
'local_final_css_file' => $localFinalCssFile
|
321 |
+
);
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* @return array
|
326 |
+
*/
|
327 |
+
public function getCssCachedTransient()
|
328 |
+
{
|
329 |
+
// Only clean request URIs allowed
|
330 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
331 |
+
return array();
|
332 |
+
}
|
333 |
+
|
334 |
+
$optionValue = get_transient($this->transientCssName);
|
335 |
+
|
336 |
+
if ($optionValue) {
|
337 |
+
$optionValueArray = json_decode($optionValue, ARRAY_A);
|
338 |
+
|
339 |
+
$uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
|
340 |
+
$linkHrefs = $optionValueArray['link_hrefs'];
|
341 |
+
|
342 |
+
if ($uriToFinalCssFile) {
|
343 |
+
return array(
|
344 |
+
'uri_final_css_file' => $uriToFinalCssFile,
|
345 |
+
'local_final_css_file' => WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile,
|
346 |
+
'link_hrefs' => $linkHrefs
|
347 |
+
);
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
return array();
|
352 |
+
}
|
353 |
+
|
354 |
+
/**
|
355 |
+
* @param $uriToFinalCssFile
|
356 |
+
* @param array $linkHrefs
|
357 |
+
*/
|
358 |
+
public function setCssCachedTransient($uriToFinalCssFile, $linkHrefs)
|
359 |
+
{
|
360 |
+
// Only clean request URIs allowed
|
361 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
362 |
+
return;
|
363 |
+
}
|
364 |
+
|
365 |
+
$optionValue = json_encode(
|
366 |
+
array(
|
367 |
+
'request_' => $_SERVER['REQUEST_URI'],
|
368 |
+
'uri_to_final_css_file' => $uriToFinalCssFile,
|
369 |
+
'link_hrefs' => $linkHrefs
|
370 |
+
)
|
371 |
+
);
|
372 |
+
|
373 |
+
set_transient($this->transientCssName, $optionValue, self::$transientExpiresIn);
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
*
|
378 |
+
*/
|
379 |
+
public function deleteCssCachedTransient()
|
380 |
+
{
|
381 |
+
// Only clean request URIs allowed
|
382 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
383 |
+
return;
|
384 |
+
}
|
385 |
+
|
386 |
+
delete_transient($this->transientCssName);
|
387 |
+
}
|
388 |
+
|
389 |
+
/**
|
390 |
+
* @param $cssContent
|
391 |
+
* @param $appendBefore
|
392 |
+
*
|
393 |
+
* @return mixed
|
394 |
+
*/
|
395 |
+
public function maybeFixCssBackgroundUrls($cssContent, $appendBefore)
|
396 |
+
{
|
397 |
+
$cssContent = str_replace(
|
398 |
+
array('url("../', "url('../", 'url(../'),
|
399 |
+
array('url("'.$appendBefore.'../', "url('".$appendBefore.'../', 'url('.$appendBefore.'../'),
|
400 |
+
$cssContent
|
401 |
+
);
|
402 |
+
|
403 |
+
// Avoid Background URLs starting with "data" or "http" as they do not need to have the path updated
|
404 |
+
preg_match_all('/url\((?![\'"]?(?:data|http):)[\'"]?([^\'"\)]*)[\'"]?\)/i', $cssContent, $matches, PREG_PATTERN_ORDER);
|
405 |
+
|
406 |
+
// If it start with forward slash (/), it doesn't need fix, just skip it
|
407 |
+
// Also skip ../ types as they were already processed
|
408 |
+
$toSkipList = array("url('/", 'url("/', 'url(/');
|
409 |
+
|
410 |
+
//$cssContent = "\n".print_r($matches, true)."\n"; // For DEV purposes only
|
411 |
+
|
412 |
+
foreach ($matches[0] as $match) {
|
413 |
+
$fullUrlMatch = trim($match);
|
414 |
+
|
415 |
+
foreach ($toSkipList as $toSkip) {
|
416 |
+
if (substr($fullUrlMatch, 0, strlen($toSkip)) === $toSkip) {
|
417 |
+
continue 2; // doesn't need any fix, go to the next match
|
418 |
+
}
|
419 |
+
}
|
420 |
+
|
421 |
+
// Go through all situations: with and without quotes, with traversal directory (e.g. ../../)
|
422 |
+
$alteredMatch = str_replace(
|
423 |
+
array('url("', "url('"),
|
424 |
+
array('url("'.$appendBefore, "url('".$appendBefore),
|
425 |
+
$fullUrlMatch
|
426 |
+
);
|
427 |
+
|
428 |
+
$alteredMatch = trim($alteredMatch);
|
429 |
+
|
430 |
+
if (! in_array($fullUrlMatch{4}, array("'", '"', '/', '.'))) {
|
431 |
+
$alteredMatch = str_replace('url(', 'url('.$appendBefore, $alteredMatch);
|
432 |
+
$alteredMatch = str_replace(array('")', '\')'), ')', $alteredMatch);
|
433 |
+
}
|
434 |
+
|
435 |
+
// Finally, apply the changes
|
436 |
+
$cssContent = str_replace($fullUrlMatch, $alteredMatch, $cssContent);
|
437 |
+
|
438 |
+
// Bug fix
|
439 |
+
$cssContent = str_replace(
|
440 |
+
array($appendBefore.'"'.$appendBefore, $appendBefore."'".$appendBefore),
|
441 |
+
$appendBefore,
|
442 |
+
$cssContent
|
443 |
+
);
|
444 |
+
}
|
445 |
+
|
446 |
+
return $cssContent;
|
447 |
+
}
|
448 |
+
|
449 |
+
/**
|
450 |
+
* @param $href
|
451 |
+
*
|
452 |
+
* @return bool|string
|
453 |
+
*/
|
454 |
+
public static function getLocalAssetPath($href)
|
455 |
+
{
|
456 |
+
/*
|
457 |
+
* Validate it first
|
458 |
+
*/
|
459 |
+
// Asset's Host
|
460 |
+
$assetHost = strtolower(parse_url($href, PHP_URL_HOST));
|
461 |
+
|
462 |
+
// First check the host name
|
463 |
+
$siteUrl = get_option('siteurl');
|
464 |
+
$siteUrlHost = strtolower(parse_url($siteUrl, PHP_URL_HOST));
|
465 |
+
|
466 |
+
if ($assetHost !== $siteUrlHost) {
|
467 |
+
return false;
|
468 |
+
}
|
469 |
+
|
470 |
+
$hrefRelPath = self::getHrefRelPath($href);
|
471 |
+
|
472 |
+
if (strpos($hrefRelPath, '/') === 0) {
|
473 |
+
$hrefRelPath = substr($hrefRelPath, 1);
|
474 |
+
}
|
475 |
+
|
476 |
+
$localAssetPath = ABSPATH . $hrefRelPath;
|
477 |
+
|
478 |
+
//file_put_contents(WP_CONTENT_DIR . '/cache/asset-cleanup/css/data.log', $localAssetPath);
|
479 |
+
|
480 |
+
if (strpos($localAssetPath, '?ver=') !== false) {
|
481 |
+
list($localAssetPathAlt,) = explode('?ver=', $localAssetPath);
|
482 |
+
$localAssetPath = $localAssetPathAlt;
|
483 |
+
}
|
484 |
+
|
485 |
+
if (strrchr($localAssetPath, '.') === '.css' && file_exists($localAssetPath)) {
|
486 |
+
return $localAssetPath;
|
487 |
+
}
|
488 |
+
|
489 |
+
return false;
|
490 |
+
}
|
491 |
+
|
492 |
+
/**
|
493 |
+
* @param $href
|
494 |
+
*
|
495 |
+
* @return mixed
|
496 |
+
*/
|
497 |
+
public static function getHrefRelPath($href)
|
498 |
+
{
|
499 |
+
$parseUrl = parse_url($href);
|
500 |
+
$hrefHost = $parseUrl['host'];
|
501 |
+
|
502 |
+
// Sometimes host is different on Staging websites such as the ones from Siteground
|
503 |
+
// e.g. staging1.domain.com and domain.com
|
504 |
+
// We need to make sure that the URI path is fetched correctly based on the host value from the $href
|
505 |
+
$siteDbUrl = get_option('siteurl');
|
506 |
+
$parseDbSiteUrl = parse_url(get_option('siteurl'));
|
507 |
+
|
508 |
+
$dbSiteUrlHost = $parseDbSiteUrl['host'];
|
509 |
+
|
510 |
+
$finalBaseUrl = str_replace($dbSiteUrlHost, $hrefHost, $siteDbUrl);
|
511 |
+
|
512 |
+
return str_replace($finalBaseUrl, '', $href);
|
513 |
+
}
|
514 |
+
|
515 |
+
/**
|
516 |
+
* @return bool
|
517 |
+
*/
|
518 |
+
public function doCssCombine()
|
519 |
+
{
|
520 |
+
// No CSS files are combined in the Dashboard
|
521 |
+
// Always in the front-end view
|
522 |
+
// Do not combine if there's a POST request as there could be assets loading conditionally
|
523 |
+
// that might not be needed when the page is accessed without POST, making the final CSS file larger
|
524 |
+
if (is_admin() || ! empty($_POST) || array_key_exists('wpacu_no_css_combine', $_GET)) {
|
525 |
+
return false; // Do not combine
|
526 |
+
}
|
527 |
+
|
528 |
+
$pluginSettings = Main::instance()->settings;
|
529 |
+
|
530 |
+
if ($pluginSettings['test_mode']) {
|
531 |
+
return false; // Do not combine anything is "Test Mode" is ON
|
532 |
+
}
|
533 |
+
|
534 |
+
if ($pluginSettings['combine_loaded_css'] === '') {
|
535 |
+
return false; // Do not combine
|
536 |
+
}
|
537 |
+
|
538 |
+
if ($pluginSettings['combine_loaded_css'] === 'for_admin' && Menu::userCanManageAssets()) {
|
539 |
+
return true; // Do combine
|
540 |
+
}
|
541 |
+
|
542 |
+
if ($pluginSettings['combine_loaded_css'] === 'for_all') {
|
543 |
+
return true; // Do combine
|
544 |
+
}
|
545 |
+
|
546 |
+
// Finally, return false as none of the checks above matched
|
547 |
+
return false;
|
548 |
+
}
|
549 |
+
|
550 |
+
/**
|
551 |
+
*
|
552 |
+
*/
|
553 |
+
public function clearAllCacheTransients()
|
554 |
+
{
|
555 |
+
global $wpdb;
|
556 |
+
|
557 |
+
// First, select all and get the combined CSS file names in order to be deleted
|
558 |
+
// As the files will be regenerated on page loads
|
559 |
+
$transientNamePrefix = self::$transientCssNamePrefix;
|
560 |
+
|
561 |
+
$sqlSelect = <<<SQL
|
562 |
+
SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name LIKE '_transient_{$transientNamePrefix}%'
|
563 |
+
SQL;
|
564 |
+
$sqlResults = $wpdb->get_results($sqlSelect, ARRAY_A);
|
565 |
+
|
566 |
+
foreach ($sqlResults as $sqlResult) {
|
567 |
+
// 53 = length of the following
|
568 |
+
// _transient_ (11) + self::$transientCssNamePrefix + MD5 value (always 32)
|
569 |
+
$optionNameValidLength = 11 + strlen(self::$transientCssNamePrefix) + 32;
|
570 |
+
|
571 |
+
// nothing is left by chance to make sure the right transients gets deleted
|
572 |
+
if (strlen($sqlResult['option_name']) === $optionNameValidLength) {
|
573 |
+
delete_transient( str_replace( '_transient_', '', $sqlResult['option_name'] ) );
|
574 |
+
// @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
|
575 |
+
//$this->removeCachedCssFile( $sqlResult['option_value'] );
|
576 |
+
}
|
577 |
+
}
|
578 |
+
|
579 |
+
if ( wp_get_referer() ) {
|
580 |
+
wp_safe_redirect( wp_get_referer() );
|
581 |
+
}
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* Triggers in the front-end view only for the current viewed page
|
586 |
+
*/
|
587 |
+
/*
|
588 |
+
public function clearTransientCssCacheFile()
|
589 |
+
{
|
590 |
+
$optionValue = get_transient($this->transientCssName);
|
591 |
+
|
592 |
+
if ($optionValue) {
|
593 |
+
$this->removeCachedCssFile($optionValue);
|
594 |
+
}
|
595 |
+
}
|
596 |
+
*/
|
597 |
+
|
598 |
+
/**
|
599 |
+
* @param $optionValue
|
600 |
+
*/
|
601 |
+
/*
|
602 |
+
public function removeCachedCssFile($optionValue)
|
603 |
+
{
|
604 |
+
$optionValueArray = json_decode($optionValue, ARRAY_A);
|
605 |
+
$uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
|
606 |
+
|
607 |
+
$fullLocalPathToCachedCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
608 |
+
|
609 |
+
// Check the extension to make sure a CSS file is in fact deleted from the cache
|
610 |
+
if (file_exists($fullLocalPathToCachedCssFile) && strrchr($uriToFinalCssFile, '.') === '.css') {
|
611 |
+
@unlink($fullLocalPathToCachedCssFile);
|
612 |
+
}
|
613 |
+
}
|
614 |
+
*/
|
615 |
+
}
|
classes/OwnAssets.php
CHANGED
@@ -45,21 +45,42 @@ class OwnAssets
|
|
45 |
*/
|
46 |
public function inlineCode()
|
47 |
{
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
/* Add some spacing below the last text */
|
59 |
-
#wp-admin-bar-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
63 |
}
|
64 |
|
65 |
/**
|
@@ -69,9 +90,8 @@ class OwnAssets
|
|
69 |
{
|
70 |
?>
|
71 |
<style type="text/css">
|
72 |
-
.
|
73 |
-
|
74 |
-
}
|
75 |
</style>
|
76 |
<?php
|
77 |
}
|
@@ -165,13 +185,13 @@ class OwnAssets
|
|
165 |
{
|
166 |
global $post, $pagenow;
|
167 |
|
168 |
-
|
169 |
|
170 |
$getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
|
171 |
|
172 |
$postId = isset($post->ID) ? $post->ID : 0;
|
173 |
|
174 |
-
if ($getPostId > 0 && $getPostId
|
175 |
$postId = $getPostId;
|
176 |
}
|
177 |
|
45 |
*/
|
46 |
public function inlineCode()
|
47 |
{
|
48 |
+
if (is_admin_bar_showing()) {
|
49 |
+
?>
|
50 |
+
<style type="text/css">
|
51 |
+
#wp-admin-bar-assetcleanup-parent span.dashicons {
|
52 |
+
width: 15px;
|
53 |
+
height: 15px;
|
54 |
+
font-family: 'Dashicons', Arial, "Times New Roman", "Bitstream Charter", Times, serif !important;
|
55 |
+
}
|
56 |
+
|
57 |
+
#wp-admin-bar-assetcleanup-parent > a:first-child strong {
|
58 |
+
font-weight: bolder;
|
59 |
+
color: #76f203;
|
60 |
+
}
|
61 |
+
|
62 |
+
#wp-admin-bar-assetcleanup-parent > a:first-child:hover {
|
63 |
+
color: #00b9eb;
|
64 |
+
}
|
65 |
+
|
66 |
+
#wp-admin-bar-assetcleanup-parent > a:first-child:hover strong {
|
67 |
+
color: #00b9eb;
|
68 |
+
}
|
69 |
+
|
70 |
+
#wp-admin-bar-assetcleanup-test-mode-info {
|
71 |
+
margin-top: 5px !important;
|
72 |
+
margin-bottom: -8px !important;
|
73 |
+
padding-top: 3px !important;
|
74 |
+
border-top: 1px solid #ffffff52;
|
75 |
+
}
|
76 |
|
77 |
/* Add some spacing below the last text */
|
78 |
+
#wp-admin-bar-assetcleanup-test-mode-info-2 {
|
79 |
+
padding-bottom: 3px !important;
|
80 |
+
}
|
81 |
+
</style>
|
82 |
+
<?php
|
83 |
+
}
|
84 |
}
|
85 |
|
86 |
/**
|
90 |
{
|
91 |
?>
|
92 |
<style type="text/css">
|
93 |
+
.menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
|
94 |
+
.opt-in-or-opt-out.wp-asset-clean-up { display: none; }
|
|
|
95 |
</style>
|
96 |
<?php
|
97 |
}
|
185 |
{
|
186 |
global $post, $pagenow;
|
187 |
|
188 |
+
$page = Misc::getVar('get', 'page');
|
189 |
|
190 |
$getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
|
191 |
|
192 |
$postId = isset($post->ID) ? $post->ID : 0;
|
193 |
|
194 |
+
if ($getPostId > 0 && $getPostId !== $postId) {
|
195 |
$postId = $getPostId;
|
196 |
}
|
197 |
|
classes/Plugin.php
CHANGED
@@ -3,6 +3,7 @@ namespace WpAssetCleanUp;
|
|
3 |
|
4 |
/**
|
5 |
* Class Plugin
|
|
|
6 |
*/
|
7 |
class Plugin
|
8 |
{
|
@@ -12,7 +13,7 @@ class Plugin
|
|
12 |
public function __construct()
|
13 |
{
|
14 |
register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
|
15 |
-
add_action('admin_init', array($this, '
|
16 |
|
17 |
// [wpacu_lite]
|
18 |
// Admin footer text: Ask the user to review the plugin
|
@@ -23,28 +24,6 @@ class Plugin
|
|
23 |
add_filter('plugin_action_links_'.WPACU_PLUGIN_BASE, array($this, 'actionLinks'));
|
24 |
}
|
25 |
|
26 |
-
/**
|
27 |
-
* @param $links
|
28 |
-
*
|
29 |
-
* @return mixed
|
30 |
-
*/
|
31 |
-
public function actionLinks($links)
|
32 |
-
{
|
33 |
-
$links['getting_started'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_getting_started">' . __('Getting Started', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
|
34 |
-
$links['settings'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_settings">' . __('Settings', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
|
35 |
-
|
36 |
-
// [wpacu_lite]
|
37 |
-
$allPlugins = get_plugins();
|
38 |
-
|
39 |
-
// If the pro version is not installed (active or not), show the upgrade link
|
40 |
-
if (! array_key_exists('wp-asset-clean-up-pro/wpacu.php', $allPlugins)) {
|
41 |
-
$links['go_pro'] = '<a target="_blank" style="font-weight: bold;" href="'.WPACU_PLUGIN_GO_PRO_URL.'">Go Pro</a>';
|
42 |
-
}
|
43 |
-
// [/wpacu_lite]
|
44 |
-
|
45 |
-
return $links;
|
46 |
-
}
|
47 |
-
|
48 |
// [wpacu_lite]
|
49 |
/**
|
50 |
* @param $text
|
@@ -67,25 +46,110 @@ class Plugin
|
|
67 |
*/
|
68 |
public function whenActivated()
|
69 |
{
|
70 |
-
// Is the plugin activated for the first time?
|
|
|
71 |
if (! get_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time')) {
|
72 |
add_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time', 1, 'no');
|
73 |
set_transient(WPACU_PLUGIN_ID . '_redirect_after_activation', 1, 15);
|
74 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
|
77 |
/**
|
78 |
*
|
79 |
*/
|
80 |
-
public function
|
81 |
{
|
82 |
if (get_transient(WPACU_PLUGIN_ID . '_redirect_after_activation')) {
|
83 |
// Remove it as only one redirect is needed (first time the plugin is activated)
|
84 |
delete_transient(WPACU_PLUGIN_ID . '_redirect_after_activation');
|
85 |
|
86 |
-
// Do the 'first activation time'
|
87 |
-
wp_redirect(admin_url('admin.php?page=' .
|
88 |
exit();
|
89 |
}
|
90 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
}
|
3 |
|
4 |
/**
|
5 |
* Class Plugin
|
6 |
+
* @package WpAssetCleanUp
|
7 |
*/
|
8 |
class Plugin
|
9 |
{
|
13 |
public function __construct()
|
14 |
{
|
15 |
register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
|
16 |
+
add_action('admin_init', array($this, 'redirectToStartingPage'));
|
17 |
|
18 |
// [wpacu_lite]
|
19 |
// Admin footer text: Ask the user to review the plugin
|
24 |
add_filter('plugin_action_links_'.WPACU_PLUGIN_BASE, array($this, 'actionLinks'));
|
25 |
}
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
// [wpacu_lite]
|
28 |
/**
|
29 |
* @param $text
|
46 |
*/
|
47 |
public function whenActivated()
|
48 |
{
|
49 |
+
// Is the plugin activated for the first time?
|
50 |
+
// Prepare for the redirection to the WPACU_ADMIN_PAGE_ID_START plugin page
|
51 |
if (! get_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time')) {
|
52 |
add_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time', 1, 'no');
|
53 |
set_transient(WPACU_PLUGIN_ID . '_redirect_after_activation', 1, 15);
|
54 |
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* /wp-content/cache/asset-cleanup/
|
58 |
+
* /wp-content/cache/asset-cleanup/index.php
|
59 |
+
* /wp-content/cache/asset-cleanup/.htaccess
|
60 |
+
*
|
61 |
+
* /wp-content/cache/asset-cleanup/css/
|
62 |
+
* /wp-content/cache/asset-cleanup/css/index.php
|
63 |
+
* /wp-content/cache/asset-cleanup/css/logged-in/
|
64 |
+
* /wp-content/cache/asset-cleanup/css/logged-in/index.php
|
65 |
+
*/
|
66 |
+
self::createCacheFoldersFiles();
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
*
|
71 |
+
*/
|
72 |
+
public static function createCacheFoldersFiles()
|
73 |
+
{
|
74 |
+
$cacheCssDir = WP_CONTENT_DIR . OptimizeCss::$relPathCssCacheDir;
|
75 |
+
|
76 |
+
$emptyPhpFileContents = <<<TEXT
|
77 |
+
<?php
|
78 |
+
// Silence is golden.
|
79 |
+
TEXT;
|
80 |
+
|
81 |
+
$htAccessContents = <<<HTACCESS
|
82 |
+
<IfModule mod_autoindex.c>
|
83 |
+
Options -Indexes
|
84 |
+
</IfModule>
|
85 |
+
HTACCESS;
|
86 |
+
|
87 |
+
|
88 |
+
if (! is_dir($cacheCssDir)) {
|
89 |
+
mkdir($cacheCssDir, 0755, true);
|
90 |
+
}
|
91 |
+
|
92 |
+
if (! is_file($cacheCssDir . 'index.php')) {
|
93 |
+
// /wp-content/cache/asset-cleanup/cache/css/index.php
|
94 |
+
file_put_contents( $cacheCssDir . 'index.php', $emptyPhpFileContents );
|
95 |
+
}
|
96 |
+
|
97 |
+
if (! is_dir($cacheCssDir . 'logged-in')) {
|
98 |
+
mkdir( $cacheCssDir . 'logged-in', 0755 );
|
99 |
+
}
|
100 |
+
|
101 |
+
if (! is_file($cacheCssDir . 'logged-in/index.php')) {
|
102 |
+
// /wp-content/cache/asset-cleanup/cache/css/logged-in/index.html
|
103 |
+
file_put_contents( $cacheCssDir . 'logged-in/index.php', $emptyPhpFileContents );
|
104 |
+
}
|
105 |
+
|
106 |
+
$htAccessFilePath = dirname($cacheCssDir) . '/.htaccess';
|
107 |
+
|
108 |
+
if (! is_file($htAccessFilePath)) {
|
109 |
+
// /wp-content/cache/asset-cleanup/.htaccess
|
110 |
+
file_put_contents( $htAccessFilePath, $htAccessContents );
|
111 |
+
}
|
112 |
+
|
113 |
+
if (! is_file(dirname($cacheCssDir) . '/index.php')) {
|
114 |
+
// /wp-content/cache/asset-cleanup/index.php
|
115 |
+
file_put_contents( dirname( $cacheCssDir ) . '/index.php', $emptyPhpFileContents );
|
116 |
+
}
|
117 |
}
|
118 |
|
119 |
/**
|
120 |
*
|
121 |
*/
|
122 |
+
public function redirectToStartingPage()
|
123 |
{
|
124 |
if (get_transient(WPACU_PLUGIN_ID . '_redirect_after_activation')) {
|
125 |
// Remove it as only one redirect is needed (first time the plugin is activated)
|
126 |
delete_transient(WPACU_PLUGIN_ID . '_redirect_after_activation');
|
127 |
|
128 |
+
// Do the 'first activation time' redirection
|
129 |
+
wp_redirect(admin_url('admin.php?page=' . WPACU_ADMIN_PAGE_ID_START));
|
130 |
exit();
|
131 |
}
|
132 |
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* @param $links
|
136 |
+
*
|
137 |
+
* @return mixed
|
138 |
+
*/
|
139 |
+
public function actionLinks($links)
|
140 |
+
{
|
141 |
+
$links['getting_started'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_getting_started">' . __('Getting Started', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
|
142 |
+
$links['settings'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_settings">' . __('Settings', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
|
143 |
+
|
144 |
+
// [wpacu_lite]
|
145 |
+
$allPlugins = get_plugins();
|
146 |
+
|
147 |
+
// If the pro version is not installed (active or not), show the upgrade link
|
148 |
+
if (! array_key_exists('wp-asset-clean-up-pro/wpacu.php', $allPlugins)) {
|
149 |
+
$links['go_pro'] = '<a target="_blank" style="font-weight: bold;" href="'.WPACU_PLUGIN_GO_PRO_URL.'">Go Pro</a>';
|
150 |
+
}
|
151 |
+
// [/wpacu_lite]
|
152 |
+
|
153 |
+
return $links;
|
154 |
+
}
|
155 |
}
|
classes/Settings.php
CHANGED
@@ -25,6 +25,9 @@ class Settings
|
|
25 |
'hide_core_files',
|
26 |
'test_mode',
|
27 |
|
|
|
|
|
|
|
28 |
'disable_emojis',
|
29 |
|
30 |
// Stored in 'wpassetcleanup_global_unload' option
|
@@ -221,6 +224,8 @@ class Settings
|
|
221 |
*/
|
222 |
public function update($settings)
|
223 |
{
|
|
|
|
|
224 |
$wpacuUpdate = new Update;
|
225 |
|
226 |
$settingsNotNull = array();
|
@@ -283,4 +288,25 @@ class Settings
|
|
283 |
update_option(WPACU_PLUGIN_ID . '_settings', json_encode($settings), 'no');
|
284 |
$this->status['updated'] = true;
|
285 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
}
|
25 |
'hide_core_files',
|
26 |
'test_mode',
|
27 |
|
28 |
+
// Combine loaded CSS (remaining ones after unloading the useless ones) into one file
|
29 |
+
'combine_loaded_css',
|
30 |
+
|
31 |
'disable_emojis',
|
32 |
|
33 |
// Stored in 'wpassetcleanup_global_unload' option
|
224 |
*/
|
225 |
public function update($settings)
|
226 |
{
|
227 |
+
self::clearAllCache();
|
228 |
+
|
229 |
$wpacuUpdate = new Update;
|
230 |
|
231 |
$settingsNotNull = array();
|
288 |
update_option(WPACU_PLUGIN_ID . '_settings', json_encode($settings), 'no');
|
289 |
$this->status['updated'] = true;
|
290 |
}
|
291 |
+
|
292 |
+
/**
|
293 |
+
*
|
294 |
+
*/
|
295 |
+
public static function clearAllCache()
|
296 |
+
{
|
297 |
+
// "Combined CSS Loaded" transients
|
298 |
+
$optimizeCss = new OptimizeCss();
|
299 |
+
$optimizeCss->clearAllCacheTransients();
|
300 |
+
|
301 |
+
// "WP Rocket" cache
|
302 |
+
/*
|
303 |
+
add_action('init', function() {
|
304 |
+
if ( function_exists( 'rocket_clean_domain' ) ) {
|
305 |
+
try {
|
306 |
+
@rocket_clean_domain();
|
307 |
+
} catch ( \Exception $e ) {}
|
308 |
+
}
|
309 |
+
});
|
310 |
+
*/
|
311 |
+
}
|
312 |
}
|
classes/Update.php
CHANGED
@@ -259,6 +259,9 @@ HTML;
|
|
259 |
// Any bulk unloads or removed? (e.g. all pages of a certain post type)
|
260 |
$this->saveToBulkUnloads();
|
261 |
$this->removeBulkUnloads();
|
|
|
|
|
|
|
262 |
}
|
263 |
|
264 |
/**
|
@@ -291,6 +294,9 @@ HTML;
|
|
291 |
add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
|
292 |
|
293 |
$this->frontEndUpdateFor['homepage'] = true;
|
|
|
|
|
|
|
294 |
}
|
295 |
|
296 |
/**
|
259 |
// Any bulk unloads or removed? (e.g. all pages of a certain post type)
|
260 |
$this->saveToBulkUnloads();
|
261 |
$this->removeBulkUnloads();
|
262 |
+
|
263 |
+
// Clear all cache
|
264 |
+
Settings::clearAllCache();
|
265 |
}
|
266 |
|
267 |
/**
|
294 |
add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
|
295 |
|
296 |
$this->frontEndUpdateFor['homepage'] = true;
|
297 |
+
|
298 |
+
// Clear all cache
|
299 |
+
Settings::clearAllCache();
|
300 |
}
|
301 |
|
302 |
/**
|
freemius-load.php
CHANGED
@@ -21,7 +21,7 @@ if ( ! function_exists( 'wpassetcleanup_fs' )
|
|
21 |
'has_paid_plans' => false,
|
22 |
'anonymous_mode' => true,
|
23 |
'menu' => array(
|
24 |
-
'slug' =>
|
25 |
'override_exact' => true,
|
26 |
'account' => false,
|
27 |
'contact' => false,
|
@@ -40,7 +40,7 @@ if ( ! function_exists( 'wpassetcleanup_fs' )
|
|
40 |
do_action('wpassetcleanup_fs_loaded');
|
41 |
|
42 |
function wpassetcleanup_fs_settings_url() {
|
43 |
-
return admin_url('admin.php?page='.
|
44 |
}
|
45 |
|
46 |
wpassetcleanup_fs()->add_filter('connect_url', WPACU_PLUGIN_ID.'_fs_settings_url');
|
21 |
'has_paid_plans' => false,
|
22 |
'anonymous_mode' => true,
|
23 |
'menu' => array(
|
24 |
+
'slug' => WPACU_ADMIN_PAGE_ID_START,
|
25 |
'override_exact' => true,
|
26 |
'account' => false,
|
27 |
'contact' => false,
|
40 |
do_action('wpassetcleanup_fs_loaded');
|
41 |
|
42 |
function wpassetcleanup_fs_settings_url() {
|
43 |
+
return admin_url('admin.php?page='.WPACU_ADMIN_PAGE_ID_START);
|
44 |
}
|
45 |
|
46 |
wpassetcleanup_fs()->add_filter('connect_url', WPACU_PLUGIN_ID.'_fs_settings_url');
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Asset CleanUp: Page Speed Booster ===
|
2 |
Contributors: gabelivan
|
3 |
Tags: pagespeed, page speed, dequeue, performance, gtmetrix
|
4 |
-
Donate link: https://
|
5 |
-
Requires at least: 4.
|
6 |
-
Tested up to: 5.0.
|
7 |
-
Stable tag: 1.2.9
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
@@ -131,6 +131,11 @@ With the recently released "Test Mode" feature, you can safely unload assets on
|
|
131 |
4. Scripts (.JS) are selected for site-wide unload
|
132 |
|
133 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
134 |
= 1.2.9 =
|
135 |
* Added "System Info" to "Tools" page to fetch information about the WordPress environment in case something needs debugged
|
136 |
* Added "Getting Started" page to make things easier for anyone who doesn't understand how the plugin works
|
1 |
=== Asset CleanUp: Page Speed Booster ===
|
2 |
Contributors: gabelivan
|
3 |
Tags: pagespeed, page speed, dequeue, performance, gtmetrix
|
4 |
+
Donate link: https://gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
|
5 |
+
Requires at least: 4.4
|
6 |
+
Tested up to: 5.0.3
|
7 |
+
Stable tag: 1.2.9.1
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
131 |
4. Scripts (.JS) are selected for site-wide unload
|
132 |
|
133 |
== Changelog ==
|
134 |
+
= 1.2.9.1 =
|
135 |
+
* "Combined Loaded CSS" feature (concatenates all the remaining loaded stylesheets within the HEAD section of the page and saves them into one file) to reduce HTTP requests even further
|
136 |
+
* Improved "Getting Started" area
|
137 |
+
* Made "Settings" as the default page where you (the administrator user) is redirected when activating the plugin for the first time
|
138 |
+
|
139 |
= 1.2.9 =
|
140 |
* Added "System Info" to "Tools" page to fetch information about the WordPress environment in case something needs debugged
|
141 |
* Added "Getting Started" page to make things easier for anyone who doesn't understand how the plugin works
|
templates/admin-page-getting-started.php
CHANGED
@@ -10,7 +10,7 @@ if (! isset($data)) {
|
|
10 |
<div class="about-wrap wpacu-about-wrap">
|
11 |
<h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
|
12 |
<p class="about-text wpacu-about-text">
|
13 |
-
Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster & lighter by removing the useless CSS & JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with a caching plugin
|
14 |
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
|
15 |
</p>
|
16 |
|
@@ -25,33 +25,31 @@ if (! isset($data)) {
|
|
25 |
<p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS & JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
|
26 |
<p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
|
27 |
<hr />
|
28 |
-
<p class="area-title">What Asset CleanUp really does
|
29 |
-
<p>Asset CleanUp is
|
30 |
-
<p>Once the setup is completed, the pages will have a better speed score (this can be tested using tools such as GTMetrix) and combined with a caching plugin
|
31 |
<hr />
|
32 |
<p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size: 22px;">✨</span></p>
|
33 |
-
<p>Let's suppose you have a page where 30 files (CSS & JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also
|
34 |
<hr />
|
35 |
<p class="area-title">Not sure how to configure it? <span style="font-size: 22px;">🤔</span></p>
|
36 |
<p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
|
37 |
-
<?php } elseif ($data['for'] === 'stop-loading-useless-css-js-files') { ?>
|
38 |
-
|
39 |
<?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
|
40 |
-
<p class="area-title">Higher search ranking
|
41 |
<p>Since 2010, there has been a signal in Google search ranking algorithms: site speed, which reflects how quickly a website responds to web requests.</p>
|
42 |
<p>Speeding up websites is important — not just to site owners, but to all Internet users. Faster sites create happy users and Google has seen in their internal studies that when a site responds slowly, visitors spend less time there. But faster sites don't just improve user experience; recent data shows that improving site speed also reduces operating costs. Like Google, their users place a lot of value in speed — that's why they've decided to take site speed into account in their search rankings. They use a variety of sources to determine the speed of a site relative to other sites.
|
43 |
<p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
|
44 |
<hr />
|
45 |
|
46 |
-
<p class="area-title">Visitor Experience
|
47 |
<p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
|
48 |
<hr />
|
49 |
|
50 |
-
<p class="area-title">Better Developer Experience
|
51 |
<p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
|
52 |
<hr />
|
53 |
|
54 |
-
<p class="area-title">Higher Revenue
|
55 |
<p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
|
56 |
|
57 |
<p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
|
@@ -67,11 +65,14 @@ if (! isset($data)) {
|
|
67 |
<span class="dashicons dashicons-format-image"></span> <a href="#TB_inline?&width=1024&height=550&inlineId=wpacu-brain-slow-website-info"
|
68 |
class="thickbox">View "This Is Your Brain On A Slow Website" Infographic</a>
|
69 |
<?php } elseif ($data['for'] === 'start-optimization') { ?>
|
70 |
-
<p>
|
|
|
|
|
|
|
71 |
|
72 |
-
<p
|
73 |
<p>At the time of writing this (January 1, 2019), the plugin loads 2 files everywhere (site-wide), when most of the WordPress websites only use them in the contact page. These files are:</p>
|
74 |
-
<ul>
|
75 |
<li><em>/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.1</em> (Stylesheet File)</li>
|
76 |
<li><em>/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.1</em> (JavaScript File)</li>
|
77 |
</ul>
|
10 |
<div class="about-wrap wpacu-about-wrap">
|
11 |
<h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
|
12 |
<p class="about-text wpacu-about-text">
|
13 |
+
Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster & lighter by removing the useless CSS & JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with either a caching plugin, the in-built hosting caching (e.g. <a style="text-decoration: none; color: #555d66;" href="https://gabelivan.com/visit/wp-engine">WPEngine</a>, Kinsta have it) or something like Varnish.
|
14 |
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
|
15 |
</p>
|
16 |
|
25 |
<p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS & JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
|
26 |
<p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
|
27 |
<hr />
|
28 |
+
<p class="area-title">What Asset CleanUp really does? <span style="font-size: 22px;">🚀</span></p>
|
29 |
+
<p>Asset CleanUp is front-end optimisation performance plugin and let's you select the assets that are not needed to load on your website and combine the remaining loaded ones into fewer files, which will in the end reduce considerably the number of HTTP requests and optimize the front-end side of your pages. <a target="_blank" href="https://developer.yahoo.com/performance/rules.html">Read more</a></p>
|
30 |
+
<p>Once the setup is completed, the pages will have a better speed score (this can be tested using tools such as GTMetrix) and combined with a backend caching system (<em>e.g. a plugin such as <a target="_blank" href="https://gabelivan.com/visit/wp-rocket">WP Rocket</a>, a hosting service that has its in-built WordPress caching like <a href="https://gabelivan.com/visit/wp-engine">WPEngine</a> or Kinsta, a web application accelerator like Varnish that can be setup the server etc.</em>), it will improve the page speed even more.</p>
|
31 |
<hr />
|
32 |
<p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size: 22px;">✨</span></p>
|
33 |
+
<p>Let's suppose you have a page where 30 files (CSS & JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also combine and minify the remaining 12 files, the total assets size becomes smaller to 0.5 MB. In the end, <strong>the assets will load 3 times faster and improve your page speed score</strong>. Moreover, the HTML source code will be cleaner and easier to go through in case you're a developer and need to do any debugging or just check something in the code.</p>
|
34 |
<hr />
|
35 |
<p class="area-title">Not sure how to configure it? <span style="font-size: 22px;">🤔</span></p>
|
36 |
<p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
|
|
|
|
|
37 |
<?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
|
38 |
+
<p class="area-title">Higher search ranking <span style="font-size: 22px;">📈</span></p>
|
39 |
<p>Since 2010, there has been a signal in Google search ranking algorithms: site speed, which reflects how quickly a website responds to web requests.</p>
|
40 |
<p>Speeding up websites is important — not just to site owners, but to all Internet users. Faster sites create happy users and Google has seen in their internal studies that when a site responds slowly, visitors spend less time there. But faster sites don't just improve user experience; recent data shows that improving site speed also reduces operating costs. Like Google, their users place a lot of value in speed — that's why they've decided to take site speed into account in their search rankings. They use a variety of sources to determine the speed of a site relative to other sites.
|
41 |
<p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
|
42 |
<hr />
|
43 |
|
44 |
+
<p class="area-title">Visitor Experience <span style="font-size: 22px;">😊</span></p>
|
45 |
<p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
|
46 |
<hr />
|
47 |
|
48 |
+
<p class="area-title">Better Developer Experience <span style="font-size: 22px;">⚙️</span></p>
|
49 |
<p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
|
50 |
<hr />
|
51 |
|
52 |
+
<p class="area-title">Higher Revenue <span style="font-size: 22px;">💯</span></p>
|
53 |
<p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
|
54 |
|
55 |
<p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
|
65 |
<span class="dashicons dashicons-format-image"></span> <a href="#TB_inline?&width=1024&height=550&inlineId=wpacu-brain-slow-website-info"
|
66 |
class="thickbox">View "This Is Your Brain On A Slow Website" Infographic</a>
|
67 |
<?php } elseif ($data['for'] === 'start-optimization') { ?>
|
68 |
+
<p>For the <em>homepage</em>, you can go to "Asset CleanUp" -> "<a href="<?php echo admin_url('admin.php?page='.WPACU_PLUGIN_ID.'_home_page') ?>">Homepage</a>" from the plugin's menu and you will notice the list of all the styles &scripts files that are loading there. For each file, you will see options that you can enabled/disable.</p>
|
69 |
+
<p>For <em>posts, pages & custom post types</em>, you can edit the page within the Dashboard or via the front-end view (if you enabled the option in "Settings") and go to "Asset CleanUp" area where you can manage all the CSS & JS files loading on that post/page.</p>
|
70 |
+
<p>To view all the pages where Asset CleanUp can do optimization for, go to "<a href="<?php echo admin_url('admin.php?page=wpassetcleanup_pages_info'); ?>">Pages Info</a>".</p>
|
71 |
+
<hr />
|
72 |
|
73 |
+
<p style="font-size: 16px;"><strong>Common Example: "Contact Form 7" plugin</strong></p>
|
74 |
<p>At the time of writing this (January 1, 2019), the plugin loads 2 files everywhere (site-wide), when most of the WordPress websites only use them in the contact page. These files are:</p>
|
75 |
+
<ul style="list-style: disc; margin-left: 25px;">
|
76 |
<li><em>/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.1</em> (Stylesheet File)</li>
|
77 |
<li><em>/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.1</em> (JavaScript File)</li>
|
78 |
</ul>
|
templates/admin-page-pages-info.php
CHANGED
@@ -9,13 +9,16 @@ if (! isset($data)) {
|
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
-
$availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info" class="go-pro-link-no-style"><span class="tooltip">Available for Pro users<br />Click to upgrade!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
|
13 |
// [/wpacu_lite]
|
14 |
?>
|
15 |
<div id="wpacu-pages-info-area" class="wpacu-wrap">
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
19 |
|
20 |
<div class="wpacu_table_wrap">
|
21 |
<table class="table table-striped">
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
+
$availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info" class="go-pro-link-no-style"><span class="wpacu-tooltip">Available for Pro users<br />Click to upgrade!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
|
13 |
// [/wpacu_lite]
|
14 |
?>
|
15 |
<div id="wpacu-pages-info-area" class="wpacu-wrap">
|
16 |
+
<div class="wpacu-notice-info">
|
17 |
+
<p>The purpose of this page is to make you aware of all the WordPress pages where Asset CleanUp can be used to unload unused CSS & JavaScript files.</p>
|
18 |
+
<!-- [wpacu_lite] -->
|
19 |
+
<p>* <em>Unloading assets (CSS & JavaScript) for page types that have a locker next to their name requires an <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_pages_info&utm_medium=top_note">upgrade to the Pro version</a>.</em></p>
|
20 |
+
<!-- [/wpacu_lite] -->
|
21 |
+
</div>
|
22 |
|
23 |
<div class="wpacu_table_wrap">
|
24 |
<table class="table table-striped">
|
templates/admin-page-settings-bulk-unloads.php
CHANGED
@@ -9,7 +9,7 @@ if (! isset($data)) {
|
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
-
$availableForPro = '<span class="tooltip">Available for Pro users<br />Click to upgrade!</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
|
13 |
// [/wpacu_lite]
|
14 |
?>
|
15 |
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
+
$availableForPro = '<span class="wpacu-tooltip">Available for Pro users<br />Click to upgrade!</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
|
13 |
// [/wpacu_lite]
|
14 |
?>
|
15 |
|
templates/admin-page-settings-homepage.php
CHANGED
@@ -56,7 +56,7 @@ if ($data['show_on_front'] === 'page') {
|
|
56 |
|
57 |
<p><?php _e('Here you can unload assets that are loading on the home page. "Front page displays" (from "Settings" » "Reading") is set to either "Your latest posts" (in "Settings" » "Reading") OR a special layout (from a theme or plugin) was enabled. When you edit a page/post (e.g. "Posts" -> "All Posts", "Pages" -> "All Pages" etc.), you will see the list inside a meta box.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
58 |
|
59 |
-
<p>
|
60 |
|
61 |
<div id="wpacu_meta_box_content">
|
62 |
<img src="<?php echo admin_url(); ?>/images/spinner.gif" align="top" width="20" height="20" alt="" />
|
56 |
|
57 |
<p><?php _e('Here you can unload assets that are loading on the home page. "Front page displays" (from "Settings" » "Reading") is set to either "Your latest posts" (in "Settings" » "Reading") OR a special layout (from a theme or plugin) was enabled. When you edit a page/post (e.g. "Posts" -> "All Posts", "Pages" -> "All Pages" etc.), you will see the list inside a meta box.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
58 |
|
59 |
+
<p>Note that any changes will also apply to pages such as <code>/page/2</code> <code>page/3</code> etc. in case the latest blog posts are paginated.</p>
|
60 |
|
61 |
<div id="wpacu_meta_box_content">
|
62 |
<img src="<?php echo admin_url(); ?>/images/spinner.gif" align="top" width="20" height="20" alt="" />
|
templates/admin-page-settings-plugin.php
CHANGED
@@ -9,7 +9,7 @@ if (! isset($data)) {
|
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
-
$availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_settings" class="go-pro-link-no-style"><span class="tooltip">Available for Pro users<br />Buy now to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> ';
|
13 |
// [/wpacu_lite]
|
14 |
|
15 |
do_action('wpacu_admin_notices');
|
@@ -32,25 +32,52 @@ do_action('wpacu_admin_notices');
|
|
32 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dashboard_show]"
|
33 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
34 |
|
35 |
-
|
36 |
-
<p
|
37 |
-
<p
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
</td>
|
55 |
</tr>
|
56 |
<tr valign="top">
|
@@ -65,8 +92,8 @@ do_action('wpacu_admin_notices');
|
|
65 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[frontend_show]"
|
66 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
67 |
|
68 |
-
|
69 |
-
<p
|
70 |
</td>
|
71 |
</tr>
|
72 |
|
@@ -84,10 +111,7 @@ do_action('wpacu_admin_notices');
|
|
84 |
</select>
|
85 |
</label>
|
86 |
|
87 |
-
<
|
88 |
-
|
89 |
-
<p><small>These are various ways in which the list of assets that you will manage will show up. Depending on your preference, you might want to see the list of styles & scripts first, or all together sorted in alphabetical order etc.</small></p>
|
90 |
-
<p><small>Options that are disabled are available in the Pro version.</small></p>
|
91 |
</td>
|
92 |
</tr>
|
93 |
|
@@ -118,7 +142,7 @@ do_action('wpacu_admin_notices');
|
|
118 |
</ul>
|
119 |
<div class="wpacu-clearfix"></div>
|
120 |
|
121 |
-
<p
|
122 |
</td>
|
123 |
</tr>
|
124 |
|
@@ -149,7 +173,7 @@ do_action('wpacu_admin_notices');
|
|
149 |
</ul>
|
150 |
<div class="wpacu-clearfix"></div>
|
151 |
|
152 |
-
<p
|
153 |
</td>
|
154 |
</tr>
|
155 |
|
@@ -182,7 +206,7 @@ do_action('wpacu_admin_notices');
|
|
182 |
</ul>
|
183 |
<div class="wpacu-clearfix"></div>
|
184 |
|
185 |
-
<p
|
186 |
</td>
|
187 |
</tr>
|
188 |
|
@@ -198,7 +222,8 @@ do_action('wpacu_admin_notices');
|
|
198 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[hide_core_files]"
|
199 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
200 |
|
201 |
-
|
|
|
202 |
</td>
|
203 |
</tr>
|
204 |
|
@@ -216,8 +241,31 @@ do_action('wpacu_admin_notices');
|
|
216 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[test_mode]"
|
217 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
218 |
|
219 |
-
|
220 |
-
<p
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
</td>
|
222 |
</tr>
|
223 |
</table>
|
@@ -239,8 +287,8 @@ do_action('wpacu_admin_notices');
|
|
239 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
|
240 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
241 |
|
242 |
-
|
243 |
-
<p
|
244 |
</td>
|
245 |
</tr>
|
246 |
|
@@ -255,8 +303,8 @@ do_action('wpacu_admin_notices');
|
|
255 |
name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_jquery_migrate]"
|
256 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
257 |
|
258 |
-
|
259 |
-
<p
|
260 |
</td>
|
261 |
</tr>
|
262 |
|
@@ -271,8 +319,8 @@ do_action('wpacu_admin_notices');
|
|
271 |
name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_comment_reply]"
|
272 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
273 |
|
274 |
-
|
275 |
-
<p
|
276 |
</td>
|
277 |
</tr>
|
278 |
</table>
|
@@ -281,29 +329,6 @@ do_action('wpacu_admin_notices');
|
|
281 |
<p><em><strong>Note:</strong> The options that have a lock are available to Pro users. <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_settings">Click here to upgrade!</a></em></p>
|
282 |
<hr />
|
283 |
|
284 |
-
<h2><?php _e('Page Speed Score Booster: Extras', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
|
285 |
-
|
286 |
-
<table class="wpacu-form-table">
|
287 |
-
<tr valign="top">
|
288 |
-
<th scope="row">
|
289 |
-
<label for="wpacu_remove_query_strings">Remove Query Strings from CSS & JS?</label>
|
290 |
-
</th>
|
291 |
-
<td>
|
292 |
-
<?php echo $availableForPro; ?>
|
293 |
-
<label class="wpacu_switch wpacu_locked_for_pro">
|
294 |
-
<input id="wpacu_remove_query_strings" type="checkbox"
|
295 |
-
disabled="disabled"
|
296 |
-
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[remove_query_strings]"
|
297 |
-
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
298 |
-
|
299 |
-
<small>This will remove everything that is appended after question mark (?) from the source of the CSS and JavaScript files * e.g. <em>/wp-plugins/custom-plugin-here/style.min.css<strong>?ver=1.4.2</strong></em> to <em>/wp-plugins/custom-plugin-here/style.min.css</em> - this option will apply only to front-end view (not within the Dashboard)</small>
|
300 |
-
<p><small>Sometimes, query strings can cause caching issues (they are not cached by some proxy caching servers), thus, they can be removed. <a target="_blank" href="https://gtmetrix.com/remove-query-strings-from-static-resources.html">Read more</a>.</small></p>
|
301 |
-
</td>
|
302 |
-
</tr>
|
303 |
-
</table>
|
304 |
-
|
305 |
-
<hr />
|
306 |
-
|
307 |
<h2><?php _e('Cleanup unused elements within HEAD section', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
|
308 |
<p>There are elements that are enabled by default in many WordPress environments, but not necessary to be enabled. Cleanup the unnecessary code between <code><head></code> and <code></head></code>.</p>
|
309 |
|
@@ -323,7 +348,7 @@ do_action('wpacu_admin_notices');
|
|
323 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
324 |
|
325 |
<code><link rel="EditURI" type="application/rsd xml" title="RSD" href="http://yourwebsite.com/xmlrpc.php?rsd" /></code>
|
326 |
-
<p>XML-RPC clients use this discover method. If you do not know what this is and don't use service integrations such as <a href="http://www.flickr.com/services/api/request.xmlrpc.html" target="_blank">Flickr</a> on your WordPress website, you can remove it.</p>
|
327 |
</td>
|
328 |
</tr>
|
329 |
|
@@ -342,7 +367,7 @@ do_action('wpacu_admin_notices');
|
|
342 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
343 |
|
344 |
<code><link rel="wlwmanifest" type="application/wlwmanifest xml" href="https://yourwebsite.com/asset-optimizer/wp-includes/wlwmanifest.xml" /></code>
|
345 |
-
<p>If you do not use Windows Live Writer to edit your blog contents, then it's safe to remove this.</p>
|
346 |
</td>
|
347 |
</tr>
|
348 |
|
@@ -361,7 +386,7 @@ do_action('wpacu_admin_notices');
|
|
361 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
362 |
|
363 |
<code><link rel='https://api.w.org/' href='https://yourwebsite.com/wp-json/' /></code>
|
364 |
-
<p>Are you accessing your content through endpoints (e.g. https://yourwebsite.com/wp-json/, https://yourwebsite.com/wp-json/wp/v2/posts/1 - <em>1</em> in this example is the POST ID)? If not, you can remove this.</p>
|
365 |
</td>
|
366 |
</tr>
|
367 |
|
@@ -380,7 +405,7 @@ do_action('wpacu_admin_notices');
|
|
380 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
381 |
|
382 |
<code><link rel='shortlink' href="https://yourdomain.com/?p=1"></code>
|
383 |
-
<p>Are you using SEO friendly URLs and do not need the default WordPress shortlink? You can just remove this as it bulks out the head section of your website.</p>
|
384 |
</td>
|
385 |
</tr>
|
386 |
|
@@ -399,7 +424,7 @@ do_action('wpacu_admin_notices');
|
|
399 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
400 |
|
401 |
<code><link rel='prev' title='Title of adjacent post' href='https://yourdomain.com/adjacent-post-slug-here/' /></code>
|
402 |
-
<p>This removes relational links for the posts adjacent to the current post for single post pages.</p>
|
403 |
</td>
|
404 |
</tr>
|
405 |
|
@@ -418,7 +443,7 @@ do_action('wpacu_admin_notices');
|
|
418 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
419 |
|
420 |
<code><meta name="generator" content="WordPress 4.9.8" /></code>
|
421 |
-
<p>This is good for security purposes as well, since it hides the WordPress version you're using (in case of hacking attempts).</p>
|
422 |
</td>
|
423 |
</tr>
|
424 |
|
@@ -437,7 +462,7 @@ do_action('wpacu_admin_notices');
|
|
437 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
438 |
|
439 |
<code>e.g. <meta name="generator" content="Easy Digital Downloads v2.9.8" /></code>
|
440 |
-
<p>This will remove all meta tags with the "generator" name, including the WordPress version. You could use a plugin or a theme that has added a generator notice, but you do not need to have it there. Moreover, it will hide the version of the plugins and theme you're using which is good for security reasons.</p>
|
441 |
</td>
|
442 |
</tr>
|
443 |
|
@@ -456,7 +481,7 @@ do_action('wpacu_admin_notices');
|
|
456 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
457 |
|
458 |
<code><link rel="alternate" type="application/rss xml" title="Your Site Title &raquo; Feed" href="https://www.yourwebsite.com/feed/" /></code>
|
459 |
-
<p>If you do not use WordPress for blogging purposes at all, and it doesn't have any blog posts (apart from the main pages that you added), then you can remove the main feed link. It will also remove feeds for the following pages: categories, tags, custom taxonomies & search results. Note that it will not remove comments RSS feeds which can be removed using the setting below. Some websites might have blog posts and would keep the main RSS feeds enabled, while removing the comments RSS feeds if they don't use the comments functionality.</p>
|
460 |
</td>
|
461 |
</tr>
|
462 |
|
@@ -475,7 +500,7 @@ do_action('wpacu_admin_notices');
|
|
475 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
476 |
|
477 |
<code>e.g. <link rel="alternate" type="application/rss xml" title="Your Website Title &raquo; Comments Feed" href="https://www.yourdomain.com/comments/feed/" /></code>
|
478 |
-
<p>If you do not use the comments functionality on your posts or do not use WordPress for blogging purposes at all, then you can remove the comments feed link.</p>
|
479 |
</td>
|
480 |
</tr>
|
481 |
|
@@ -492,7 +517,7 @@ do_action('wpacu_admin_notices');
|
|
492 |
|
493 |
<p style="margin-bottom: 10px;"><strong>Disable XML-RPC Pingback Only</strong>: If you need the XML-RPC protocol support, but you do not use the pingbacks which are used by your website to notify another website that you have linked to it from your page(s), you can just disable the pinbacks and keep the other XML-RPC functionality. This is also a security measure to prevent DDoS attacks.</p>
|
494 |
|
495 |
-
<p style="margin-bottom:
|
496 |
</td>
|
497 |
</tr>
|
498 |
</table>
|
9 |
include_once '_top-area.php';
|
10 |
|
11 |
// [wpacu_lite]
|
12 |
+
$availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_settings" class="go-pro-link-no-style"><span class="wpacu-tooltip">Available for Pro users<br />Buy now to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> ';
|
13 |
// [/wpacu_lite]
|
14 |
|
15 |
do_action('wpacu_admin_notices');
|
32 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dashboard_show]"
|
33 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
34 |
|
35 |
+
This will show the list of assets in a meta box on edit the post (any type) / page within the Dashboard
|
36 |
+
<p>The assets would be retrieved via AJAX call(s) that will fetch the post/page URL and extract all the styles & scripts that are enqueued.</p>
|
37 |
+
<p>Note that sometimes the assets list is not loading within the Dashboard. That could be because "mod_security" Apache module is enabled or some securiy plugins are blocking the AJAX request. If this option doesn't work, consider managing the list in the front-end view.</p>
|
38 |
+
|
39 |
+
<div id="wpacu-settings-assets-retrieval-mode"
|
40 |
+
<?php if (! ($data['dashboard_show'] == 1)) { echo 'style="display: none;"'; } ?>>
|
41 |
+
|
42 |
+
<ul id="wpacu-dom-get-type-selections">
|
43 |
+
<li>
|
44 |
+
<label for="wpacu_dom_get_type">Select a retrieval way:</label>
|
45 |
+
</li>
|
46 |
+
<li>
|
47 |
+
<label>
|
48 |
+
<input class="wpacu-dom-get-type-selection"
|
49 |
+
data-target="wpacu-dom-get-type-direct-info"
|
50 |
+
<?php if ($data['dom_get_type'] === 'direct') { ?>checked="checked"<?php } ?>
|
51 |
+
type="radio" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dom_get_type]"
|
52 |
+
value="direct" /> Direct
|
53 |
+
</label>
|
54 |
+
</li>
|
55 |
+
<li>
|
56 |
+
<label>
|
57 |
+
<input class="wpacu-dom-get-type-selection"
|
58 |
+
data-target="wpacu-dom-get-type-wp-remote-post-info"
|
59 |
+
<?php if ($data['dom_get_type'] === 'wp_remote_post') { ?>checked="checked"<?php } ?>
|
60 |
+
type="radio" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dom_get_type]"
|
61 |
+
value="wp_remote_post" /> WP Remote Post
|
62 |
+
</label>
|
63 |
+
</li>
|
64 |
+
</ul>
|
65 |
+
|
66 |
+
<div class="wpacu-clearfix" style="height: 0;"></div>
|
67 |
+
|
68 |
+
<ul id="wpacu-dom-get-type-infos">
|
69 |
+
<li <?php if ($data['dom_get_type'] !== 'direct') { ?>style="display: none;"<?php } ?>
|
70 |
+
class="wpacu-dom-get-type-info"
|
71 |
+
id="wpacu-dom-get-type-direct-info">
|
72 |
+
<strong>Direct</strong> - This one makes an AJAX call directly on the URL for which the assets are retrieved, then an extra WordPress AJAX call to process the list. Sometimes, due to some external factors (e.g. mod_security module from Apache, security plugin or the fact that non-http is forced for the front-end view and the AJAX request will be blocked), this might not work and another choice method might work better. This used to be the only option available, prior to version 1.2.4.4 and is set as default.
|
73 |
+
</li>
|
74 |
+
<li <?php if ($data['dom_get_type'] !== 'wp_remote_post') { ?>style="display: none;"<?php } ?>
|
75 |
+
class="wpacu-dom-get-type-info"
|
76 |
+
id="wpacu-dom-get-type-wp-remote-post-info">
|
77 |
+
<strong>WP Remote Post</strong> - It makes a WordPress AJAX call and gets the HTML source code through wp_remote_post(). This one is less likely to be blocked as it is made on the same protocol (no HTTP request from HTTPS). However, in some cases (e.g. a different load balancer configuration), this might not work when the call to fetch a domain's URL (your website) is actually made from the same domain.
|
78 |
+
</li>
|
79 |
+
</ul>
|
80 |
+
</div>
|
81 |
</td>
|
82 |
</tr>
|
83 |
<tr valign="top">
|
92 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[frontend_show]"
|
93 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
94 |
|
95 |
+
If you are logged in, this will make the list of assets show below the page that you view (either home page, a post or a page).
|
96 |
+
<p style="margin-top: 10px;">The area will be shown through the <code>wp_footer</code> action so in case you do not see the asset list at the bottom of the page, make sure the theme is using <a href="https://codex.wordpress.org/Function_Reference/wp_footer"><code>wp_footer()</code></a> function before the <code></body></code> tag. Any theme that follows the standards should have it. If not, you will have to add it to make sure other plugins and code from functions.php will work fine.</p>
|
97 |
</td>
|
98 |
</tr>
|
99 |
|
111 |
</select>
|
112 |
</label>
|
113 |
|
114 |
+
<p style="margin-top: 10px;">These are various ways in which the list of assets that you will manage will show up. Depending on your preference, you might want to see the list of styles & scripts first, or all together sorted in alphabetical order etc. Options that are disabled are available in the Pro version.</p>
|
|
|
|
|
|
|
115 |
</td>
|
116 |
</tr>
|
117 |
|
142 |
</ul>
|
143 |
<div class="wpacu-clearfix"></div>
|
144 |
|
145 |
+
<p>Sometimes, when you have plenty of elements in the edit page, you might want to contract the list of assets when you're viewing the page as it will save space. This can be a good practice, especially when you finished optimising the pages and you don't want to keep seeing the long list of files every time you edit a page.</p>
|
146 |
</td>
|
147 |
</tr>
|
148 |
|
173 |
</ul>
|
174 |
<div class="wpacu-clearfix"></div>
|
175 |
|
176 |
+
<p>Some assets (CSS & JavaScript) have inline code associate with them and often, they are quite large, making the asset row bigger and requiring you to scroll more until you reach a specific area. By setting it to "Contracted", it will hide all the inline code by default and you can view it by clicking on the toggle link inside the asset row.</p>
|
177 |
</td>
|
178 |
</tr>
|
179 |
|
206 |
</ul>
|
207 |
<div class="wpacu-clearfix"></div>
|
208 |
|
209 |
+
<p>In case you prefer standard HTML checkboxes instead of the enhanced CSS3 iPhone style ones (on & off) or you need a simple HTML layout in case you're using a screen reader software (e.g. for people with disabilities) which requires standard/clean HTML code, then you can choose "Standard" as an option.</p>
|
210 |
</td>
|
211 |
</tr>
|
212 |
|
222 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[hide_core_files]"
|
223 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
224 |
|
225 |
+
WordPress Core Files have handles such as 'jquery', 'wp-embed', 'comment-reply', 'dashicons' etc.
|
226 |
+
<p style="margin-top: 10px;">They should only be unloaded by experienced developers when they are convinced that are not needed in particular situations. It's better to leave them loaded if you have any doubts whether you need them or not. By hiding them in the assets management list, you will see a smaller assets list (easier to manage) and you will avoid updating by mistake any option (unload, async, defer) related to any core file.</p>
|
227 |
</td>
|
228 |
</tr>
|
229 |
|
241 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[test_mode]"
|
242 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
243 |
|
244 |
+
This is great for debugging when you're going through trial and error while removing unneeded CSS & JavaScript on your website.
|
245 |
+
<p>Your visitors will load the website with all the settings & assets loaded (just like it was before you activated the plugin).</p>
|
246 |
+
<p>For instance, you have an eCommerce website (e.g. WooCommerce, Easy Digital Downloads), and you're worried that unloading one wrong asset could break the "add to cart" functionality or the layout of the product page. You can enable this option, do the unloading for the CSS & JavaScript files you believe are not needed on certain pages, test to check if everything is alright, and then disable test mode to enable the unloading for your visitors too (not only the admin).</p>
|
247 |
+
</td>
|
248 |
+
</tr>
|
249 |
+
|
250 |
+
<tr valign="top">
|
251 |
+
<th scope="row" class="setting_title">
|
252 |
+
<label for="wpacu_combine_loaded_css">Combine loaded CSS into one file?</label>
|
253 |
+
<p class="wpacu_subtitle"><small><em>Helps reducing the number of HTTP Requests even further</em></small></p>
|
254 |
+
</th>
|
255 |
+
<td>
|
256 |
+
<select id="wpacu_combine_loaded_css" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[combine_loaded_css]">
|
257 |
+
<option <?php if ($data['combine_loaded_css'] === 'default') { ?>selected="selected"<?php } ?> value="">No (default)</option>
|
258 |
+
<option <?php if ($data['combine_loaded_css'] === 'for_admin') { ?>selected="selected"<?php } ?> value="for_admin">Yes, for logged-in administrators</option>
|
259 |
+
<option <?php if ($data['combine_loaded_css'] === 'for_all') { ?>selected="selected"<?php } ?> value="for_all">Yes, for everyone</option>
|
260 |
+
</select> <small>* if /wp-content/cache/ directory is not writable for some reason, this feature will not work; requires the DOMDocument XML DOM Parser to be enabled in PHP (which it is by default) for maximum performance</small>
|
261 |
+
|
262 |
+
<p>This scans the remaining CSS files from the <code><head></code> and combines them into one file. To be 100% sure everything works fine after activation, consider using "Yes, for logged-in administrators" so only you can see the updated page. If all looks good, you can later switch it to "Yes (for everyone)".</p>
|
263 |
+
<p style="margin-bottom: 0;">The following stylesheets are not included in the combined CSS file for maximum performance:</p>
|
264 |
+
<ul style="list-style: disc; margin-left: 20px; margin-bottom: 0;">
|
265 |
+
<li>Have any <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">preloading added to them</a> via <code>rel="preload"</code> will not be combined as they have priority in loading and shouldn't be mixed with the rest of the CSS.</li>
|
266 |
+
<li style="margin-bottom: 0;">Are loaded within the <code><body></code> part of the page as they were likely added there because they are needed after the page is rendered (e.g. for AJAX styling calls, popups or elements that are not visible in the top viewport etc.)</li>
|
267 |
+
</ul>
|
268 |
+
<p style="margin-top: 10px;"><strong>Note:</strong> If "Test Mode" is enabled, the CSS files this feature will not work for the guest users, even if "Yes, for everyone" is chosen as "Test Mode" purpose is to make the plugin as inactive for non logged-in administrators for ultimate debugging.</p>
|
269 |
</td>
|
270 |
</tr>
|
271 |
</table>
|
287 |
name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
|
288 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
289 |
|
290 |
+
This will unload WordPress' Emojis (the smiley icons)
|
291 |
+
<p style="margin-top: 10px;">As of WordPress 4.2, a new feature was introduced that allows you to use the new Emojis. While on some WordPress setups is useful, in many situations (especially when you are not using WordPress as a blog), you just don’t need them and the file /wp-includes/js/wp-emoji-release.min.js is loaded along with extra inline JavaScript code which add up to the number of loaded HTTP requests.</p>
|
292 |
</td>
|
293 |
</tr>
|
294 |
|
303 |
name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_jquery_migrate]"
|
304 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
305 |
|
306 |
+
This will unload jQuery Migrate (<em>jquery-migrate(.min).js</em>)
|
307 |
+
<p style="margin-top: 10px;">This is a JavaScript library that allows older jQuery code (up to version jQuery 1.9) to run on the latest version of jQuery avoiding incompatibility problems. Unless your website is using an old theme or has a jQuery plugin that was written a long time ago, this file is likely not needed to load. Consider disabling it to improve page loading time. Make sure to properly test the website.</p>
|
308 |
</td>
|
309 |
</tr>
|
310 |
|
319 |
name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_comment_reply]"
|
320 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
321 |
|
322 |
+
This will unload Comment Reply (<em>/wp-includes/js/comment-reply(.min).js</em>)
|
323 |
+
<p style="margin-top: 10px;">This is safe to unload if you're not using WordPress as a blog, do not want visitors to leave comments or you've replaced the default WordPress comments with a comment platform such as Disqus or Facebook.</p>
|
324 |
</td>
|
325 |
</tr>
|
326 |
</table>
|
329 |
<p><em><strong>Note:</strong> The options that have a lock are available to Pro users. <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_settings">Click here to upgrade!</a></em></p>
|
330 |
<hr />
|
331 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
332 |
<h2><?php _e('Cleanup unused elements within HEAD section', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
|
333 |
<p>There are elements that are enabled by default in many WordPress environments, but not necessary to be enabled. Cleanup the unnecessary code between <code><head></code> and <code></head></code>.</p>
|
334 |
|
348 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
349 |
|
350 |
<code><link rel="EditURI" type="application/rsd xml" title="RSD" href="http://yourwebsite.com/xmlrpc.php?rsd" /></code>
|
351 |
+
<p style="margin-top: 10px;">XML-RPC clients use this discover method. If you do not know what this is and don't use service integrations such as <a href="http://www.flickr.com/services/api/request.xmlrpc.html" target="_blank">Flickr</a> on your WordPress website, you can remove it.</p>
|
352 |
</td>
|
353 |
</tr>
|
354 |
|
367 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
368 |
|
369 |
<code><link rel="wlwmanifest" type="application/wlwmanifest xml" href="https://yourwebsite.com/asset-optimizer/wp-includes/wlwmanifest.xml" /></code>
|
370 |
+
<p style="margin-top: 10px;">If you do not use Windows Live Writer to edit your blog contents, then it's safe to remove this.</p>
|
371 |
</td>
|
372 |
</tr>
|
373 |
|
386 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
387 |
|
388 |
<code><link rel='https://api.w.org/' href='https://yourwebsite.com/wp-json/' /></code>
|
389 |
+
<p style="margin-top: 10px;">Are you accessing your content through endpoints (e.g. https://yourwebsite.com/wp-json/, https://yourwebsite.com/wp-json/wp/v2/posts/1 - <em>1</em> in this example is the POST ID)? If not, you can remove this.</p>
|
390 |
</td>
|
391 |
</tr>
|
392 |
|
405 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
406 |
|
407 |
<code><link rel='shortlink' href="https://yourdomain.com/?p=1"></code>
|
408 |
+
<p style="margin-top: 10px;">Are you using SEO friendly URLs and do not need the default WordPress shortlink? You can just remove this as it bulks out the head section of your website.</p>
|
409 |
</td>
|
410 |
</tr>
|
411 |
|
424 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
425 |
|
426 |
<code><link rel='prev' title='Title of adjacent post' href='https://yourdomain.com/adjacent-post-slug-here/' /></code>
|
427 |
+
<p style="margin-top: 10px;">This removes relational links for the posts adjacent to the current post for single post pages.</p>
|
428 |
</td>
|
429 |
</tr>
|
430 |
|
443 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
444 |
|
445 |
<code><meta name="generator" content="WordPress 4.9.8" /></code>
|
446 |
+
<p style="margin-top: 10px;">This is good for security purposes as well, since it hides the WordPress version you're using (in case of hacking attempts).</p>
|
447 |
</td>
|
448 |
</tr>
|
449 |
|
462 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
463 |
|
464 |
<code>e.g. <meta name="generator" content="Easy Digital Downloads v2.9.8" /></code>
|
465 |
+
<p style="margin-top: 10px;">This will remove all meta tags with the "generator" name, including the WordPress version. You could use a plugin or a theme that has added a generator notice, but you do not need to have it there. Moreover, it will hide the version of the plugins and theme you're using which is good for security reasons.</p>
|
466 |
</td>
|
467 |
</tr>
|
468 |
|
481 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
482 |
|
483 |
<code><link rel="alternate" type="application/rss xml" title="Your Site Title &raquo; Feed" href="https://www.yourwebsite.com/feed/" /></code>
|
484 |
+
<p style="margin-top: 10px;">If you do not use WordPress for blogging purposes at all, and it doesn't have any blog posts (apart from the main pages that you added), then you can remove the main feed link. It will also remove feeds for the following pages: categories, tags, custom taxonomies & search results. Note that it will not remove comments RSS feeds which can be removed using the setting below. Some websites might have blog posts and would keep the main RSS feeds enabled, while removing the comments RSS feeds if they don't use the comments functionality.</p>
|
485 |
</td>
|
486 |
</tr>
|
487 |
|
500 |
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
|
501 |
|
502 |
<code>e.g. <link rel="alternate" type="application/rss xml" title="Your Website Title &raquo; Comments Feed" href="https://www.yourdomain.com/comments/feed/" /></code>
|
503 |
+
<p style="margin-top: 10px;">If you do not use the comments functionality on your posts or do not use WordPress for blogging purposes at all, then you can remove the comments feed link.</p>
|
504 |
</td>
|
505 |
</tr>
|
506 |
|
517 |
|
518 |
<p style="margin-bottom: 10px;"><strong>Disable XML-RPC Pingback Only</strong>: If you need the XML-RPC protocol support, but you do not use the pingbacks which are used by your website to notify another website that you have linked to it from your page(s), you can just disable the pinbacks and keep the other XML-RPC functionality. This is also a security measure to prevent DDoS attacks.</p>
|
519 |
|
520 |
+
<p style="margin-bottom: 0;"><strong>Disable XML-RPC Completely</strong>: If you do not use Jetpack plugin for off-site server communication or you only use the Dashboard to post content (without any remote software connection to the WordPress website such as Windows Live Writer or mobile apps), then you can disable the XML-RPC functionality. You can always re-enable it whenever you believe you'll need it.</p>
|
521 |
</td>
|
522 |
</tr>
|
523 |
</table>
|
templates/meta-box-loaded-assets/_asset-script-single-row.php
CHANGED
@@ -18,7 +18,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
18 |
<?php
|
19 |
if ($isCoreFile && ! $hideCoreFiles) {
|
20 |
?>
|
21 |
-
<span class="dashicons dashicons-warning wordpress-core-file"><span class="tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
|
22 |
<?php
|
23 |
}
|
24 |
?>
|
@@ -190,7 +190,9 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
190 |
href="#">Show / Hide</a>
|
191 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
192 |
<div>
|
193 |
-
<p style="margin-top: -7px !important;
|
|
|
|
|
194 |
</div>
|
195 |
</div>
|
196 |
</div>
|
@@ -212,7 +214,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
212 |
}
|
213 |
|
214 |
// [wpacu_lite]
|
215 |
-
$extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
216 |
// [/wpacu_lite]
|
217 |
|
218 |
if (! empty($extraInfo)) {
|
@@ -226,7 +228,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
226 |
<p>If loaded (not unloaded by any of the rules above), apply the following attributes: <em><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>">* this option is available in Pro version</a></em></p>
|
227 |
|
228 |
<ul class="wpacu-script-attributes-settings wpacu-first">
|
229 |
-
<li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a> <strong>async</strong> ⟶</li>
|
230 |
<li><label for="async_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
|
231 |
<li><label for="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
|
232 |
<li><label for="async_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
|
@@ -234,7 +236,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
234 |
|
235 |
|
236 |
<ul class="wpacu-script-attributes-settings">
|
237 |
-
<li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a> <strong>defer</strong> ⟶</li>
|
238 |
<li><label for="defer_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
|
239 |
<li><label for="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
|
240 |
<li><label for="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
|
18 |
<?php
|
19 |
if ($isCoreFile && ! $hideCoreFiles) {
|
20 |
?>
|
21 |
+
<span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
|
22 |
<?php
|
23 |
}
|
24 |
?>
|
190 |
href="#">Show / Hide</a>
|
191 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
192 |
<div>
|
193 |
+
<p style="margin-top: -7px !important; line-height: normal !important;">
|
194 |
+
<em><?php echo strip_tags($data['row']['extra_data_js']); ?></em>
|
195 |
+
</p>
|
196 |
</div>
|
197 |
</div>
|
198 |
</div>
|
214 |
}
|
215 |
|
216 |
// [wpacu_lite]
|
217 |
+
$extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
218 |
// [/wpacu_lite]
|
219 |
|
220 |
if (! empty($extraInfo)) {
|
228 |
<p>If loaded (not unloaded by any of the rules above), apply the following attributes: <em><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>">* this option is available in Pro version</a></em></p>
|
229 |
|
230 |
<ul class="wpacu-script-attributes-settings wpacu-first">
|
231 |
+
<li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="wpacu-tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a> <strong>async</strong> ⟶</li>
|
232 |
<li><label for="async_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
|
233 |
<li><label for="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
|
234 |
<li><label for="async_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
|
236 |
|
237 |
|
238 |
<ul class="wpacu-script-attributes-settings">
|
239 |
+
<li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="wpacu-tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a> <strong>defer</strong> ⟶</li>
|
240 |
<li><label for="defer_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
|
241 |
<li><label for="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
|
242 |
<li><label for="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
|
templates/meta-box-loaded-assets/_asset-style-single-row.php
CHANGED
@@ -18,7 +18,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
18 |
<?php
|
19 |
if ($isCoreFile && ! $hideCoreFiles) {
|
20 |
?>
|
21 |
-
<span class="dashicons dashicons-warning wordpress-core-file"><span class="tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
|
22 |
<?php
|
23 |
}
|
24 |
?>
|
@@ -190,7 +190,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
190 |
href="#">Show / Hide</a>
|
191 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
192 |
<div>
|
193 |
-
<p style="margin-bottom: 15px;">
|
194 |
<?php foreach ($data['row']['extra_data_css_list'] as $extraDataCSS) {
|
195 |
echo '<em>'.htmlspecialchars($extraDataCSS).'</em>'.'<br />';
|
196 |
}
|
@@ -213,7 +213,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
213 |
}
|
214 |
|
215 |
// [wpacu_lite]
|
216 |
-
$extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
217 |
// [/wpacu_lite]
|
218 |
|
219 |
if (! empty($extraInfo)) {
|
18 |
<?php
|
19 |
if ($isCoreFile && ! $hideCoreFiles) {
|
20 |
?>
|
21 |
+
<span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
|
22 |
<?php
|
23 |
}
|
24 |
?>
|
190 |
href="#">Show / Hide</a>
|
191 |
<div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
|
192 |
<div>
|
193 |
+
<p style="margin-bottom: 15px; line-height: normal !important;">
|
194 |
<?php foreach ($data['row']['extra_data_css_list'] as $extraDataCSS) {
|
195 |
echo '<em>'.htmlspecialchars($extraDataCSS).'</em>'.'<br />';
|
196 |
}
|
213 |
}
|
214 |
|
215 |
// [wpacu_lite]
|
216 |
+
$extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
217 |
// [/wpacu_lite]
|
218 |
|
219 |
if (! empty($extraInfo)) {
|
templates/meta-box-loaded-assets/_inline_js.php
CHANGED
@@ -21,7 +21,8 @@ if (! isset($data)) {
|
|
21 |
if (assetsListContent.style.maxHeight) {
|
22 |
assetsListContent.style.maxHeight = null;
|
23 |
} else {
|
24 |
-
assetsListContent.style.maxHeight = assetsListContent.scrollHeight + "px";
|
|
|
25 |
}
|
26 |
});
|
27 |
}
|
@@ -67,7 +68,8 @@ if (! isset($data)) {
|
|
67 |
for (wpacuI = 0; wpacuI < wpacuContentLinks.length; wpacuI++) {
|
68 |
wpacuContentLinks[wpacuI].classList.add('wpacu-assets-collapsible-active');
|
69 |
assetsListContent = wpacuContentLinks[wpacuI].nextElementSibling;
|
70 |
-
assetsListContent.style.maxHeight = assetsListContent.scrollHeight + 'px';
|
|
|
71 |
assetsListContent.classList.remove('wpacu-open');
|
72 |
}
|
73 |
}
|
21 |
if (assetsListContent.style.maxHeight) {
|
22 |
assetsListContent.style.maxHeight = null;
|
23 |
} else {
|
24 |
+
//assetsListContent.style.maxHeight = assetsListContent.scrollHeight + "px";
|
25 |
+
assetsListContent.style.maxHeight = "100%";
|
26 |
}
|
27 |
});
|
28 |
}
|
68 |
for (wpacuI = 0; wpacuI < wpacuContentLinks.length; wpacuI++) {
|
69 |
wpacuContentLinks[wpacuI].classList.add('wpacu-assets-collapsible-active');
|
70 |
assetsListContent = wpacuContentLinks[wpacuI].nextElementSibling;
|
71 |
+
//assetsListContent.style.maxHeight = assetsListContent.scrollHeight + 'px';
|
72 |
+
assetsListContent.style.maxHeight = '100%';
|
73 |
assetsListContent.classList.remove('wpacu-open');
|
74 |
}
|
75 |
}
|
templates/meta-box-loaded-assets/view-default.php
CHANGED
@@ -14,7 +14,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
|
|
14 |
?>
|
15 |
<div class="wpacu-contract-expand-area">
|
16 |
<div class="col-left">
|
17 |
-
<h4>➝ Total enqueued files: <strong><?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong></h4>
|
18 |
</div>
|
19 |
<div class="col-right">
|
20 |
<a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>
|
@@ -25,7 +25,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
|
|
25 |
|
26 |
<div class="wpacu-assets-collapsible-wrap wpacu-wrap-styles">
|
27 |
<a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
|
28 |
-
<span class="dashicons dashicons-admin-appearance"></span> <?php _e('Styles (.css files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> ➝ Total: <?php echo $data['total_styles']; ?>
|
29 |
</a>
|
30 |
|
31 |
<div id="wpacu-assets-styles-collapsible-content"
|
@@ -87,7 +87,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
|
|
87 |
|
88 |
<div class="wpacu-assets-collapsible-wrap wpacu-wrap-scripts">
|
89 |
<a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
|
90 |
-
<span class="dashicons dashicons-media-code"></span> <?php _e('Scripts (.js files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> ➝ Total: <?php echo $data['total_scripts']; ?>
|
91 |
</a>
|
92 |
|
93 |
<div id="wpacu-assets-scripts-collapsible-content"
|
14 |
?>
|
15 |
<div class="wpacu-contract-expand-area">
|
16 |
<div class="col-left">
|
17 |
+
<h4>➝ Total enqueued files (including core files): <strong><?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong></h4>
|
18 |
</div>
|
19 |
<div class="col-right">
|
20 |
<a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>
|
25 |
|
26 |
<div class="wpacu-assets-collapsible-wrap wpacu-wrap-styles">
|
27 |
<a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
|
28 |
+
<span class="dashicons dashicons-admin-appearance"></span> <?php _e('Styles (.css files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> ➝ Total (+ core files): <?php echo $data['total_styles']; ?>
|
29 |
</a>
|
30 |
|
31 |
<div id="wpacu-assets-styles-collapsible-content"
|
87 |
|
88 |
<div class="wpacu-assets-collapsible-wrap wpacu-wrap-scripts">
|
89 |
<a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
|
90 |
+
<span class="dashicons dashicons-media-code"></span> <?php _e('Scripts (.js files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> ➝ Total (+ core files): <?php echo $data['total_scripts']; ?>
|
91 |
</a>
|
92 |
|
93 |
<div id="wpacu-assets-scripts-collapsible-content"
|
templates/settings-frontend.php
CHANGED
@@ -15,12 +15,13 @@ if (! isset($data)) {
|
|
15 |
$updateClass = new \WpAssetCleanUp\Update;
|
16 |
?>
|
17 |
<div class="wpacu-updated-frontend"><em>
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
</em
|
|
|
24 |
<?php
|
25 |
}
|
26 |
|
@@ -34,7 +35,10 @@ if (! isset($data)) {
|
|
34 |
if ($wpRocketSettings['cache_logged_user'] == 1) {
|
35 |
?>
|
36 |
<div class="wpacu-warning">
|
37 |
-
<strong><span class="dashicons dashicons-warning"></span> Important:</strong> You have enabled "<em>Enable caching for logged-in WordPress users</em>" in WP Rocket's Cache area.
|
|
|
|
|
|
|
38 |
</div>
|
39 |
<div class="clearfix"></div>
|
40 |
<?php
|
15 |
$updateClass = new \WpAssetCleanUp\Update;
|
16 |
?>
|
17 |
<div class="wpacu-updated-frontend"><em>
|
18 |
+
<?php if (\WpAssetCleanUp\Misc::isHomePage()) {
|
19 |
+
echo $updateClass->updateDoneMsg['homepage'];
|
20 |
+
} else {
|
21 |
+
echo $updateClass->updateDoneMsg['page'];
|
22 |
+
} ?>
|
23 |
+
</em>
|
24 |
+
</div>
|
25 |
<?php
|
26 |
}
|
27 |
|
35 |
if ($wpRocketSettings['cache_logged_user'] == 1) {
|
36 |
?>
|
37 |
<div class="wpacu-warning">
|
38 |
+
<strong><span class="dashicons dashicons-warning"></span> Important:</strong> You have enabled "<em>Enable caching for logged-in WordPress users</em>" in WP Rocket's Cache area.
|
39 |
+
This could cause some issues with Asset CleanUp retrieving an outdated (cached) asset list below.
|
40 |
+
If you experience issues such as unsaved settings or viewing assets from plugins that are disabled, consider using Asset CleanUp only in the Dashboard area (option "Manage in the Dashboard?" has to be enabled in plugin's settings).
|
41 |
+
<!-- @TODO: Make sure to instruct the user to append a query string to the URL bar to load an uncached version of the plugin OR find a solution to force page reload (non-cached) -->
|
42 |
</div>
|
43 |
<div class="clearfix"></div>
|
44 |
<?php
|
wpacu-load.php
CHANGED
@@ -58,6 +58,10 @@ new \WpAssetCleanUp\Plugin;
|
|
58 |
// Admin Bar (Top Area of the website when user is logged in)
|
59 |
new \WpAssetCleanUp\AdminBar();
|
60 |
|
|
|
|
|
|
|
|
|
61 |
if (is_admin()) {
|
62 |
new \WpAssetCleanUp\Tools();
|
63 |
}
|
58 |
// Admin Bar (Top Area of the website when user is logged in)
|
59 |
new \WpAssetCleanUp\AdminBar();
|
60 |
|
61 |
+
// Trigger only in the front-end view for guests (regular visitors, not logged-in)
|
62 |
+
$wpacuOptimizeCss = new \WpAssetCleanUp\OptimizeCss();
|
63 |
+
$wpacuOptimizeCss->init();
|
64 |
+
|
65 |
if (is_admin()) {
|
66 |
new \WpAssetCleanUp\Tools();
|
67 |
}
|
wpacu.php
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
-
* Version: 1.2.9
|
6 |
* Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
9 |
*/
|
10 |
|
11 |
-
define('WPACU_PLUGIN_VERSION', '1.2.9');
|
12 |
|
13 |
// Exit if accessed directly
|
14 |
if (! defined('ABSPATH')) {
|
@@ -33,6 +33,8 @@ define('WPACU_PLUGIN_TITLE', 'Asset CleanUp'); // a short version of the
|
|
33 |
define('WPACU_PLUGIN_FILE', __FILE__);
|
34 |
define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
|
35 |
|
|
|
|
|
36 |
// Do not load the plugin if the PHP version is below 5.3
|
37 |
// If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
|
38 |
$wpacuWrongPhp = ((! defined('PHP_VERSION_ID')) || (defined('PHP_VERSION_ID') && PHP_VERSION_ID < 50300));
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
+
* Version: 1.2.9.1
|
6 |
* Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
9 |
*/
|
10 |
|
11 |
+
define('WPACU_PLUGIN_VERSION', '1.2.9.1');
|
12 |
|
13 |
// Exit if accessed directly
|
14 |
if (! defined('ABSPATH')) {
|
33 |
define('WPACU_PLUGIN_FILE', __FILE__);
|
34 |
define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
|
35 |
|
36 |
+
define('WPACU_ADMIN_PAGE_ID_START', WPACU_PLUGIN_ID . '_settings');
|
37 |
+
|
38 |
// Do not load the plugin if the PHP version is below 5.3
|
39 |
// If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
|
40 |
$wpacuWrongPhp = ((! defined('PHP_VERSION_ID')) || (defined('PHP_VERSION_ID') && PHP_VERSION_ID < 50300));
|