Asset CleanUp: Page Speed Booster - Version 1.2.8.1

Version Description

  • Added "Test Mode" option which will unload assets only if the user is logged in as administrator and has capability of activating plugins.
  • This is good for debugging in case one might worry that a CSS/JavaScript file could be unloaded by mistake and break the website for the regular (non-logged in) users.
  • Once the page loads fine and all looks good, the "Test Mode" can be disabled so the visitors will load the lighter version of the page.
Download this release

Release Info

Developer gabelivan
Plugin Icon 128x128 Asset CleanUp: Page Speed Booster
Version 1.2.8.1
Comparing to
See all releases

Code changes from version 1.2.8 to 1.2.8.1

assets/style.min.css CHANGED
@@ -1 +1 @@
1
- .wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}.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;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-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:5px 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.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:5px 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}body.toplevel_page_wpassetcleanup_settings .notice{padding:10px!important}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,#wpacu_wrap_assets div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning{color:#c00}#wpacu_meta_box_content div.wpacu_warning,#wpacu_wrap_assets div.wpacu_warning{border:1px solid #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 ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area{margin-bottom:14px}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block;margin:0}#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_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 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}.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{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{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;padding:0}ul.wpacu_asset_options li{margin: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}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-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;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;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;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;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,.wordpress-core-file .tooltip{font-size:14px;line-height:18px;z-index:1;text-align:center;padding:6px;border-radius:6px;bottom:100%;left:50%}.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 .tooltip{position:absolute;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;margin-left:-65px}.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{position:absolute;visibility:hidden;width:160px;background-color:#c00;color:#fff;margin-left:-80px}.wordpress-core-file:hover .tooltip{visibility:visible}body.wp-admin .go-pro-link-no-style .tooltip{font-size:12px;line-height:16px;padding:5px}.pro-page-unlock-notice{border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.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 .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;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}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;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}.toplevel_page_wpassetcleanup_settings .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.toplevel_page_wpassetcleanup_settings .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.toplevel_page_wpassetcleanup_settings .wpacu_switch input{display:none}.toplevel_page_wpassetcleanup_settings .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.toplevel_page_wpassetcleanup_settings .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.toplevel_page_wpassetcleanup_settings input:checked+.wpacu_slider{background-color:#52af00}.toplevel_page_wpassetcleanup_settings input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.toplevel_page_wpassetcleanup_settings input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.toplevel_page_wpassetcleanup_settings .wpacu_slider.wpacu_round{border-radius:29px}.toplevel_page_wpassetcleanup_settings .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu_asset_row .wpacu_switch input{display:none}.wpacu_asset_row .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu_asset_row .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row input:checked+.wpacu_slider{background-color:#C00}.wpacu_asset_row input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu_asset_row input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu_asset_row .wpacu_slider.wpacu_round{border-radius:29px}.wpacu_asset_row .wpacu_slider.wpacu_round:before{border-radius:50%}.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}
1
+ .wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}.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-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}body.toplevel_page_wpassetcleanup_settings .notice{padding:10px!important}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,#wpacu_wrap_assets div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning{color:#c00}#wpacu_meta_box_content div.wpacu_warning,#wpacu_wrap_assets div.wpacu_warning{border:1px solid #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 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_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 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{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{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}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-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;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;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;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;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,.wordpress-core-file .tooltip{font-size:14px;line-height:18px;z-index:1;text-align:center;padding:6px;border-radius:6px;bottom:100%;left:50%}.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 .tooltip{position:absolute;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;margin-left:-65px}.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{position:absolute;visibility:hidden;width:160px;background-color:#c00;color:#fff;margin-left:-80px}.wordpress-core-file:hover .tooltip{visibility:visible}body.wp-admin .go-pro-link-no-style .tooltip{font-size:12px;line-height:16px;padding:5px}.pro-page-unlock-notice{border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.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;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}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;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;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}.toplevel_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.toplevel_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.toplevel_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.toplevel_page_wpassetcleanup_settings .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.toplevel_page_wpassetcleanup_settings .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.toplevel_page_wpassetcleanup_settings .wpacu_switch input{display:none}.toplevel_page_wpassetcleanup_settings .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.toplevel_page_wpassetcleanup_settings .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.toplevel_page_wpassetcleanup_settings input:checked+.wpacu_slider{background-color:#52af00}.toplevel_page_wpassetcleanup_settings input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.toplevel_page_wpassetcleanup_settings input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.toplevel_page_wpassetcleanup_settings .wpacu_slider.wpacu_round{border-radius:29px}.toplevel_page_wpassetcleanup_settings .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu_asset_row td{width:100%}.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_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu_asset_row .wpacu_switch input{display:none}.wpacu_asset_row .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu_asset_row .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row input:checked+.wpacu_slider{background-color:#C00}.wpacu_asset_row input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu_asset_row input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu_asset_row .wpacu_slider.wpacu_round{border-radius:29px}.wpacu_asset_row .wpacu_slider.wpacu_round:before{border-radius:50%}.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}
classes/AdminBar.php ADDED
@@ -0,0 +1,53 @@
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class AdminBar
6
+ * @package WpAssetCleanUp
7
+ */
8
+ class AdminBar
9
+ {
10
+ /**
11
+ *
12
+ */
13
+ public function __construct()
14
+ {
15
+ add_action( 'plugins_loaded', array( $this, 'topBar' ) );
16
+ }
17
+
18
+ /**
19
+ *
20
+ */
21
+ public function topBar()
22
+ {
23
+ if (Menu::userCanManageAssets()) {
24
+ add_action( 'admin_bar_menu', array( $this, 'topBarInfo' ), 999 );
25
+ }
26
+ }
27
+
28
+ /**
29
+ * @param $wp_admin_bar
30
+ */
31
+ public function topBarInfo($wp_admin_bar)
32
+ {
33
+ if (Main::instance()->settings['test_mode']) {
34
+ $wp_admin_bar->add_menu(array(
35
+ 'id' => 'wpacu-test-mode',
36
+ 'title' => WPACU_PLUGIN_TITLE.': <span class="dashicons dashicons-admin-tools"></span> <strong>TEST MODE</strong> is <strong>ENABLED SITE-WIDE</strong>',
37
+ 'href' => admin_url('admin.php?page=' . WPACU_PLUGIN_NAME . '_settings')
38
+ ));
39
+
40
+ $wp_admin_bar->add_menu(array(
41
+ 'parent' => 'wpacu-test-mode',
42
+ 'id' => 'wpacu-test-mode-info',
43
+ 'title' => 'With "Test Mode" active, any settings will be applied only for your view.',
44
+ ));
45
+
46
+ $wp_admin_bar->add_menu(array(
47
+ 'parent' => 'wpacu-test-mode',
48
+ 'id' => 'wpacu-test-mode-info-2',
49
+ 'title' => 'The visitors will view the website as if the plugin is disabled. <a target="_blank" style="display:inline-block; text-decoration: underline; padding-left: 5px;" href="https://assetcleanup.com/docs/">Read more</a>',
50
+ ));
51
+ }
52
+ }
53
+ }
classes/BulkUnloads.php CHANGED
@@ -28,13 +28,8 @@ class BulkUnloads
28
*/
29
public function __construct()
30
{
31
- $this->wpacuFor = isset($_REQUEST['wpacu_for'])
32
- ? $_REQUEST['wpacu_for']
33
- : $this->wpacuFor;
34
-
35
- $this->wpacuPostType = isset($_REQUEST['wpacu_post_type'])
36
- ? $_REQUEST['wpacu_post_type']
37
- : $this->wpacuPostType;
38
39
if (isset($_REQUEST['wpacu_update']) && $_REQUEST['wpacu_update'] == 1) {
40
$this->update();
@@ -107,7 +102,7 @@ class BulkUnloads
107
$removed = $wpacuUpdate->removeEverywhereUnloads(array(), array(), 'post');
108
109
if ($removed) {
110
- add_action('admin_notices', array($this, 'noticeGlobalsRemoved'));
111
}
112
}
113
@@ -115,7 +110,7 @@ class BulkUnloads
115
$removed = $wpacuUpdate->removeBulkUnloads($this->wpacuPostType);
116
117
if ($removed) {
118
- add_action('admin_notices', array($this, 'noticePostTypesRemoved'));
119
}
120
}
121
}
@@ -126,8 +121,8 @@ class BulkUnloads
126
public function noticeGlobalsRemoved()
127
{
128
?>
129
- <div class="updated notice is-dismissible">
130
- <p>The selected styles/scripts were removed from the global unload list and they will now load in the pages/posts,
131
unless you have other rules that would prevent them from loading.</p>
132
</div>
133
<?php
@@ -139,8 +134,8 @@ class BulkUnloads
139
public function noticePostTypesRemoved()
140
{
141
?>
142
- <div class="updated notice is-dismissible">
143
- <p>The selected styles/scripts were removed from the unload list for <strong><u><?php echo $this->wpacuPostType; ?></u></strong>
144
post type and they will now load in the pages/posts, unless you have other rules that would prevent them from loading.</p>
145
</div>
146
<?php
28
*/
29
public function __construct()
30
{
31
+ $this->wpacuFor = Misc::getVar('request', 'wpacu_for', $this->wpacuFor);
32
+ $this->wpacuPostType = Misc::getVar('request', 'wpacu_post_type', $this->wpacuPostType);
33
34
if (isset($_REQUEST['wpacu_update']) && $_REQUEST['wpacu_update'] == 1) {
35
$this->update();
102
$removed = $wpacuUpdate->removeEverywhereUnloads(array(), array(), 'post');
103
104
if ($removed) {
105
+ add_action('wpacu_admin_notices', array($this, 'noticeGlobalsRemoved'));
106
}
107
}
108
110
$removed = $wpacuUpdate->removeBulkUnloads($this->wpacuPostType);
111
112
if ($removed) {
113
+ add_action('wpacu_admin_notices', array($this, 'noticePostTypesRemoved'));
114
}
115
}
116
}
121
public function noticeGlobalsRemoved()
122
{
123
?>
124
+ <div class="updated notice wpacu-notice is-dismissible">
125
+ <p><span class="dashicons dashicons-yes"></span> The selected styles/scripts were removed from the global unload list and they will now load in the pages/posts,
126
unless you have other rules that would prevent them from loading.</p>
127
</div>
128
<?php
134
public function noticePostTypesRemoved()
135
{
136
?>
137
+ <div class="updated notice wpacu-notice is-dismissible">
138
+ <p><span class="dashicons dashicons-yes"></span> The selected styles/scripts were removed from the unload list for <strong><u><?php echo $this->wpacuPostType; ?></u></strong>
139
post type and they will now load in the pages/posts, unless you have other rules that would prevent them from loading.</p>
140
</div>
141
<?php
classes/HomePage.php CHANGED
@@ -17,10 +17,10 @@ class HomePage
17
*/
18
public function __construct()
19
{
20
- $this->data['nonce_name'] = WPACU_PLUGIN_NAME.'_settings';
21
$this->data['show_on_front'] = Misc::getShowOnFront();
22
23
- $isHomePageEdit = (isset($_GET['page']) && $_GET['page'] === WPACU_PLUGIN_NAME.'_home_page');
24
25
// Only continue if we are on the plugin's homepage edit mode
26
if (! $isHomePageEdit) {
@@ -57,12 +57,11 @@ class HomePage
57
*/
58
public function page()
59
{
60
- $wpacuNoLoadAssets = isset($_POST[WPACU_PLUGIN_NAME])
61
- ? $_POST[WPACU_PLUGIN_NAME] : array();
62
63
- $noncePost = isset($_POST[$this->data['nonce_name']])
64
- ? $_POST[$this->data['nonce_name']] : '';
65
-
66
if (is_array($wpacuNoLoadAssets) && wp_verify_nonce($noncePost, $this->data['nonce_name'])) {
67
$wpacuUpdate = new Update;
68
$wpacuUpdate->updateFrontPage($wpacuNoLoadAssets);
17
*/
18
public function __construct()
19
{
20
+ $this->data['nonce_name'] = WPACU_PLUGIN_NAME.'_settings';
21
$this->data['show_on_front'] = Misc::getShowOnFront();
22
23
+ $isHomePageEdit = (Misc::getVar('get', 'page') === WPACU_PLUGIN_NAME.'_home_page');
24
25
// Only continue if we are on the plugin's homepage edit mode
26
if (! $isHomePageEdit) {
57
*/
58
public function page()
59
{
60
+ $wpacuNoLoadAssets = Misc::getVar('post', WPACU_PLUGIN_NAME, array());
61
62
+ $noncePost = Misc::getVar('post', $this->data['nonce_name']);
63
+
64
+ // Could Be an Empty Array as Well so just is_array() is enough to use
65
if (is_array($wpacuNoLoadAssets) && wp_verify_nonce($noncePost, $this->data['nonce_name'])) {
66
$wpacuUpdate = new Update;
67
$wpacuUpdate->updateFrontPage($wpacuNoLoadAssets);
classes/Main.php CHANGED
@@ -51,11 +51,6 @@ class Main
51
public $isUpdateable = true;
52
// [/wpacu_lite]
53
54
- /**
55
- * @var bool
56
- */
57
- public $isWooCommerceShopPage = false;
58
-
59
/**
60
* @var int
61
*/
@@ -69,28 +64,13 @@ class Main
69
/**
70
* @var array
71
*/
72
- public $vars = array();
73
-
74
- /**
75
- * @var bool|mixed|void
76
- */
77
- public $frontendShow = false;
78
-
79
- /**
80
- * @var bool
81
- */
82
- public $dashboardShow = false;
83
84
/**
85
* @var bool
86
*/
87
public $isFrontendView = false;
88
89
- /**
90
- * @var bool|mixed
91
- */
92
- public $disableEmojis = false;
93
-
94
/**
95
* @var array
96
*/
@@ -153,17 +133,6 @@ class Main
153
*/
154
public function __construct()
155
{
156
- $wpacuSettingsClass = new Settings();
157
- $this->settings = $wpacuSettingsClass->getAll();
158
-
159
- $this->frontendShow = $this->settings['frontend_show'];
160
- $this->dashboardShow = $this->settings['dashboard_show'];
161
- $this->disableEmojis = $this->settings['disable_emojis'];
162
-
163
- if ($this->dashboardShow && $this->settings['dom_get_type'] !== '') {
164
- self::$domGetType = $this->settings['dom_get_type'];
165
- }
166
-
167
if (array_key_exists(WPACU_LOAD_ASSETS_REQ_KEY, $_REQUEST)) {
168
add_filter('w3tc_minify_enable', '__return_false');
169
}
@@ -180,47 +149,27 @@ class Main
180
Misc::noAdminBarLoad();
181
}
182
183
- // Fetch the page in the background to see what scripts/styles are already loading
184
- if ( isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY]) || $this->frontendShow) {
185
- if (isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])) {
186
- Misc::noAdminBarLoad();
187
- }
188
-
189
- add_action('wp_head', array($this, 'saveFooterAssets'), 100000000);
190
- add_action('wp_footer', array($this, 'printScriptsStyles'), PHP_INT_MAX);
191
- }
192
193
// Front-end View - Unload the assets
194
- if (! isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])) {
195
- // Unload Styles - HEAD
196
- add_action('wp_print_styles', array($this, 'filterStyles'), 100000);
197
-
198
- // Unload Scripts - HEAD
199
- add_action('wp_print_scripts', array($this, 'filterScripts'), 100000);
200
-
201
- // Unload Scripts & Styles - FOOTER
202
- // Needs to be triggered very soon as some old plugins/themes use wp_footer() to enqueue scripts
203
- // Sometimes styles are loaded in the BODY section of the page
204
- add_action('wp_print_footer_scripts', array($this, 'filterScripts'), 1);
205
- add_action('wp_print_footer_scripts', array($this, 'filterStyles'), 1);
206
- }
207
208
- // Do not load the meta box nor do any AJAX calls
209
- // if the asset management is not enabled for the Dashboard
210
- if ($this->settings['dashboard_show'] == 1) {
211
- // Send an AJAX request to get the list of loaded scripts and styles and print it nicely
212
- add_action(
213
- 'wp_ajax_'. WPACU_PLUGIN_NAME . '_get_loaded_assets',
214
- array($this, 'ajaxGetJsonListCallback')
215
- );
216
217
- add_action('add_meta_boxes', array($this, 'addMetaBox'));
218
- }
219
220
- if ($this->disableEmojis == 1) {
221
- add_action('init', array($this, 'doDisableEmojis'));
222
- add_filter('emoji_svg_url', '__return_false');
223
- }
224
225
// [wpacu_lite]
226
if ( ! (defined('WPACU_PRO_HIDE_HTML_USAGE_COMMENT') && WPACU_PRO_HIDE_HTML_USAGE_COMMENT) ) {
@@ -229,12 +178,53 @@ class Main
229
// [/wpacu_lite]
230
}
231
232
/**
233
* Priority: 8 (earliest)
234
*/
235
public function setVarsBeforeUpdate()
236
{
237
- $this->isFrontendView = ($this->frontendShow && Menu::userCanManageAssets()
238
&& !isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])
239
&& !is_admin());
240
@@ -303,7 +293,7 @@ class Main
303
{
304
global $post;
305
306
- if (! isset($post->ID)) {
307
return;
308
}
309
@@ -382,13 +372,11 @@ class Main
382
}
383
}
384
}
385
-
386
- $list = array_unique($list);
387
// [wpacu_lite]
388
}
389
// [/wpacu_lite]
390
391
- $list = apply_filters('wpacu_filter_scripts', $list);
392
393
// Let's see if there are load exceptions for this page
394
if (! empty($list) && ! empty($this->loadExceptions['scripts'])) {
@@ -430,6 +418,11 @@ class Main
430
return;
431
}
432
433
foreach ($list as $handle) {
434
$handle = trim($handle);
435
@@ -502,15 +495,13 @@ class Main
502
}
503
}
504
}
505
-
506
- $list = array_unique($list);
507
// [wpacu_lite]
508
}
509
// [/wpacu_lite]
510
511
// Any bulk unloaded styles for 'category', 'post_tag' and more?
512
// If the premium extension is enabled, any of the unloaded CSS will be added to the list
513
- $list = apply_filters('wpacu_filter_styles', $list);
514
515
// Let's see if there are load exceptions for this page
516
if (! empty($list) && ! empty($this->loadExceptions['styles'])) {
@@ -548,6 +539,11 @@ class Main
548
}
549
}
550
551
if (empty($list)) {
552
return;
553
}
@@ -597,7 +593,7 @@ class Main
597
$exceptionsListJson = get_option(
598
WPACU_PLUGIN_NAME . '_front_page_load_exceptions'
599
);
600
- } elseif (Main::wpacuProEnabled() && $type === 'for_pro') {
601
// [wpacu_pro]
602
if (class_exists( '\\WpAssetCleanUpPro\\LoadExceptions' )) {
603
$ExceptionsPro = new \WpAssetCleanUpPro\LoadExceptions();
@@ -609,7 +605,7 @@ class Main
609
if ($exceptionsListJson) {
610
$exceptionsList = json_decode($exceptionsListJson, true);
611
612
- if (json_last_error() != JSON_ERROR_NONE) {
613
$exceptionsList = $exceptionsListDefault;
614
}
615
}
@@ -695,7 +691,7 @@ class Main
695
public function printScriptsStyles()
696
{
697
// Not for WordPress AJAX calls
698
- if ((self::$domGetType === 'direct' && defined('DOING_AJAX') && DOING_AJAX)) {
699
return;
700
}
701
@@ -922,7 +918,7 @@ class Main
922
if ($isFrontEndView) {
923
$data = array(
924
'is_updateable' => true,
925
- 'post_type' => '',
926
'bulk_unloaded' => array('post_type' => array())
927
);
928
@@ -932,18 +928,18 @@ class Main
932
$data['current'] = $currentUnloaded;
933
934
$data['all']['scripts'] = $list['scripts'];
935
- $data['all']['styles'] = $list['styles'];
936
937
- $this->fetchUrl = Misc::getPageUrl($this->getCurrentPostId());
938
939
- $data['fetch_url'] = $this->fetchUrl;
940
941
- $data['nonce_name'] = Update::NONCE_FIELD_NAME;
942
- $data['nonce_action'] = Update::NONCE_ACTION_NAME;
943
944
$data = $this->alterAssetObj($data);
945
946
- $data['global_unload'] = $this->globalUnloaded;
947
948
if (Misc::isHomePage()) {
949
$type = 'front_page';
@@ -963,7 +959,8 @@ class Main
963
}
964
// [/wpacu_lite]
965
966
- $data['is_woocommerce_shop_page'] = $this->isWooCommerceShopPage;
967
968
$data['is_bulk_unloadable'] = $data['bulk_unloaded_type'] = false;
969
@@ -1092,7 +1089,7 @@ class Main
1092
$data['all'] = (array)json_decode($json);
1093
1094
// This value is needed to determine the location of an asset (HEAD OR BODY)
1095
- if ($contents != '') {
1096
$data['contents'] = base64_decode($contents);
1097
}
1098
@@ -1334,7 +1331,7 @@ class Main
1334
*/
1335
public function isSingularPage()
1336
{
1337
- return ($this->isWooCommerceShopPage || is_singular());
1338
}
1339
1340
/**
@@ -1356,7 +1353,7 @@ class Main
1356
$this->currentPostId = $wooCommerceShopPageId;
1357
1358
if ($this->currentPostId > 0) {
1359
- $this->isWooCommerceShopPage = true;
1360
}
1361
} else {
1362
if ($wooCommerceShopPageId > 0 && Misc::isHomePage()) {
@@ -1483,6 +1480,10 @@ class Main
1483
*/
1484
public function doDisableEmojis()
1485
{
1486
// Emojis Actions and Filters
1487
remove_action('admin_print_styles', 'print_emoji_styles');
1488
remove_action('wp_head', 'print_emoji_detection_script', 7);
@@ -1495,6 +1496,8 @@ class Main
1495
1496
// TinyMCE Emojis
1497
add_filter('tiny_mce_plugins', array($this, 'removeEmojisTinymce'));
1498
}
1499
1500
/**
@@ -1537,7 +1540,7 @@ class Main
1537
} else {
1538
$existingList = json_decode($existingListJson, true);
1539
1540
- if (json_last_error() != JSON_ERROR_NONE) {
1541
$validJson = false;
1542
$existingList = $existingListEmpty;
1543
}
@@ -1550,6 +1553,28 @@ class Main
1550
);
1551
}
1552
1553
// [wpacu_pro]
1554
/**
1555
* @return bool
51
public $isUpdateable = true;
52
// [/wpacu_lite]
53
54
/**
55
* @var int
56
*/
64
/**
65
* @var array
66
*/
67
+ public $vars = array('woo_url_not_match' => false, 'is_woo_shop_page' => false);
68
69
/**
70
* @var bool
71
*/
72
public $isFrontendView = false;
73
74
/**
75
* @var array
76
*/
133
*/
134
public function __construct()
135
{
136
if (array_key_exists(WPACU_LOAD_ASSETS_REQ_KEY, $_REQUEST)) {
137
add_filter('w3tc_minify_enable', '__return_false');
138
}
149
Misc::noAdminBarLoad();
150
}
151
152
+ // This is triggered AFTER "saveSettings" from 'Settings' class
153
+ // In case the settings were just updated, the script will get the latest values
154
+ add_action('plugins_loaded', array($this, 'initAfterPluginsLoaded'), 10);
155
156
// Front-end View - Unload the assets
157
+ // If there are reasons to prevent the unloading in case 'test mode' is enabled,
158
+ // then the prevention will trigger within filterStyles() and filterScripts()
159
160
+ if (! isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])) { // AJAX call? Do not trigger the code below
161
+ // Unload Styles - HEAD
162
+ add_action( 'wp_print_styles', array( $this, 'filterStyles' ), 100000 );
163
164
+ // Unload Scripts - HEAD
165
+ add_action( 'wp_print_scripts', array( $this, 'filterScripts' ), 100000 );
166
167
+ // Unload Scripts & Styles - FOOTER
168
+ // Needs to be triggered very soon as some old plugins/themes use wp_footer() to enqueue scripts
169
+ // Sometimes styles are loaded in the BODY section of the page
170
+ add_action( 'wp_print_footer_scripts', array( $this, 'filterScripts' ), 1 );
171
+ add_action( 'wp_print_footer_scripts', array( $this, 'filterStyles' ), 1 );
172
+ }
173
174
// [wpacu_lite]
175
if ( ! (defined('WPACU_PRO_HIDE_HTML_USAGE_COMMENT') && WPACU_PRO_HIDE_HTML_USAGE_COMMENT) ) {
178
// [/wpacu_lite]
179
}
180
181
+ /**
182
+ *
183
+ */
184
+ public function initAfterPluginsLoaded()
185
+ {
186
+ $wpacuSettingsClass = new Settings();
187
+ $this->settings = $wpacuSettingsClass->getAll();
188
+
189
+ if ($this->settings['dashboard_show'] && $this->settings['dom_get_type']) {
190
+ self::$domGetType = $this->settings['dom_get_type'];
191
+ }
192
+
193
+ // Fetch the page in the background to see what scripts/styles are already loading
194
+ if (isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY]) || $this->settings['frontend_show']) {
195
+ if (isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])) {
196
+ Misc::noAdminBarLoad();
197
+ }
198
+
199
+ add_action('wp_head', array($this, 'saveFooterAssets'), 100000000);
200
+ add_action('wp_footer', array($this, 'printScriptsStyles'), PHP_INT_MAX);
201
+ }
202
+
203
+ // Do not load the meta box nor do any AJAX calls
204
+ // if the asset management is not enabled for the Dashboard
205
+ if ( $this->settings['dashboard_show'] == 1 ) {
206
+ // Send an AJAX request to get the list of loaded scripts and styles and print it nicely
207
+ add_action(
208
+ 'wp_ajax_' . WPACU_PLUGIN_NAME . '_get_loaded_assets',
209
+ array( $this, 'ajaxGetJsonListCallback' )
210
+ );
211
+
212
+ add_action( 'add_meta_boxes', array( $this, 'addMetaBox' ) );
213
+ }
214
+
215
+ if ($this->settings['disable_emojis'] == 1) {
216
+ add_action('init', array($this, 'doDisableEmojis'));
217
+ }
218
+ }
219
+
220
/**
221
+ * This has to be triggered after 'plugins_loaded' (e.g. in 'wp')
222
+ *
223
* Priority: 8 (earliest)
224
*/
225
public function setVarsBeforeUpdate()
226
{
227
+ $this->isFrontendView = ($this->settings['frontend_show'] && Menu::userCanManageAssets()
228
&& !isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])
229
&& !is_admin());
230
293
{
294
global $post;
295
296
+ if ($post->ID === null) {
297
return;
298
}
299
372
}
373
}
374
}
375
// [wpacu_lite]
376
}
377
// [/wpacu_lite]
378
379
+ $list = apply_filters('wpacu_filter_scripts', array_unique($list));
380
381
// Let's see if there are load exceptions for this page
382
if (! empty($list) && ! empty($this->loadExceptions['scripts'])) {
418
return;
419
}
420
421
+ // e.g. for test mode or AJAX calls (where all assets have to load)
422
+ if ($this->preventUnloadAssets() === true) {
423
+ return;
424
+ }
425
+
426
foreach ($list as $handle) {
427
$handle = trim($handle);
428
495
}
496
}
497
}
498
// [wpacu_lite]
499
}
500
// [/wpacu_lite]
501
502
// Any bulk unloaded styles for 'category', 'post_tag' and more?
503
// If the premium extension is enabled, any of the unloaded CSS will be added to the list
504
+ $list = apply_filters('wpacu_filter_styles', array_unique($list));
505
506
// Let's see if there are load exceptions for this page
507
if (! empty($list) && ! empty($this->loadExceptions['styles'])) {
539
}
540
}
541
542
+ // e.g. for test mode or AJAX calls (where all assets have to load)
543
+ if ($this->preventUnloadAssets() === true) {
544
+ return;
545
+ }
546
+
547
if (empty($list)) {
548
return;
549
}
593
$exceptionsListJson = get_option(
594
WPACU_PLUGIN_NAME . '_front_page_load_exceptions'
595
);
596
+ } elseif ($type === 'for_pro' && Main::wpacuProEnabled()) {
597
// [wpacu_pro]
598
if (class_exists( '\\WpAssetCleanUpPro\\LoadExceptions' )) {
599
$ExceptionsPro = new \WpAssetCleanUpPro\LoadExceptions();
605
if ($exceptionsListJson) {
606
$exceptionsList = json_decode($exceptionsListJson, true);
607
608
+ if (json_last_error() !== JSON_ERROR_NONE) {
609
$exceptionsList = $exceptionsListDefault;
610
}
611
}
691
public function printScriptsStyles()
692
{
693
// Not for WordPress AJAX calls
694
+ if (self::$domGetType === 'direct' && defined('DOING_AJAX') && DOING_AJAX) {
695
return;
696
}
697
918
if ($isFrontEndView) {
919
$data = array(
920
'is_updateable' => true,
921
+ 'post_type' => '',
922
'bulk_unloaded' => array('post_type' => array())
923
);
924
928
$data['current'] = $currentUnloaded;
929
930
$data['all']['scripts'] = $list['scripts'];
931
+ $data['all']['styles'] = $list['styles'];
932
933
+ $this->fetchUrl = Misc::getPageUrl($this->getCurrentPostId());
934
935
+ $data['fetch_url'] = $this->fetchUrl;
936
937
+ $data['nonce_name'] = Update::NONCE_FIELD_NAME;
938
+ $data['nonce_action'] = Update::NONCE_ACTION_NAME;
939
940
$data = $this->alterAssetObj($data);
941
942
+ $data['global_unload'] = $this->globalUnloaded;
943
944
if (Misc::isHomePage()) {
945
$type = 'front_page';
959
}
960
// [/wpacu_lite]
961
962
+ // WooCommerce Shop Page?
963
+ $data['is_woo_shop_page'] = $this->vars['is_woo_shop_page'];
964
965
$data['is_bulk_unloadable'] = $data['bulk_unloaded_type'] = false;
966
1089
$data['all'] = (array)json_decode($json);
1090
1091
// This value is needed to determine the location of an asset (HEAD OR BODY)
1092
+ if ($contents !== '') {
1093
$data['contents'] = base64_decode($contents);
1094
}
1095
1331
*/
1332
public function isSingularPage()
1333
{
1334
+ return ($this->vars['is_woo_shop_page'] || is_singular());
1335
}
1336
1337
/**
1353
$this->currentPostId = $wooCommerceShopPageId;
1354
1355
if ($this->currentPostId > 0) {
1356
+ $this->vars['is_woo_shop_page'] = true;
1357
}
1358
} else {
1359
if ($wooCommerceShopPageId > 0 && Misc::isHomePage()) {
1480
*/
1481
public function doDisableEmojis()
1482
{
1483
+ if ($this->preventUnloadAssets()) {
1484
+ return;
1485
+ }
1486
+
1487
// Emojis Actions and Filters
1488
remove_action('admin_print_styles', 'print_emoji_styles');
1489
remove_action('wp_head', 'print_emoji_detection_script', 7);
1496
1497
// TinyMCE Emojis
1498
add_filter('tiny_mce_plugins', array($this, 'removeEmojisTinymce'));
1499
+
1500
+ add_filter('emoji_svg_url', '__return_false');
1501
}
1502
1503
/**
1540
} else {
1541
$existingList = json_decode($existingListJson, true);
1542
1543
+ if (json_last_error() !== JSON_ERROR_NONE) {
1544
$validJson = false;
1545
$existingList = $existingListEmpty;
1546
}
1553
);
1554
}
1555
1556
+ /**
1557
+ * Situations when the assets will not be prevented from loading
1558
+ * e.g. test mode and a visitor accessing the page, an AJAX request from the Dashboard to print all the assets
1559
+ * @return bool
1560
+ */
1561
+ public function preventUnloadAssets()
1562
+ {
1563
+ // This request specifically asks for all the assets to be loaded in order to print them in the assets management list
1564
+ // This is for the AJAX requests within the Dashboard, thus the admin needs to see all the assets,
1565
+ // including ones marked for unload, in case he/she decides to change their rules
1566
+ if (isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])) {
1567
+ return true;
1568
+ }
1569
+
1570
+ // Is test mode enabled? Unload assets ONLY for the admin
1571
+ if (isset($this->settings['test_mode']) && $this->settings['test_mode'] && ! Menu::userCanManageAssets()) {
1572
+ return true; // visitors (non-logged in) will view the pages with all the assets loaded
1573
+ }
1574
+
1575
+ return false;
1576
+ }
1577
+
1578
// [wpacu_pro]
1579
/**
1580
* @return bool
classes/Misc.php CHANGED
@@ -259,4 +259,28 @@ class Misc
259
{
260
return in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')));
261
}
262
}
259
{
260
return in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')));
261
}
262
+
263
+ /**
264
+ * @param $requestMethod
265
+ * @param $key
266
+ * @param mixed $defaultValue
267
+ *
268
+ * @return mixed
269
+ */
270
+ public static function getVar($requestMethod, $key, $defaultValue = '')
271
+ {
272
+ if ($requestMethod === 'get' && $key && isset($_GET[$key])) {
273
+ return $_GET[$key];
274
+ }
275
+
276
+ if ($requestMethod === 'post' && $key && isset($_POST[$key])) {
277
+ return $_POST[$key];
278
+ }
279
+
280
+ if ($requestMethod === 'request' && $key && isset($_REQUEST[$key])) {
281
+ return $_REQUEST[$key];
282
+ }
283
+
284
+ return $defaultValue;
285
+ }
286
}
classes/OwnAssets.php CHANGED
@@ -26,9 +26,29 @@ class OwnAssets
26
public function init()
27
{
28
add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
29
30
- if (Main::instance()->frontendShow && (! isset($_POST[WPACU_LOAD_ASSETS_REQ_KEY]))) {
31
- add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
32
}
33
}
34
@@ -43,8 +63,8 @@ class OwnAssets
43
return;
44
}
45
46
- $page = (isset($_GET['page'])) ? $_GET['page'] : '';
47
- $getPostId = (isset($_GET['post'])) ? (int)$_GET['post'] : '';
48
49
// Only load the plugin's assets when they are needed
50
// This an example of assets that are correctly loaded in WordPress
@@ -72,16 +92,27 @@ class OwnAssets
72
$this->enqueueAdminScripts();
73
}
74
75
-
76
/**
77
*
78
*/
79
public function stylesAndScriptsForPublic()
80
{
81
if (! Menu::userCanManageAssets()) {
82
return;
83
}
84
85
$this->enqueuePublicStyles();
86
$this->enqueuePublicScripts();
87
}
@@ -102,21 +133,17 @@ class OwnAssets
102
{
103
global $post, $pagenow;
104
105
- $page = (isset($_GET['page'])) ? $_GET['page'] : '';
106
107
- $getPostId = (isset($_GET['post'])
108
- && isset($_GET['action'])
109
- && $_GET['action'] === 'edit'
110
- && $pagenow == 'post.php')
111
- ? (int)$_GET['post'] : '';
112
113
- $postId = (isset($post->ID)) ? $post->ID : 0;
114
115
if ($getPostId > 0 && $getPostId != $postId) {
116
$postId = $getPostId;
117
}
118
119
- if ($page == WPACU_PLUGIN_NAME.'_home_page' || $postId < 1) {
120
$postId = 0; // for home page
121
}
122
@@ -130,7 +157,7 @@ class OwnAssets
130
}
131
132
// Only for Published Posts
133
- if ($postStatus != 'publish') {
134
return;
135
}
136
}
@@ -236,24 +263,6 @@ HTML;
236
return $assetVer;
237
}
238
239
- /**
240
- *
241
- */
242
- public function codeablePostProject()
243
- {
244
- ?>
245
- <script>
246
- (function(c,o,d,e,a,b,l){c['CodeableObject']=a;c[a]=c[a]||function(){
247
- (c[a].q=c[a].q||[]).push(arguments)},c[a].l=1*new Date();b=o.createElement(d),
248
- l=o.getElementsByTagName(d)[0];b.async=1;b.src=e;l.parentNode.insertBefore(b,l)
249
- })(window,document,'script','https://referoo.co/assets/form.js','cdbl');
250
-
251
- cdbl('shortcode', '0JTXB');
252
- cdbl('render', 'wpacu-get-quote');
253
- </script>
254
- <?php
255
- }
256
-
257
/**
258
* @return bool
259
*/
@@ -261,7 +270,7 @@ HTML;
261
{
262
if ((!$this->isTaxonomyEditPage)
263
&& Main::instance()->wpacuProEnabled()
264
- && class_exists( '\\WpAssetCleanUpPro\\MainPro' )) {
265
$mainPro = new \WpAssetCleanUpPro\MainPro();
266
$this->isTaxonomyEditPage = $mainPro->isTaxonomyEditPage();
267
}
26
public function init()
27
{
28
add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
29
+ add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
30
31
+ add_action('admin_head', array($this, 'inlineCode'));
32
+ add_action('wp_head', array($this, 'inlineCode'));
33
+ }
34
+
35
+ /**
36
+ *
37
+ */
38
+ public function inlineCode()
39
+ {
40
+ if (is_admin_bar_showing()) {
41
+ ?>
42
+ <style type="text/css">
43
+ #wp-admin-bar-wpacu-test-mode span.dashicons { width: 15px; height: 15px; font-family: 'Dashicons', Arial, "Times New Roman", "Bitstream Charter", Times, serif; }
44
+ #wp-admin-bar-wpacu-test-mode > a:first-child strong { font-weight: bolder; color: #76f203; }
45
+ #wp-admin-bar-wpacu-test-mode > a:first-child:hover { color: #00b9eb; }
46
+ #wp-admin-bar-wpacu-test-mode > a:first-child:hover strong { color: #00b9eb; }
47
+
48
+ /* Add some spacing below the last text */
49
+ #wp-admin-bar-wpacu-test-mode-info-2 { padding-bottom: 8px !important; }
50
+ </style>
51
+ <?php
52
}
53
}
54
63
return;
64
}
65
66
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
67
+ $getPostId = isset($_GET['post']) ? (int)$_GET['post'] : '';
68
69
// Only load the plugin's assets when they are needed
70
// This an example of assets that are correctly loaded in WordPress
92
$this->enqueueAdminScripts();
93
}
94
95
/**
96
*
97
*/
98
public function stylesAndScriptsForPublic()
99
{
100
+ // Do not print it when an AJAX call is made from the Dashboard
101
+ if (isset($_POST[WPACU_LOAD_ASSETS_REQ_KEY])) {
102
+ return;
103
+ }
104
+
105
+ // Only for the administrator with the right permission
106
if (! Menu::userCanManageAssets()) {
107
return;
108
}
109
110
+ // Is the Admin Bar not showing and "Manage in the Front-end" option is not enabled in the plugin's "Settings"?
111
+ // In this case, there's no point in loading the assets below
112
+ if (! is_admin_bar_showing() && ! Main::instance()->settings['frontend_show']) {
113
+ return;
114
+ }
115
+
116
$this->enqueuePublicStyles();
117
$this->enqueuePublicScripts();
118
}
133
{
134
global $post, $pagenow;
135
136
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
137
138
+ $getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
139
140
+ $postId = isset($post->ID) ? $post->ID : 0;
141
142
if ($getPostId > 0 && $getPostId != $postId) {
143
$postId = $getPostId;
144
}
145
146
+ if ($page === WPACU_PLUGIN_NAME.'_home_page' || $postId < 1) {
147
$postId = 0; // for home page
148
}
149
157
}
158
159
// Only for Published Posts
160
+ if ($postStatus !== 'publish') {
161
return;
162
}
163
}
263
return $assetVer;
264
}
265
266
/**
267
* @return bool
268
*/
270
{
271
if ((!$this->isTaxonomyEditPage)
272
&& Main::instance()->wpacuProEnabled()
273
+ && class_exists('\\WpAssetCleanUpPro\\MainPro')) {
274
$mainPro = new \WpAssetCleanUpPro\MainPro();
275
$this->isTaxonomyEditPage = $mainPro->isTaxonomyEditPage();
276
}
classes/Plugin.php CHANGED
@@ -69,7 +69,7 @@ class Plugin
69
{
70
if (isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_NAME) !== false) {
71
$reviewUrl = 'https://wordpress.org/support/plugin/wp-asset-clean-up/reviews/?filter=5#new-post';
72
- $text = 'Thank you for using Asset CleanUp v'.WPACU_PLUGIN_VERSION.') <span class="dashicons dashicons-smiley"></span> &nbsp;&nbsp; If you like it, please <a target="_blank" href="'.$reviewUrl.'"><strong>rate</strong> Asset CleanUp</a> <a target="_blank" href="'.$reviewUrl.'"><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span></a> on WordPress.org to help me spread the word to the community.';
73
}
74
75
return $text;
69
{
70
if (isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_NAME) !== false) {
71
$reviewUrl = 'https://wordpress.org/support/plugin/wp-asset-clean-up/reviews/?filter=5#new-post';
72
+ $text = 'Thank you for using '.WPACU_PLUGIN_TITLE.' v'.WPACU_PLUGIN_VERSION.') <span class="dashicons dashicons-smiley"></span> &nbsp;&nbsp; If you like it, please <a target="_blank" href="'.$reviewUrl.'"><strong>rate</strong> '.WPACU_PLUGIN_TITLE.'</a> <a target="_blank" href="'.$reviewUrl.'"><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span><span class="dashicons dashicons-wpacu dashicons-star-filled"></span></a> on WordPress.org to help me spread the word to the community.';
73
}
74
75
return $text;
classes/Settings.php CHANGED
@@ -12,9 +12,12 @@ class Settings
12
*/
13
public $settingsKeys = array(
14
// Stored in 'wpassetcleanup_settings'
15
'frontend_show',
16
- 'dashboard_show',
17
- 'dom_get_type',
18
'disable_emojis',
19
20
// Stored in 'wpassetcleanup_global_unload' option
@@ -39,7 +42,8 @@ class Settings
39
*/
40
public function init()
41
{
42
- add_action('admin_init', array($this, 'saveSettings'), 1);
43
44
if (array_key_exists('page', $_GET) && $_GET['page'] === 'wpassetcleanup_settings') {
45
add_action('admin_notices', array($this, 'notices'));
@@ -78,8 +82,7 @@ class Settings
78
public function saveSettings()
79
{
80
if (! empty($_POST) && array_key_exists('wpacu_settings_page', $_POST)) {
81
- $data = isset($_POST[WPACU_PLUGIN_NAME.'_settings']) ? $_POST[WPACU_PLUGIN_NAME.'_settings'] : array();
82
-
83
$this->update($data);
84
}
85
}
12
*/
13
public $settingsKeys = array(
14
// Stored in 'wpassetcleanup_settings'
15
+ 'dashboard_show',
16
+ 'dom_get_type',
17
'frontend_show',
18
+
19
+ 'test_mode',
20
+
21
'disable_emojis',
22
23
// Stored in 'wpassetcleanup_global_unload' option
42
*/
43
public function init()
44
{
45
+ // This is triggered BEFORE "initAfterPluginsLoaded" from 'Main' class
46
+ add_action('plugins_loaded', array($this, 'saveSettings'), 9);
47
48
if (array_key_exists('page', $_GET) && $_GET['page'] === 'wpassetcleanup_settings') {
49
add_action('admin_notices', array($this, 'notices'));
82
public function saveSettings()
83
{
84
if (! empty($_POST) && array_key_exists('wpacu_settings_page', $_POST)) {
85
+ $data = Misc::getVar('post', WPACU_PLUGIN_NAME . '_settings', array());
86
$this->update($data);
87
}
88
}
classes/Update.php CHANGED
@@ -26,17 +26,25 @@ class Update
26
*/
27
public function init()
28
{
29
- // Triggers on front-end view
30
- if (Main::instance()->frontendShow && (! is_admin())) {
31
- add_action('wp', array($this, 'frontendUpdate'), 9);
32
- add_action('template_redirect', array($this, 'redirectAfterFrontEndUpdate'));
33
- }
34
35
// After post/page is saved - update your styles/scripts lists
36
// This triggers ONLY in the Dashboard after "Update" button is clicked (on Edit mode)
37
add_action('save_post', array($this, 'savePost'));
38
}
39
40
/**
41
* TODO: Remove priority later on as it's not needed anymore because there is a redirect after form submit
42
* Priority: 9 (AFTER current post ID is correctly retrieved and BEFORE the data from the database is fetched)
@@ -54,10 +62,9 @@ class Update
54
$nonceName = self::NONCE_FIELD_NAME;
55
$nonceAction = self::NONCE_ACTION_NAME;
56
57
- $updateAction = isset($_POST['wpacu_update_asset_frontend']) ?
58
- $_POST['wpacu_update_asset_frontend'] : '';
59
60
- if (! isset($_POST[$nonceName]) || $updateAction != 1 || ! Main::instance()->frontendShow) {
61
return;
62
}
63
@@ -237,7 +244,7 @@ class Update
237
*/
238
public function saveLoadExceptions($type = 'post', $postId = '')
239
{
240
- if ($type == 'post' && !$postId) {
241
// $postId needs to have a value if $type is a 'post' type
242
return;
243
}
@@ -249,11 +256,11 @@ class Update
249
$loadExceptionsStyles = $loadExceptionsScripts = array();
250
251
// Clear existing list first
252
- if ($type == 'post') {
253
delete_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions');
254
- } elseif ($type == 'front_page') {
255
delete_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions');
256
- } /* [wpacu_pro] */ elseif ($type == 'for_pro') {
257
// Clear existing list for pages like: taxonomy, 404, search, date etc.
258
do_action( 'wpacu_pro_clear_load_exceptions' );
259
} /* [/wpacu_pro] */
@@ -267,7 +274,7 @@ class Update
267
foreach ($_POST['wpacu_styles_load_it'] as $wpacuHandle) {
268
// Do not append it if the global unload is removed
269
if (isset($_POST['wpacu_options_styles'][$wpacuHandle])
270
- && $_POST['wpacu_options_styles'][$wpacuHandle] == 'remove') {
271
continue;
272
}
273
$loadExceptionsStyles[] = $wpacuHandle;
@@ -278,7 +285,7 @@ class Update
278
foreach ($_POST['wpacu_scripts_load_it'] as $wpacuHandle) {
279
// Do not append it if the global unload is removed
280
if (isset($_POST['wpacu_options_scripts'][$wpacuHandle])
281
- && $_POST['wpacu_options_scripts'][$wpacuHandle] == 'remove') {
282
continue;
283
}
284
$loadExceptionsScripts[] = $wpacuHandle;
@@ -312,13 +319,13 @@ class Update
312
313
$jsonLoadExceptions = json_encode($list);
314
315
- if ($type == 'post') {
316
if (! add_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions, true)) {
317
update_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions);
318
}
319
- } elseif ($type == 'front_page') {
320
update_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions', $jsonLoadExceptions);
321
- } /* [wpacu_pro] */ elseif ($type == 'for_pro') {
322
// Update any load extensions for pages like: taxonomy, 404, search, date etc.
323
do_action( 'wpacu_pro_update_load_exceptions', $jsonLoadExceptions );
324
} /* [/wpacu_pro] */
@@ -394,8 +401,8 @@ class Update
394
public function removeEverywhereUnloads($stylesList = array(), $scriptsList = array(), $checkType = '')
395
{
396
if ($checkType === 'post') {
397
- $stylesList = isset($_POST['wpacu_options_styles']) ? $_POST['wpacu_options_styles'] : array();
398
- $scriptsList = isset($_POST['wpacu_options_scripts']) ? $_POST['wpacu_options_scripts'] : array();
399
}
400
401
$removeStylesList = $removeScriptsList = array();
@@ -404,7 +411,7 @@ class Update
404
405
if (! empty($stylesList)) {
406
foreach ($stylesList as $handle => $action) {
407
- if ($action == 'remove') {
408
$removeStylesList[] = $handle;
409
}
410
}
@@ -412,7 +419,7 @@ class Update
412
413
if (! empty($scriptsList)) {
414
foreach ($scriptsList as $handle => $action) {
415
- if ($action == 'remove') {
416
$removeScriptsList[] = $handle;
417
}
418
}
@@ -426,7 +433,7 @@ class Update
426
427
$existingList = json_decode($existingListJson, true);
428
429
- if (json_last_error() == JSON_ERROR_NONE) {
430
foreach (array('styles', 'scripts') as $assetType) {
431
if ($assetType === 'styles') {
432
$list = $removeStylesList;
@@ -525,7 +532,7 @@ class Update
525
526
/**
527
* Lite Version: For post, pages, custom post types
528
- * @param string $postType
529
* @return bool
530
*/
531
public function removeBulkUnloads($postType = '')
@@ -543,11 +550,8 @@ class Update
543
544
$bulkType = 'post_type';
545
546
- $stylesList = isset($_POST['wpacu_options_'.$bulkType.'_styles'])
547
- ? $_POST['wpacu_options_'.$bulkType.'_styles'] : array();
548
-
549
- $scriptsList = isset($_POST['wpacu_options_'.$bulkType.'_scripts'])
550
- ? $_POST['wpacu_options_'.$bulkType.'_scripts'] : array();
551
552
if (empty($stylesList) && empty($scriptsList)) {
553
return false;
@@ -581,7 +585,7 @@ class Update
581
582
$existingList = json_decode($existingListJson, true);
583
584
- if (json_last_error() == JSON_ERROR_NONE) {
585
$list = array();
586
587
foreach (array('styles', 'scripts') as $assetType) {
26
*/
27
public function init()
28
{
29
+ // Triggers on front-end view
30
+ add_action('plugins_loaded', array($this, 'initAfterPluginsLoaded'), 11);
31
32
// After post/page is saved - update your styles/scripts lists
33
// This triggers ONLY in the Dashboard after "Update" button is clicked (on Edit mode)
34
add_action('save_post', array($this, 'savePost'));
35
}
36
37
+ /**
38
+ *
39
+ */
40
+ public function initAfterPluginsLoaded()
41
+ {
42
+ if (! is_admin() && Main::instance()->settings['frontend_show']) {
43
+ add_action( 'wp', array( $this, 'frontendUpdate' ), 9 );
44
+ add_action( 'template_redirect', array( $this, 'redirectAfterFrontEndUpdate' ) );
45
+ }
46
+ }
47
+
48
/**
49
* TODO: Remove priority later on as it's not needed anymore because there is a redirect after form submit
50
* Priority: 9 (AFTER current post ID is correctly retrieved and BEFORE the data from the database is fetched)
62
$nonceName = self::NONCE_FIELD_NAME;
63
$nonceAction = self::NONCE_ACTION_NAME;
64
65
+ $updateAction = Misc::getVar('post', 'wpacu_update_asset_frontend');
66
67
+ if (! isset($_POST[$nonceName]) || $updateAction != 1 || ! Main::instance()->settings['frontend_show']) {
68
return;
69
}
70
244
*/
245
public function saveLoadExceptions($type = 'post', $postId = '')
246
{
247
+ if ($type === 'post' && !$postId) {
248
// $postId needs to have a value if $type is a 'post' type
249
return;
250
}
256
$loadExceptionsStyles = $loadExceptionsScripts = array();
257
258
// Clear existing list first
259
+ if ($type === 'post') {
260
delete_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions');
261
+ } elseif ($type === 'front_page') {
262
delete_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions');
263
+ } /* [wpacu_pro] */ elseif ($type === 'for_pro') {
264
// Clear existing list for pages like: taxonomy, 404, search, date etc.
265
do_action( 'wpacu_pro_clear_load_exceptions' );
266
} /* [/wpacu_pro] */
274
foreach ($_POST['wpacu_styles_load_it'] as $wpacuHandle) {
275
// Do not append it if the global unload is removed
276
if (isset($_POST['wpacu_options_styles'][$wpacuHandle])
277
+ && $_POST['wpacu_options_styles'][$wpacuHandle] === 'remove') {
278
continue;
279
}
280
$loadExceptionsStyles[] = $wpacuHandle;
285
foreach ($_POST['wpacu_scripts_load_it'] as $wpacuHandle) {
286
// Do not append it if the global unload is removed
287
if (isset($_POST['wpacu_options_scripts'][$wpacuHandle])
288
+ && $_POST['wpacu_options_scripts'][$wpacuHandle] === 'remove') {
289
continue;
290
}
291
$loadExceptionsScripts[] = $wpacuHandle;
319
320
$jsonLoadExceptions = json_encode($list);
321
322
+ if ($type === 'post') {
323
if (! add_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions, true)) {
324
update_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions);
325
}
326
+ } elseif ($type === 'front_page') {
327
update_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions', $jsonLoadExceptions);
328
+ } /* [wpacu_pro] */ elseif ($type === 'for_pro') {
329
// Update any load extensions for pages like: taxonomy, 404, search, date etc.
330
do_action( 'wpacu_pro_update_load_exceptions', $jsonLoadExceptions );
331
} /* [/wpacu_pro] */
401
public function removeEverywhereUnloads($stylesList = array(), $scriptsList = array(), $checkType = '')
402
{
403
if ($checkType === 'post') {
404
+ $stylesList = Misc::getVar('post', 'wpacu_options_styles', array());
405
+ $scriptsList = Misc::getVar('post', 'wpacu_options_scripts', array());
406
}
407
408
$removeStylesList = $removeScriptsList = array();
411
412
if (! empty($stylesList)) {
413
foreach ($stylesList as $handle => $action) {
414
+ if ($action === 'remove') {
415
$removeStylesList[] = $handle;
416
}
417
}
419
420
if (! empty($scriptsList)) {
421
foreach ($scriptsList as $handle => $action) {
422
+ if ($action === 'remove') {
423
$removeScriptsList[] = $handle;
424
}
425
}
433
434
$existingList = json_decode($existingListJson, true);
435
436
+ if (json_last_error() === JSON_ERROR_NONE) {
437
foreach (array('styles', 'scripts') as $assetType) {
438
if ($assetType === 'styles') {
439
$list = $removeStylesList;
532
533
/**
534
* Lite Version: For post, pages, custom post types
535
+ * @param mixed $postType
536
* @return bool
537
*/
538
public function removeBulkUnloads($postType = '')
550
551
$bulkType = 'post_type';
552
553
+ $stylesList = Misc::getVar('post', 'wpacu_options_' . $bulkType . '_styles', array());
554
+ $scriptsList = Misc::getVar('post', 'wpacu_options_' . $bulkType . '_scripts', array());
555
556
if (empty($stylesList) && empty($scriptsList)) {
557
return false;
585
586
$existingList = json_decode($existingListJson, true);
587
588
+ if (json_last_error() === JSON_ERROR_NONE) {
589
$list = array();
590
591
foreach (array('styles', 'scripts') as $assetType) {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: speed, pagespeed, page speed, cleanup, remove style, remove script, dequeu
4
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7GJZCW6RD8ECS
5
Requires at least: 4.0
6
Tested up to: 4.9.8
7
- Stable tag: 1.2.8
8
License: GPLv3
9
License URI: http://www.gnu.org/licenses/gpl.html
10
@@ -131,6 +131,11 @@ If that's the case, then it's advisable to consult with a developer (ideally the
131
4. Scripts (.JS) are selected for site-wide unload
132
133
== Changelog ==
134
= 1.2.8 =
135
* Bug Fix: PHP code change to properly detect the singular pages had the wrong condition set
136
4
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7GJZCW6RD8ECS
5
Requires at least: 4.0
6
Tested up to: 4.9.8
7
+ Stable tag: 1.2.8.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.8.1 =
135
+ * Added "Test Mode" option which will unload assets only if the user is logged in as administrator and has capability of activating plugins.
136
+ * This is good for debugging in case one might worry that a CSS/JavaScript file could be unloaded by mistake and break the website for the regular (non-logged in) users.
137
+ * Once the page loads fine and all looks good, the "Test Mode" can be disabled so the visitors will load the lighter version of the page.
138
+
139
= 1.2.8 =
140
* Bug Fix: PHP code change to properly detect the singular pages had the wrong condition set
141
templates/_top-area.php CHANGED
@@ -61,7 +61,7 @@ $wpacu_current_page = str_replace(array('asset-cleanup_page_', 'toplevel_page_')
61
<nav>
62
<ul>
63
<?php foreach ($wpacu_top_area_links as $wpacu_link => $wpacu_info) { ?>
64
- <li <?php if ($wpacu_current_page == $wpacu_info['page']) { echo 'class="wpacu-tab-current"'; } ?>>
65
<a <?php if (isset($wpacu_info['target']) && $wpacu_info['target'] === '_blank') { ?>target="_blank"<?php } ?> href="<?php echo $wpacu_link; ?>"><?php echo $wpacu_info['icon']; ?> <span><?php echo $wpacu_info['title']; ?></span></a>
66
</li>
67
<?php } ?>
61
<nav>
62
<ul>
63
<?php foreach ($wpacu_top_area_links as $wpacu_link => $wpacu_info) { ?>
64
+ <li <?php if ($wpacu_current_page === $wpacu_info['page']) { echo 'class="wpacu-tab-current"'; } ?>>
65
<a <?php if (isset($wpacu_info['target']) && $wpacu_info['target'] === '_blank') { ?>target="_blank"<?php } ?> href="<?php echo $wpacu_link; ?>"><?php echo $wpacu_info['icon']; ?> <span><?php echo $wpacu_info['title']; ?></span></a>
66
</li>
67
<?php } ?>
templates/admin-page-get-help.php CHANGED
@@ -8,19 +8,19 @@ if (! isset($data)) {
8
9
include_once '_top-area.php';
10
?>
11
- <div class="wrap wpacu-get-help-wrap">
12
- <h1>Asset CleanUp</h1>
13
<div class="help-content-wrap">
14
<div class="help-content upgrade-help">
15
<h2 class="content-title"><?php _e('I have purchased the Pro version. How to do the upgrade?', WPACU_PLUGIN_NAME); ?></h2>
16
<ul>
17
<li><strong>1)</strong> Go to "Plugins" -&gt; "Installed Plugins", <strong>deactivate</strong> and then <strong>delete</strong> "Asset CleanUp: Page Speed Booster" (<em>no worries, any settings applied would be preserved</em>)
18
- <div style="width: 100%; margin: 0 auto;">
19
- <div class="wpacu-image-area wpacu-deactivate" style="float: left; width: 48%;">
20
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-deactivate.jpg" alt="" />
21
</div>
22
23
- <div class="wpacu-image-area wpacu-delete" style="float: right; width: 48%;">
24
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-delete.jpg" alt="" />
25
</div>
26
<div class="clear"></div>
@@ -34,8 +34,8 @@ include_once '_top-area.php';
34
<hr />
35
</li>
36
<li><strong>3)</strong> Finally, <strong>activate</strong> Asset CleanUp Pro! That's it <span class="dashicons dashicons-smiley"></span>
37
- <div class="wpacu-image-area">
38
- <img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-3-activate-plugin.jpg" style="max-width: 280px;" alt="" />
39
</div>
40
</li>
41
</ul>
@@ -46,8 +46,8 @@ include_once '_top-area.php';
46
<div class="help-content tech-help second">
47
<h2 class="content-title"><?php _e('I am stuck and need assistance, can I get help?', WPACU_PLUGIN_NAME); ?></h2>
48
49
- <p>If you believe the plugin has a bug (e.g. you're getting JavaScript or PHP errors generated by Asset CleanUp or the selected scripts are not unloading etc.) that needs to be fixed, then <a href="https://wordpress.org/support/plugin/wp-asset-clean-up">please report it by opening a support ticket</a>.</p>
50
- <p>Note that the support forum from WordPress.org is only for reporting bugs about Asset CleanUp (lite version) and it's not for custom work request.</p>
51
52
<p>In case you need professional help in one of the following scenarios and you don't have a developer available to provide what you need, then me or any of my colleagues from <a href="https://app.codeable.io/tasks/new?ref=d3TOr">Codeable</a>, would be able to assist you:</p>
53
8
9
include_once '_top-area.php';
10
?>
11
+ <div class="wpacu-wrap wpacu-get-help-wrap">
12
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
13
<div class="help-content-wrap">
14
<div class="help-content upgrade-help">
15
<h2 class="content-title"><?php _e('I have purchased the Pro version. How to do the upgrade?', WPACU_PLUGIN_NAME); ?></h2>
16
<ul>
17
<li><strong>1)</strong> Go to "Plugins" -&gt; "Installed Plugins", <strong>deactivate</strong> and then <strong>delete</strong> "Asset CleanUp: Page Speed Booster" (<em>no worries, any settings applied would be preserved</em>)
18
+ <div class="cols-wrap">
19
+ <div class="wpacu-image-area wpacu-deactivate col-left">
20
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-deactivate.jpg" alt="" />
21
</div>
22
23
+ <div class="wpacu-image-area wpacu-delete col-right">
24
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-delete.jpg" alt="" />
25
</div>
26
<div class="clear"></div>
34
<hr />
35
</li>
36
<li><strong>3)</strong> Finally, <strong>activate</strong> Asset CleanUp Pro! That's it <span class="dashicons dashicons-smiley"></span>
37
+ <div class="wpacu-image-area activate-plugin">
38
+ <img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-3-activate-plugin.jpg" alt="" />
39
</div>
40
</li>
41
</ul>
46
<div class="help-content tech-help second">
47
<h2 class="content-title"><?php _e('I am stuck and need assistance, can I get help?', WPACU_PLUGIN_NAME); ?></h2>
48
49
+ <p>If you believe the plugin has a bug (e.g. you're getting JavaScript or PHP errors generated by <?php echo WPACU_PLUGIN_TITLE; ?> or the selected scripts are not unloading etc.) that needs to be fixed, then <a href="https://wordpress.org/support/plugin/wp-asset-clean-up">please report it by opening a support ticket</a>.</p>
50
+ <p>Note that the support forum from WordPress.org is only for reporting bugs about <?php echo WPACU_PLUGIN_TITLE; ?> (lite version) and it's not for custom work request.</p>
51
52
<p>In case you need professional help in one of the following scenarios and you don't have a developer available to provide what you need, then me or any of my colleagues from <a href="https://app.codeable.io/tasks/new?ref=d3TOr">Codeable</a>, would be able to assist you:</p>
53
templates/admin-page-license.php CHANGED
@@ -8,12 +8,12 @@ if (! isset($data)) {
8
9
include_once '_top-area.php';
10
?>
11
- <div class="wrap">
12
- <h1>Asset CleanUp</h1>
13
- <p>You're using the lite version of Asset CleanUp (v<?php echo WPACU_PLUGIN_VERSION; ?>), so no license key is needed. You'll receive automatic notifications whenever a new version is available for download.</p>
14
<p><em>To unlock all features and get premium support, you can <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_license">upgrade to the Pro version</a>.</em></p>
15
16
- <div style="background: white; padding: 0 15px; border: 1px solid #cdcdcd; border-radius: 10px;">
17
<p><span class="dashicons dashicons-info"></span> If you already purchased the Pro version and you don't know how to activate it, <a href="admin.php?page=wpassetcleanup_get_help">follow the steps from the "Help" section</a>.</p>
18
<div class="clear"></div>
19
</div>
8
9
include_once '_top-area.php';
10
?>
11
+ <div class="wpacu-wrap">
12
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
13
+ <p>You're using the lite version of <?php echo WPACU_PLUGIN_TITLE; ?> (v<?php echo WPACU_PLUGIN_VERSION; ?>), so no license key is needed. You'll receive automatic notifications whenever a new version is available for download.</p>
14
<p><em>To unlock all features and get premium support, you can <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_license">upgrade to the Pro version</a>.</em></p>
15
16
+ <div class="wrap-upgrade-info">
17
<p><span class="dashicons dashicons-info"></span> If you already purchased the Pro version and you don't know how to activate it, <a href="admin.php?page=wpassetcleanup_get_help">follow the steps from the "Help" section</a>.</p>
18
<div class="clear"></div>
19
</div>
templates/admin-page-pages-info.php CHANGED
@@ -12,8 +12,8 @@ include_once '_top-area.php';
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 class="wrap">
16
- <h1>Asset CleanUp</h1>
17
18
<!-- [wpacu_lite] -->
19
<p>* <em>Unloading assets (CSS &amp; 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>
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 class="wpacu-wrap">
16
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
17
18
<!-- [wpacu_lite] -->
19
<p>* <em>Unloading assets (CSS &amp; 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>
templates/admin-page-settings-bulk-unloads.php CHANGED
@@ -13,8 +13,8 @@ $availableForPro = '<span class="tooltip">Available for Pro users<br />Click to
13
// [/wpacu_lite]
14
?>
15
16
- <div class="wrap">
17
- <h1>Asset CleanUp</h1>
18
<h2><?php _e('Bulk Unloaded', WPACU_PLUGIN_NAME); ?></h2>
19
20
<p>If you have used rules such as <em>"Unload everywhere"</em> or <em>"Unload on All Pages of <strong>post</strong> post type"</em> etc., then the assets will be shown here. Although, you can manage them when editing a page, post etc., this page will make things easier by seeing all the bulk unloads:</p>
@@ -33,6 +33,8 @@ $availableForPro = '<span class="tooltip">Available for Pro users<br />Click to
33
<div class="clear"></div>
34
35
<?php
36
if ($data['for'] === 'post_types') {
37
?>
38
<div style="margin: 15px 0;">
13
// [/wpacu_lite]
14
?>
15
16
+ <div class="wpacu-wrap">
17
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
18
<h2><?php _e('Bulk Unloaded', WPACU_PLUGIN_NAME); ?></h2>
19
20
<p>If you have used rules such as <em>"Unload everywhere"</em> or <em>"Unload on All Pages of <strong>post</strong> post type"</em> etc., then the assets will be shown here. Although, you can manage them when editing a page, post etc., this page will make things easier by seeing all the bulk unloads:</p>
33
<div class="clear"></div>
34
35
<?php
36
+ do_action('wpacu_admin_notices');
37
+
38
if ($data['for'] === 'post_types') {
39
?>
40
<div style="margin: 15px 0;">
templates/admin-page-settings-homepage.php CHANGED
@@ -8,8 +8,8 @@ if (! isset($data)) {
8
9
include_once '_top-area.php';
10
?>
11
- <div class="wrap">
12
- <h1>Asset CleanUp</h1>
13
<h2><?php _e('Home Page Scripts &amp; Styles Management', WPACU_PLUGIN_NAME); ?></h2>
14
15
<?php
8
9
include_once '_top-area.php';
10
?>
11
+ <div class="wpacu-wrap">
12
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
13
<h2><?php _e('Home Page Scripts &amp; Styles Management', WPACU_PLUGIN_NAME); ?></h2>
14
15
<?php
templates/admin-page-settings-plugin.php CHANGED
@@ -12,8 +12,8 @@ include_once '_top-area.php';
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 />Click to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> &nbsp; ';
13
// [/wpacu_lite]
14
?>
15
- <div class="wrap">
16
- <h1>Asset CleanUp</h1>
17
18
<form method="post" action="">
19
<input type="hidden" name="wpacu_settings_page" value="1" />
@@ -26,8 +26,9 @@ $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_setti
26
</th>
27
<td>
28
<label class="wpacu_switch">
29
- <input id="wpacu_dashboard" type="checkbox"
30
- <?php echo (($data['dashboard_show'] == 1) ? 'checked="checked"' : ''); ?>
31
name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[dashboard_show]"
32
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
33
&nbsp;
@@ -60,14 +61,32 @@ $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_setti
60
<label class="wpacu_switch">
61
<input id="wpacu_frontend"
62
type="checkbox"
63
- <?php echo (($data['frontend_show'] == 1) ? 'checked="checked"' : ''); ?>
64
name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[frontend_show]"
65
- value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
66
&nbsp;
67
<small>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).</small>
68
<p><small>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>&lt;/body&gt;</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.</small></p>
69
</td>
70
</tr>
71
</table>
72
73
<hr />
@@ -81,10 +100,11 @@ $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_setti
81
</th>
82
<td>
83
<label class="wpacu_switch">
84
- <input id="wpacu_disable_emojis" type="checkbox"
85
- <?php echo (($data['disable_emojis'] == 1) ? 'checked="checked"' : ''); ?>
86
- name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[disable_emojis]"
87
- value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
88
&nbsp;
89
<small>This will unload WordPress' Emojis (the smiley icons)</small>
90
<p><small>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.</small></p>
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 />Click to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> &nbsp; ';
13
// [/wpacu_lite]
14
?>
15
+ <div class="wpacu-wrap">
16
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
17
18
<form method="post" action="">
19
<input type="hidden" name="wpacu_settings_page" value="1" />
26
</th>
27
<td>
28
<label class="wpacu_switch">
29
+ <input id="wpacu_dashboard"
30
+ type="checkbox"
31
+ <?php echo (($data['dashboard_show'] == 1) ? 'checked="checked"' : ''); ?>
32
name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[dashboard_show]"
33
value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
34
&nbsp;
61
<label class="wpacu_switch">
62
<input id="wpacu_frontend"
63
type="checkbox"
64
+ <?php echo (($data['frontend_show'] == 1) ? 'checked="checked"' : ''); ?>
65
name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[frontend_show]"
66
+ value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
67
&nbsp;
68
<small>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).</small>
69
<p><small>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>&lt;/body&gt;</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.</small></p>
70
</td>
71
</tr>
72
+ <tr valign="top">
73
+ <th scope="row" class="setting_title">
74
+ <label for="wpacu_frontend">Enable Test Mode?</label>
75
+ <p class="wpacu_subtitle"><small><em>Apply plugin's changes for the admin only</em></small></p>
76
+ <p class="wpacu_read_more"><a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read More</a></p>
77
+ </th>
78
+ <td>
79
+ <label class="wpacu_switch">
80
+ <input id="wpacu_frontend"
81
+ type="checkbox"
82
+ <?php echo (($data['test_mode'] == 1) ? 'checked="checked"' : ''); ?>
83
+ name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[test_mode]"
84
+ value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
85
+ &nbsp;
86
+ <small>This is great for debugging when you're going through trial and error while removing unneeded CSS &amp; JavaScript on your website. Your visitors will load the website with all the settings &amp; assets loaded (just like it was before you activated the plugin).</small>
87
+ <p><small>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 &amp; 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).</small></p>
88
+ </td>
89
+ </tr>
90
</table>
91
92
<hr />
100
</th>
101
<td>
102
<label class="wpacu_switch">
103
+ <input id="wpacu_disable_emojis"
104
+ type="checkbox"
105
+ <?php echo (($data['disable_emojis'] == 1) ? 'checked="checked"' : ''); ?>
106
+ name="<?php echo WPACU_PLUGIN_NAME.'_settings'; ?>[disable_emojis]"
107
+ value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
108
&nbsp;
109
<small>This will unload WordPress' Emojis (the smiley icons)</small>
110
<p><small>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.</small></p>
templates/meta-box-loaded-assets/_asset-script-rows.php CHANGED
@@ -45,8 +45,8 @@ foreach ($data['all']['scripts'] as $obj) {
45
$class .= ' script_'.$obj->handle;
46
?>
47
<tr class="wpacu_asset_row <?php echo $class; ?>">
48
- <td valign="top" style="width: 100%;">
49
- <p style="margin-top: 0;">
50
<label for="script_<?php echo $obj->handle; ?>"> <?php _e('Handle:', WPACU_PLUGIN_NAME); ?> <strong><span style="color: green;"><?php echo $obj->handle; ?></span></strong></label>
51
<?php
52
if (isset($obj->wp) && $obj->wp) {
@@ -57,7 +57,7 @@ foreach ($data['all']['scripts'] as $obj) {
57
?>
58
</p>
59
60
- <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
61
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
62
<li class="wpacu_unload_this_page">
63
<label class="wpacu_switch"><input class="input-unload-on-this-page" id="script_<?php echo $obj->handle; ?>" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'disabled="disabled"'; } echo $checked; ?> name="<?php echo WPACU_PLUGIN_NAME; ?>[scripts][]" type="checkbox" value="<?php echo $obj->handle; ?>" /><span class="wpacu_slider wpacu_round"></span></label> <label class="wpacu_slider_text" for="script_<?php echo $obj->handle; ?>">Unload on this page</label>
@@ -73,7 +73,7 @@ foreach ($data['all']['scripts'] as $obj) {
73
?>
74
</div>
75
76
- <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
77
<?php
78
// Unloaded Everywhere
79
if ($globalUnloaded) {
@@ -127,7 +127,7 @@ foreach ($data['all']['scripts'] as $obj) {
127
</div>
128
129
<?php if ($data['bulk_unloaded_type'] === 'post_type') { ?>
130
- <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
131
<?php } ?>
132
133
<?php
@@ -203,7 +203,7 @@ foreach ($data['all']['scripts'] as $obj) {
203
</li>
204
</ul>
205
<?php
206
- if (isset($obj->src) && $obj->src != '') {
207
?>
208
<p><strong><?php _e('Source:', WPACU_PLUGIN_NAME); ?></strong> <a target="_blank" href="<?php echo $obj->srcHref; ?>"><?php echo $obj->src; ?></a></p>
209
<?php
@@ -220,12 +220,12 @@ foreach ($data['all']['scripts'] as $obj) {
220
$extraInfo[] = '<strong>'.__('Depends on:', WPACU_PLUGIN_NAME).'</strong> '.implode(', ', $obj->deps);
221
}
222
223
- if (isset($obj->ver) && $obj->ver != '') {
224
$extraInfo[] = '<strong>'.__('Version:', WPACU_PLUGIN_NAME).'</strong> '.$obj->ver;
225
}
226
227
- if (isset($obj->position) && $obj->position != '') {
228
- $extraInfo[] = '<strong>'.__('Position:', WPACU_PLUGIN_NAME).'</strong> '.(($obj->position == 'head') ? 'HEAD' : 'BODY');
229
}
230
231
// [wpacu_lite]
@@ -238,7 +238,7 @@ foreach ($data['all']['scripts'] as $obj) {
238
?>
239
240
<!-- [wpacu_lite] -->
241
- <?php if (isset($obj->src) && $obj->src != '') { ?>
242
<div class="wpacu-script-attributes-area wpacu-lite">
243
<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>
244
45
$class .= ' script_'.$obj->handle;
46
?>
47
<tr class="wpacu_asset_row <?php echo $class; ?>">
48
+ <td valign="top">
49
+ <p class="wpacu_handle">
50
<label for="script_<?php echo $obj->handle; ?>"> <?php _e('Handle:', WPACU_PLUGIN_NAME); ?> <strong><span style="color: green;"><?php echo $obj->handle; ?></span></strong></label>
51
<?php
52
if (isset($obj->wp) && $obj->wp) {
57
?>
58
</p>
59
60
+ <div class="wpacu_asset_options_wrap">
61
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
62
<li class="wpacu_unload_this_page">
63
<label class="wpacu_switch"><input class="input-unload-on-this-page" id="script_<?php echo $obj->handle; ?>" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'disabled="disabled"'; } echo $checked; ?> name="<?php echo WPACU_PLUGIN_NAME; ?>[scripts][]" type="checkbox" value="<?php echo $obj->handle; ?>" /><span class="wpacu_slider wpacu_round"></span></label> <label class="wpacu_slider_text" for="script_<?php echo $obj->handle; ?>">Unload on this page</label>
73
?>
74
</div>
75
76
+ <div class="wpacu_asset_options_wrap">
77
<?php
78
// Unloaded Everywhere
79
if ($globalUnloaded) {
127
</div>
128
129
<?php if ($data['bulk_unloaded_type'] === 'post_type') { ?>
130
+ <div class="wpacu_asset_options_wrap">
131
<?php } ?>
132
133
<?php
203
</li>
204
</ul>
205
<?php
206
+ if (isset($obj->src) && $obj->src !== '') {
207
?>
208
<p><strong><?php _e('Source:', WPACU_PLUGIN_NAME); ?></strong> <a target="_blank" href="<?php echo $obj->srcHref; ?>"><?php echo $obj->src; ?></a></p>
209
<?php
220
$extraInfo[] = '<strong>'.__('Depends on:', WPACU_PLUGIN_NAME).'</strong> '.implode(', ', $obj->deps);
221
}
222
223
+ if (isset($obj->ver) && $obj->ver !== '') {
224
$extraInfo[] = '<strong>'.__('Version:', WPACU_PLUGIN_NAME).'</strong> '.$obj->ver;
225
}
226
227
+ if (isset($obj->position) && $obj->position !== '') {
228
+ $extraInfo[] = '<strong>'.__('Position:', WPACU_PLUGIN_NAME).'</strong> '.(($obj->position === 'head') ? 'HEAD' : 'BODY');
229
}
230
231
// [wpacu_lite]
238
?>
239
240
<!-- [wpacu_lite] -->
241
+ <?php if (isset($obj->src) && $obj->src !== '') { ?>
242
<div class="wpacu-script-attributes-area wpacu-lite">
243
<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>
244
templates/meta-box-loaded-assets/_asset-style-rows.php CHANGED
@@ -46,8 +46,8 @@ foreach ($data['all']['styles'] as $obj) {
46
}
47
?>
48
<tr class="wpacu_asset_row <?php echo $class; ?>">
49
- <td valign="top" style="width: 100%;">
50
- <p style="margin-top: 0;">
51
<label for="style_<?php echo $obj->handle; ?>"><?php _e('Handle:', WPACU_PLUGIN_NAME); ?> <strong><span style="color: green;"><?php echo $obj->handle; ?></span></strong></label>
52
<?php
53
if (isset($obj->wp) && $obj->wp) {
@@ -58,7 +58,7 @@ foreach ($data['all']['styles'] as $obj) {
58
?>
59
</p>
60
61
- <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
62
<ul class="wpacu_asset_options" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
63
<li class="wpacu_unload_this_page">
64
<label class="wpacu_switch"><input class="input-unload-on-this-page" id="style_<?php echo $obj->handle; ?>" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'disabled="disabled"'; } echo $checked; ?> name="<?php echo WPACU_PLUGIN_NAME; ?>[styles][]" type="checkbox" value="<?php echo $obj->handle; ?>" /><span class="wpacu_slider wpacu_round"></span></label> <label class="wpacu_slider_text" for="style_<?php echo $obj->handle; ?>">Unload on this page</label>
@@ -74,7 +74,7 @@ foreach ($data['all']['styles'] as $obj) {
74
?>
75
</div>
76
77
- <div style="padding: 5px 10px; margin: 10px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
78
<?php
79
// Unloaded Everywhere
80
if ($globalUnloaded) {
@@ -126,7 +126,7 @@ foreach ($data['all']['styles'] as $obj) {
126
</div>
127
128
<?php if ($data['bulk_unloaded_type'] === 'post_type') { ?>
129
- <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
130
<?php } ?>
131
132
<?php
@@ -209,7 +209,7 @@ foreach ($data['all']['styles'] as $obj) {
209
</li>
210
</ul>
211
<?php
212
- if (isset($obj->src) && $obj->src != '') {
213
?>
214
<p><strong><?php _e('Source:', WPACU_PLUGIN_NAME); ?></strong> <a target="_blank" href="<?php echo $obj->srcHref; ?>"><?php echo $obj->src; ?></a></p>
215
<?php }
46
}
47
?>
48
<tr class="wpacu_asset_row <?php echo $class; ?>">
49
+ <td valign="top">
50
+ <p class="wpacu_handle">
51
<label for="style_<?php echo $obj->handle; ?>"><?php _e('Handle:', WPACU_PLUGIN_NAME); ?> <strong><span style="color: green;"><?php echo $obj->handle; ?></span></strong></label>
52
<?php
53
if (isset($obj->wp) && $obj->wp) {
58
?>
59
</p>
60
61
+ <div class="wpacu_asset_options_wrap">
62
<ul class="wpacu_asset_options" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
63
<li class="wpacu_unload_this_page">
64
<label class="wpacu_switch"><input class="input-unload-on-this-page" id="style_<?php echo $obj->handle; ?>" <?php /* [wpacu_lite] */ if ($globalUnloaded || $isPostTypeUnloaded) { /* [/wpacu_lite] */ echo 'disabled="disabled"'; } echo $checked; ?> name="<?php echo WPACU_PLUGIN_NAME; ?>[styles][]" type="checkbox" value="<?php echo $obj->handle; ?>" /><span class="wpacu_slider wpacu_round"></span></label> <label class="wpacu_slider_text" for="style_<?php echo $obj->handle; ?>">Unload on this page</label>
74
?>
75
</div>
76
77
+ <div class="wpacu_asset_options_wrap">
78
<?php
79
// Unloaded Everywhere
80
if ($globalUnloaded) {
126
</div>
127
128
<?php if ($data['bulk_unloaded_type'] === 'post_type') { ?>
129
+ <div class="wpacu_asset_options_wrap">
130
<?php } ?>
131
132
<?php
209
</li>
210
</ul>
211
<?php
212
+ if (isset($obj->src) && $obj->src !== '') {
213
?>
214
<p><strong><?php _e('Source:', WPACU_PLUGIN_NAME); ?></strong> <a target="_blank" href="<?php echo $obj->srcHref; ?>"><?php echo $obj->src; ?></a></p>
215
<?php }
templates/meta-box-loaded.php CHANGED
@@ -115,7 +115,7 @@ if (isset($data['page_template'])) {
115
<?php
116
}
117
118
- include_once dirname(__FILE__).'/meta-box-loaded-assets/default.php';
119
120
/*
121
Bug Fix: Make sure that savePost() from Update class is triggered ONLY if the meta box is loaded
115
<?php
116
}
117
118
+ include_once __DIR__.'/meta-box-loaded-assets/default.php';
119
120
/*
121
Bug Fix: Make sure that savePost() from Update class is triggered ONLY if the meta box is loaded
templates/settings-frontend.php CHANGED
@@ -9,14 +9,14 @@ if (! isset($data)) {
9
10
<form action="#wpacu_wrap_assets" method="post">
11
<div id="wpacu_wrap_assets">
12
- <h1>Asset CleanUp</h1>
13
<?php
14
if ($data['is_updateable']) {
15
?>
16
<p><small>* this area is shown only for the admin users and if "Manage in the Front-end?" was selected in the plugin's settings</small></p>
17
<p><small>* 'admin-bar' and 'wpassetcleanup-style' are not included as they are irrelevant since they are used by the plugin for this area</small></p>
18
<?php
19
- if ($data['is_woocommerce_shop_page']) {
20
?>
21
<p><strong><span style="color: #0f6cab;" class="dashicons dashicons-cart"></span> This a WooCommerce shop page ('product' type archive). Unloading assets will also take effect for the pagination/sorting pages (e.g. /2, /3, /?orderby=popularity etc.).</strong></p>
22
<?php
@@ -81,7 +81,7 @@ if (! isset($data)) {
81
name="submit"><span class="dashicons dashicons-update"></span> <?php esc_attr_e('UPDATE', WPACU_PLUGIN_NAME); ?></button>
82
</div>
83
84
- <p align="right"><small>Powered by Asset CleanUp (lite version), version <?php echo WPACU_PLUGIN_VERSION; ?></small></p>
85
<?php } ?>
86
</div>
87
9
10
<form action="#wpacu_wrap_assets" method="post">
11
<div id="wpacu_wrap_assets">
12
+ <h1><?php echo WPACU_PLUGIN_TITLE; ?></h1>
13
<?php
14
if ($data['is_updateable']) {
15
?>
16
<p><small>* this area is shown only for the admin users and if "Manage in the Front-end?" was selected in the plugin's settings</small></p>
17
<p><small>* 'admin-bar' and 'wpassetcleanup-style' are not included as they are irrelevant since they are used by the plugin for this area</small></p>
18
<?php
19
+ if ($data['is_woo_shop_page']) {
20
?>
21
<p><strong><span style="color: #0f6cab;" class="dashicons dashicons-cart"></span> This a WooCommerce shop page ('product' type archive). Unloading assets will also take effect for the pagination/sorting pages (e.g. /2, /3, /?orderby=popularity etc.).</strong></p>
22
<?php
81
name="submit"><span class="dashicons dashicons-update"></span> <?php esc_attr_e('UPDATE', WPACU_PLUGIN_NAME); ?></button>
82
</div>
83
84
+ <p align="right"><small>Powered by <?php echo WPACU_PLUGIN_TITLE; ?> (lite version), version <?php echo WPACU_PLUGIN_VERSION; ?></small></p>
85
<?php } ?>
86
</div>
87
wpacu-load.php CHANGED
@@ -54,3 +54,6 @@ new \WpAssetCleanUp\Menu;
54
55
// Plugin (Various Hooks)
56
new \WpAssetCleanUp\Plugin;
54
55
// Plugin (Various Hooks)
56
new \WpAssetCleanUp\Plugin;
57
+
58
+ // Admin Bar (Top Area of the website when user is logged in)
59
+ new \WpAssetCleanUp\AdminBar();
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.8
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://www.gabelivan.com/
9
*/
10
11
- define('WPACU_PLUGIN_VERSION', '1.2.8');
12
13
// Exit if accessed directly
14
if (! defined('ABSPATH')) {
@@ -22,13 +22,15 @@ if (! defined('ABSPATH')) {
22
23
// If the pro version (version above 1.0.2) was triggered first, we'll just check one of its constants
24
// If the lite version was triggered first, then we'll check if the pro version is active
25
- if (defined('WPACU_PRO_NO_LITE_NEEDED') && WPACU_PRO_PLUGIN_VERSION === true) {
26
return;
27
}
28
29
- define('WPACU_PLUGIN_NAME', 'wpassetcleanup');
30
- define('WPACU_PLUGIN_FILE', __FILE__);
31
- define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
32
33
// Do not load the plugin if the PHP version is below 5.3
34
// If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
@@ -56,7 +58,7 @@ if ($wpacuWrongPhp && is_admin()) { // Dashboard
56
function wpAssetCleanUpWrongPhpNotice()
57
{
58
echo '<div class="error is-dismissible"><p>'.
59
- __('<strong>Asset CleanUp</strong> requires <span style="color: green;"><strong>5.3+</strong> PHP version</span> installed. You have <strong>'.PHP_VERSION.'</strong>. If you\'re website is compatible with PHP 7+ (e.g. you can check with your developers or contact the hosting company), it\'s strongly recommended to upgrade for a better performance. The plugin has been deactivated.', WPACU_PLUGIN_NAME).
60
'</p></div>';
61
62
if (array_key_exists('active', $_GET)) {
2
/*
3
* Plugin Name: Asset CleanUp: Page Speed Booster
4
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
+ * Version: 1.2.8.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://www.gabelivan.com/
9
*/
10
11
+ define('WPACU_PLUGIN_VERSION', '1.2.8.1');
12
13
// Exit if accessed directly
14
if (! defined('ABSPATH')) {
22
23
// If the pro version (version above 1.0.2) was triggered first, we'll just check one of its constants
24
// If the lite version was triggered first, then we'll check if the pro version is active
25
+ if ( defined('WPACU_PRO_NO_LITE_NEEDED') && WPACU_PRO_NO_LITE_NEEDED !== false
26
+ && defined('WPACU_PRO_PLUGIN_VERSION') && WPACU_PRO_PLUGIN_VERSION !== false ) {
27
return;
28
}
29
30
+ define('WPACU_PLUGIN_NAME', 'wpassetcleanup');
31
+ define('WPACU_PLUGIN_TITLE', 'Asset CleanUp');
32
+ define('WPACU_PLUGIN_FILE', __FILE__);
33
+ define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
34
35
// Do not load the plugin if the PHP version is below 5.3
36
// If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
58
function wpAssetCleanUpWrongPhpNotice()
59
{
60
echo '<div class="error is-dismissible"><p>'.
61
+ __('<strong>'.WPACU_PLUGIN_TITLE.'</strong> requires <span style="color: green;"><strong>5.3+</strong> PHP version</span> installed. You have <strong>'.PHP_VERSION.'</strong>. If you\'re website is compatible with PHP 7+ (e.g. you can check with your developers or contact the hosting company), it\'s strongly recommended to upgrade for a better performance. The plugin has been deactivated.', WPACU_PLUGIN_NAME).
62
'</p></div>';
63
64
if (array_key_exists('active', $_GET)) {