Version Description
- Changed the way the combined loaded CSS files caching is stored (/wp-content/cache/asset-cleanup/); Transients are not used anymore to avoid having too many records in the options table
- Clear cache now keeps the old merge CSS files in the "cache/asset-cleanup" folder in case a cached page still makes reference to any of the files
Download this release
Release Info
Developer | gabelivan |
Plugin | Asset CleanUp: Page Speed Booster |
Version | 1.2.9.5 |
Comparing to | |
See all releases |
Code changes from version 1.2.9.4 to 1.2.9.5
- assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-deactivate.jpg +0 -0
- assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-delete.jpg +0 -0
- assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-2-choose-file.jpg +0 -0
- assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-3-activate-plugin.jpg +0 -0
- assets/style.min.css +1 -1
- classes/AdminBar.php +3 -18
- classes/Main.php +13 -81
- classes/Misc.php +22 -15
- classes/OptimiseAssets/CombineCommon.php +412 -0
- classes/{OptimizeCss.php → OptimiseAssets/CombineCss.php} +56 -330
- classes/OwnAssets.php +4 -27
- classes/Plugin.php +1 -1
- classes/Settings.php +8 -16
- classes/Sorting.php +4 -26
- classes/Tools.php +3 -2
- classes/Update.php +7 -15
- freemius/assets/css/admin/account.css +0 -0
- freemius/assets/css/admin/add-ons.css +0 -0
- freemius/assets/css/admin/affiliation.css +0 -0
- freemius/assets/css/admin/checkout.css +0 -0
- freemius/assets/css/admin/common.css +0 -0
- freemius/assets/css/admin/connect.css +0 -0
- freemius/assets/css/admin/debug.css +0 -0
- freemius/assets/css/admin/dialog-boxes.css +0 -0
- freemius/assets/css/admin/gdpr-optin-notice.css +0 -0
- freemius/assets/css/admin/index.php +0 -0
- freemius/assets/css/customizer.css +0 -0
- freemius/assets/css/index.php +0 -0
- freemius/assets/img/index.php +0 -0
- freemius/assets/img/plugin-icon.png +0 -0
- freemius/assets/img/theme-icon.png +0 -0
- freemius/assets/index.php +0 -0
- freemius/assets/js/index.php +0 -0
- freemius/assets/js/nojquery.ba-postmessage.js +0 -0
- freemius/assets/js/nojquery.ba-postmessage.min.js +0 -0
- freemius/assets/js/postmessage.js +0 -0
- freemius/config.php +0 -0
- freemius/includes/class-freemius-abstract.php +0 -0
- freemius/includes/class-freemius.php +0 -0
- freemius/includes/class-fs-admin-notices.php +0 -0
- freemius/includes/class-fs-api.php +0 -0
- freemius/includes/class-fs-logger.php +0 -0
- freemius/includes/class-fs-options.php +0 -0
- freemius/includes/class-fs-plugin-updater.php +0 -0
- freemius/includes/class-fs-security.php +0 -0
- freemius/includes/class-fs-storage.php +0 -0
- freemius/includes/class-fs-user-lock.php +0 -0
- freemius/includes/customizer/class-fs-customizer-support-section.php +0 -0
- freemius/includes/customizer/class-fs-customizer-upsell-control.php +0 -0
- freemius/includes/customizer/index.php +0 -0
- freemius/includes/debug/class-fs-debug-bar-panel.php +0 -0
- freemius/includes/debug/debug-bar-start.php +0 -0
- freemius/includes/debug/index.php +0 -0
- freemius/includes/entities/class-fs-affiliate-terms.php +0 -0
- freemius/includes/entities/class-fs-affiliate.php +0 -0
- freemius/includes/entities/class-fs-billing.php +0 -0
- freemius/includes/entities/class-fs-entity.php +0 -0
- freemius/includes/entities/class-fs-payment.php +0 -0
- freemius/includes/entities/class-fs-plugin-info.php +0 -0
- freemius/includes/entities/class-fs-plugin-license.php +0 -0
- freemius/includes/entities/class-fs-plugin-plan.php +0 -0
- freemius/includes/entities/class-fs-plugin-tag.php +0 -0
- freemius/includes/entities/class-fs-plugin.php +0 -0
- freemius/includes/entities/class-fs-pricing.php +0 -0
- freemius/includes/entities/class-fs-scope-entity.php +0 -0
- freemius/includes/entities/class-fs-site.php +0 -0
- freemius/includes/entities/class-fs-subscription.php +0 -0
- freemius/includes/entities/class-fs-user.php +0 -0
- freemius/includes/entities/index.php +0 -0
- freemius/includes/fs-core-functions.php +0 -0
- freemius/includes/fs-essential-functions.php +0 -0
- freemius/includes/fs-plugin-info-dialog.php +0 -0
- freemius/includes/i18n.php +0 -0
- freemius/includes/index.php +0 -0
- freemius/includes/l10n.php +0 -0
- freemius/includes/managers/class-fs-admin-menu-manager.php +0 -0
- freemius/includes/managers/class-fs-admin-notice-manager.php +0 -0
- freemius/includes/managers/class-fs-cache-manager.php +0 -0
- freemius/includes/managers/class-fs-gdpr-manager.php +0 -0
- freemius/includes/managers/class-fs-key-value-storage.php +0 -0
- freemius/includes/managers/class-fs-license-manager.php +0 -0
- freemius/includes/managers/class-fs-option-manager.php +0 -0
- freemius/includes/managers/class-fs-plan-manager.php +0 -0
- freemius/includes/managers/class-fs-plugin-manager.php +0 -0
- freemius/includes/managers/index.php +0 -0
- freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +0 -0
- freemius/includes/sdk/Exceptions/EmptyArgumentException.php +0 -0
- freemius/includes/sdk/Exceptions/Exception.php +0 -0
- freemius/includes/sdk/Exceptions/InvalidArgumentException.php +0 -0
- freemius/includes/sdk/Exceptions/OAuthException.php +0 -0
- freemius/includes/sdk/Exceptions/index.php +0 -0
- freemius/includes/sdk/FreemiusBase.php +0 -0
- freemius/includes/sdk/FreemiusWordPress.php +0 -0
- freemius/includes/sdk/LICENSE.txt +0 -0
- freemius/includes/sdk/index.php +0 -0
- freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +0 -0
- freemius/includes/supplements/fs-essential-functions-2.2.1.php +0 -0
- freemius/includes/supplements/index.php +0 -0
- freemius/index.php +0 -0
- freemius/languages/freemius-da_DK.mo +0 -0
- freemius/languages/freemius-da_DK.po +0 -0
- freemius/languages/freemius-en.mo +0 -0
- freemius/languages/freemius-en.po +0 -0
- freemius/languages/freemius-es_ES.mo +0 -0
- freemius/languages/freemius-es_ES.po +0 -0
- freemius/languages/freemius-fr_FR.mo +0 -0
- freemius/languages/freemius-fr_FR.po +0 -0
- freemius/languages/freemius-he_IL.mo +0 -0
- freemius/languages/freemius-he_IL.po +0 -0
- freemius/languages/freemius-it_IT.mo +0 -0
- freemius/languages/freemius-it_IT.po +0 -0
- freemius/languages/freemius-ja_JP.mo +0 -0
- freemius/languages/freemius-ja_JP.po +0 -0
- freemius/languages/freemius-nl_NL.mo +0 -0
- freemius/languages/freemius-nl_NL.po +0 -0
- freemius/languages/freemius-ru_RU.mo +0 -0
- freemius/languages/freemius-ru_RU.po +0 -0
- freemius/languages/freemius.pot +0 -0
- freemius/languages/index.php +0 -0
- freemius/require.php +0 -0
- freemius/start.php +0 -0
- freemius/templates/account.php +0 -0
- freemius/templates/account/billing.php +0 -0
- freemius/templates/account/index.php +0 -0
- freemius/templates/account/partials/activate-license-button.php +0 -0
- freemius/templates/account/partials/addon.php +0 -0
- freemius/templates/account/partials/deactivate-license-button.php +0 -0
- freemius/templates/account/partials/index.php +0 -0
- freemius/templates/account/partials/site.php +0 -0
- freemius/templates/account/payments.php +0 -0
- freemius/templates/add-ons.php +0 -0
- freemius/templates/add-trial-to-pricing.php +0 -0
- freemius/templates/admin-notice.php +0 -0
- freemius/templates/ajax-loader.php +0 -0
- freemius/templates/auto-installation.php +0 -0
- freemius/templates/checkout.php +0 -0
- freemius/templates/connect.php +0 -0
- freemius/templates/contact.php +0 -0
- freemius/templates/debug.php +0 -0
- freemius/templates/debug/api-calls.php +0 -0
- freemius/templates/debug/index.php +0 -0
- freemius/templates/debug/logger.php +0 -0
- freemius/templates/debug/plugins-themes-sync.php +0 -0
- freemius/templates/debug/scheduled-crons.php +0 -0
- freemius/templates/email.php +0 -0
- freemius/templates/firewall-issues-js.php +0 -0
- freemius/templates/forms/affiliation.php +0 -0
- freemius/templates/forms/deactivation/contact.php +0 -0
- freemius/templates/forms/deactivation/form.php +0 -0
- freemius/templates/forms/deactivation/index.php +0 -0
- freemius/templates/forms/deactivation/retry-skip.php +0 -0
- freemius/templates/forms/index.php +0 -0
- freemius/templates/forms/license-activation.php +0 -0
- freemius/templates/forms/optout.php +0 -0
- freemius/templates/forms/premium-versions-upgrade-handler.php +0 -0
- freemius/templates/forms/premium-versions-upgrade-metadata.php +0 -0
- freemius/templates/forms/resend-key.php +0 -0
- freemius/templates/forms/subscription-cancellation.php +0 -0
- freemius/templates/forms/trial-start.php +0 -0
- freemius/templates/gdpr-optin-js.php +0 -0
- freemius/templates/index.php +0 -0
- freemius/templates/js/index.php +0 -0
- freemius/templates/js/jquery.content-change.php +0 -0
- freemius/templates/js/open-license-activation.php +0 -0
- freemius/templates/js/style-premium-theme.php +0 -0
- freemius/templates/partials/network-activation.php +0 -0
- freemius/templates/plugin-icon.php +0 -0
- freemius/templates/plugin-info/description.php +0 -0
- freemius/templates/plugin-info/features.php +0 -0
- freemius/templates/plugin-info/index.php +0 -0
- freemius/templates/plugin-info/screenshots.php +0 -0
- freemius/templates/powered-by.php +0 -0
- freemius/templates/pricing.php +0 -0
- freemius/templates/secure-https-header.php +0 -0
- freemius/templates/sticky-admin-notice-js.php +0 -0
- freemius/templates/tabs-capture-js.php +0 -0
- freemius/templates/tabs.php +0 -0
- readme.txt +6 -2
- templates/admin-page-getting-started.php +16 -9
- templates/admin-page-settings-plugin.php +30 -4
- templates/meta-box-loaded-assets/_asset-script-single-row.php +36 -31
- templates/meta-box-loaded-assets/_asset-style-single-row.php +29 -28
- templates/meta-box-loaded-assets/view-by-location.php +1 -1
- templates/meta-box-loaded-assets/view-default.php +1 -1
- templates/settings-frontend.php +1 -5
- wpacu-load.php +9 -3
- wpacu.php +2 -2
assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-deactivate.jpg
CHANGED
File without changes
|
assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-1-delete.jpg
CHANGED
File without changes
|
assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-2-choose-file.jpg
CHANGED
File without changes
|
assets/images/wpacu-upgrade-steps/wpacu-upgrade-step-3-activate-plugin.jpg
CHANGED
File without changes
|
assets/style.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{max-width:340px;width:100%}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;margin:0 auto;padding:0;max-width:1200px;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.license-status{position:absolute;font-size:12px;left:0;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.license-status.active{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:'';-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1200px;margin:20px auto 30px 0;width:100%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:'';width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning{color:#c00}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child,.wpacu_verified{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}.wpacu_asset_row td{padding:10px!important;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning{color:red!important}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_bulk_unload_active{color:#d54e21}tr.wpacu_global_rule_row.selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 20px 0 0;list-style:none;display:inline-block}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7', GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1', GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.go-pro-button,.go-pro-link-no-style,.wordpress-core-file{display:inline-block;text-decoration:none}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=submit].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=button].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.go-pro-link-no-style .wpacu-tooltip:after,.wordpress-core-file .wpacu-tooltip:after{content:"";border-width:10px;border-style:solid;top:100%}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;color:inherit}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #0085ba}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}#wpacu-dom-get-type-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child{margin-right:0}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{content:'';display:table}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child,.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-location-child-area strong{padding:17px 10px 15px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-bottom:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:14px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area strong{border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative;padding:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"\f106";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #e7e7e7}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div{padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;height:14px;width:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read span.dashicons-warning{color:#c00}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}
|
1 |
+
#wpacu_meta_box_content .dashicons.dashicons-warning,.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{width:352px;height:79px}.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.active{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:'';-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1200px;margin:20px auto 30px 0;width:100%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:'';width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}#wpacu_meta_box_content,.wpacu_widefat{width:99%}.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 h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#wpacu_wrap_assets,.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}.wpacu-assets-inline-code-collapsible-content>div>p,.wpacu_update_btn{line-height:normal!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:18px!important;position:relative;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td.selected,.wpacu_asset_row td:hover{border:1px solid #cdcdcd;-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning{color:red!important}label.wpacu_add_global{cursor:pointer!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_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7', GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;cursor:pointer!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1', GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.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;text-decoration:none;display:inline-block;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;display:inline-block;color:inherit;text-decoration:none}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wordpress-core-file{position:relative;display:inline-block;font-style:normal;color:inherit;text-decoration:none}.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #0085ba}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}#wpacu-dom-get-type-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child{margin-right:0}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{content:'';display:table}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child,.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area strong{position:relative;padding:9px 10px 10px 15px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-location-child-area strong:after,.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area strong:after{content:'';position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-location-child-area strong{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-bottom:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:14px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area strong{border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative;padding:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"\f106";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div{padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{color:inherit;font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;height:14px;width:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read span.dashicons-warning{color:#c00}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}
|
classes/AdminBar.php
CHANGED
@@ -54,10 +54,10 @@ class AdminBar
|
|
54 |
if (Main::instance()->settings['combine_loaded_css']) {
|
55 |
$wp_admin_bar->add_menu( array(
|
56 |
'parent' => 'assetcleanup-parent',
|
57 |
-
'id' => 'assetcleanup-clear-
|
58 |
-
'title' => 'Clear Combined
|
59 |
'href' => wp_nonce_url( admin_url( 'admin-post.php?action=assetcleanup_clear_assets_cache' . $goBackToCurrentUrl ),
|
60 |
-
'
|
61 |
) );
|
62 |
}
|
63 |
|
@@ -113,20 +113,5 @@ class AdminBar
|
|
113 |
'meta' => array('target' => '_blank')
|
114 |
));
|
115 |
|
116 |
-
/*
|
117 |
-
if (Main::instance()->settings['test_mode']) {
|
118 |
-
$wp_admin_bar->add_menu(array(
|
119 |
-
'parent' => 'assetcleanup-parent',
|
120 |
-
'id' => 'assetcleanup-test-mode-info',
|
121 |
-
'title' => 'With "Test Mode" on, anything will be applied only for your view.',
|
122 |
-
));
|
123 |
-
|
124 |
-
$wp_admin_bar->add_menu(array(
|
125 |
-
'parent' => 'assetcleanup-parent',
|
126 |
-
'id' => 'assetcleanup-test-mode-info-2',
|
127 |
-
'title' => 'The visitors will see the pages as if the plugin is disabled. <a target="_blank" style="display:inline-block; text-decoration: underline; padding-left: 5px;" href="https://assetcleanup.com/docs/">More</a>',
|
128 |
-
));
|
129 |
}
|
130 |
-
*/
|
131 |
-
}
|
132 |
}
|
54 |
if (Main::instance()->settings['combine_loaded_css']) {
|
55 |
$wp_admin_bar->add_menu( array(
|
56 |
'parent' => 'assetcleanup-parent',
|
57 |
+
'id' => 'assetcleanup-clear-combined-files-cache',
|
58 |
+
'title' => 'Clear Combined Files Cache',
|
59 |
'href' => wp_nonce_url( admin_url( 'admin-post.php?action=assetcleanup_clear_assets_cache' . $goBackToCurrentUrl ),
|
60 |
+
'assetcleanup_clear_assets_cache' )
|
61 |
) );
|
62 |
}
|
63 |
|
113 |
'meta' => array('target' => '_blank')
|
114 |
));
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
|
|
|
|
117 |
}
|
classes/Main.php
CHANGED
@@ -290,10 +290,9 @@ class Main
|
|
290 |
$type = 'post';
|
291 |
$post = $getCurrentPost;
|
292 |
$this->postTypesUnloaded = $this->getBulkUnload('post_type', $post->post_type);
|
293 |
-
}
|
294 |
-
|
295 |
-
|
296 |
-
} else {
|
297 |
// The request is done for a page such as is_archive(), is_author(), 404, search
|
298 |
// and the premium extension is not available, thus no load exceptions are available
|
299 |
return;
|
@@ -349,8 +348,7 @@ class Main
|
|
349 |
$data = array();
|
350 |
|
351 |
$data['get_assets'] = $getAssets;
|
352 |
-
|
353 |
-
$data['fetch_url'] = Misc::getPageUrl($postId);
|
354 |
|
355 |
$this->parseTemplate('meta-box', $data, true);
|
356 |
}
|
@@ -629,16 +627,9 @@ class Main
|
|
629 |
$exceptionsListJson = get_option(
|
630 |
WPACU_PLUGIN_ID . '_front_page_load_exceptions'
|
631 |
);
|
632 |
-
} elseif ($type === 'for_pro' && Main::wpacuProEnabled()) {
|
633 |
-
// [wpacu_pro]
|
634 |
-
if (class_exists( '\\WpAssetCleanUpPro\\LoadExceptions' )) {
|
635 |
-
$ExceptionsPro = new \WpAssetCleanUpPro\LoadExceptions();
|
636 |
-
$exceptionsListJson = $ExceptionsPro->getLoadExceptions();
|
637 |
-
}
|
638 |
-
// [/wpacu_pro]
|
639 |
}
|
640 |
|
641 |
-
|
642 |
$exceptionsList = json_decode($exceptionsListJson, true);
|
643 |
|
644 |
if (json_last_error() !== JSON_ERROR_NONE) {
|
@@ -646,15 +637,7 @@ class Main
|
|
646 |
}
|
647 |
}
|
648 |
|
649 |
-
|
650 |
-
if (! empty($_POST)) {
|
651 |
-
echo '<pre>';
|
652 |
-
print_r( $exceptionsList );
|
653 |
-
exit;
|
654 |
-
}
|
655 |
-
*/
|
656 |
-
|
657 |
-
return $exceptionsList;
|
658 |
}
|
659 |
|
660 |
/**
|
@@ -790,10 +773,6 @@ class Main
|
|
790 |
}
|
791 |
}
|
792 |
|
793 |
-
// [wpacu_pro]
|
794 |
-
$currentUnloadedAll = apply_filters('wpacu_pro_filter_all_bulk_unloads', $currentUnloadedAll);
|
795 |
-
// [/wpacu_pro]
|
796 |
-
|
797 |
$manageStyles = $wp_styles->done;
|
798 |
$manageScripts = $wp_scripts->done;
|
799 |
|
@@ -992,14 +971,8 @@ class Main
|
|
992 |
$type = 'front_page';
|
993 |
} elseif ($this->getCurrentPostId() > 0) {
|
994 |
$type = 'post';
|
995 |
-
} else {
|
996 |
-
// [wpacu_pro]
|
997 |
-
// $this->getCurrentPostId() would be 0
|
998 |
-
$type = 'for_pro';
|
999 |
-
// [/wpacu_pro]
|
1000 |
}
|
1001 |
-
|
1002 |
-
$data['load_exceptions'] = $this->getLoadExceptions($type, $this->getCurrentPostId());
|
1003 |
// [wpacu_lite]
|
1004 |
} else {
|
1005 |
$data['is_updateable'] = false;
|
@@ -1030,13 +1003,7 @@ class Main
|
|
1030 |
$data = $this->setPageTemplate($data);
|
1031 |
}
|
1032 |
|
1033 |
-
|
1034 |
-
// If the premium extension is enabled, it will also pull the other bulk unloads
|
1035 |
-
// such as 'taxonomy', 'author' etc.
|
1036 |
-
$data = apply_filters('wpacu_pro_get_bulk_unloads', $data);
|
1037 |
-
// [/wpacu_pro]
|
1038 |
-
|
1039 |
-
$data['total_styles'] = ! empty($data['all']['styles']) ? count($data['all']['styles']) : 0;
|
1040 |
$data['total_scripts'] = ! empty($data['all']['scripts']) ? count($data['all']['scripts']) : 0;
|
1041 |
|
1042 |
$this->parseTemplate('settings-frontend', $data, true);
|
@@ -1185,22 +1152,10 @@ class Main
|
|
1185 |
}
|
1186 |
}
|
1187 |
|
1188 |
-
|
1189 |
-
// If the pro version is used, it will also pull the other bulk unloads such as 'taxonomy', 'author' etc.
|
1190 |
-
$data = apply_filters('wpacu_pro_get_bulk_unloads', $data);
|
1191 |
-
// [/wpacu_pro]
|
1192 |
-
|
1193 |
-
// For debug purposes
|
1194 |
-
//unset($data['contents']); echo '<pre>'; print_r($data); exit;
|
1195 |
-
|
1196 |
-
//echo '<pre>'; print_r($data['bulk_unloaded']['post_type']);
|
1197 |
-
if ($postId > 0) {
|
1198 |
$type = 'post';
|
1199 |
-
}
|
1200 |
-
|
1201 |
-
$type = 'for_pro';
|
1202 |
-
// [/wpacu_pro]
|
1203 |
-
} elseif($postId == 0) {
|
1204 |
$type = 'front_page';
|
1205 |
}
|
1206 |
|
@@ -1412,12 +1367,6 @@ class Main
|
|
1412 |
$this->assetsRemoved = get_post_meta($postId, '_' . WPACU_PLUGIN_ID . '_no_load', true);
|
1413 |
}
|
1414 |
|
1415 |
-
// [wpacu_pro]
|
1416 |
-
// Premium Extension: Filter assets for pages such as category, tag, author, dates etc.
|
1417 |
-
// Retrieves "per page" list of unloaded CSS and JavaScript
|
1418 |
-
$this->assetsRemoved = apply_filters('wpacu_pro_get_assets_unloaded', $this->assetsRemoved);
|
1419 |
-
// [/wpacu_pro]
|
1420 |
-
|
1421 |
@json_decode($this->assetsRemoved);
|
1422 |
|
1423 |
if (! (json_last_error() === JSON_ERROR_NONE) || empty($this->assetsRemoved)) {
|
@@ -1488,16 +1437,9 @@ class Main
|
|
1488 |
// Undetectable? The page is not a singular one nor the home page
|
1489 |
// It's likely an archive, category page (WooCommerce), 404 page etc.
|
1490 |
if (! $this->currentPostId && ! Misc::isHomePage()) {
|
1491 |
-
|
1492 |
-
|
1493 |
-
if ($this->wpacuProEnabled()) {
|
1494 |
-
// Could be archive of: Category, Tag, Author, Date, Custom Post Type or Custom Taxonomy based pages.
|
1495 |
-
// Or: Search, 404 page etc.
|
1496 |
-
$this->isUpdateable = true;
|
1497 |
-
} else {
|
1498 |
-
$this->isUpdateable = false;
|
1499 |
}
|
1500 |
-
}
|
1501 |
|
1502 |
// [/wpacu_lite]
|
1503 |
|
@@ -1683,16 +1625,6 @@ class Main
|
|
1683 |
return false;
|
1684 |
}
|
1685 |
|
1686 |
-
// [wpacu_pro]
|
1687 |
-
/**
|
1688 |
-
* @return bool
|
1689 |
-
*/
|
1690 |
-
public function wpacuProEnabled()
|
1691 |
-
{
|
1692 |
-
return defined('WPACU_PRO_PLUGIN_FILE');
|
1693 |
-
}
|
1694 |
-
// [/wpacu_pro]
|
1695 |
-
|
1696 |
// [wpacu_lite]
|
1697 |
/**
|
1698 |
*
|
290 |
$type = 'post';
|
291 |
$post = $getCurrentPost;
|
292 |
$this->postTypesUnloaded = $this->getBulkUnload('post_type', $post->post_type);
|
293 |
+
}
|
294 |
+
|
295 |
+
else {
|
|
|
296 |
// The request is done for a page such as is_archive(), is_author(), 404, search
|
297 |
// and the premium extension is not available, thus no load exceptions are available
|
298 |
return;
|
348 |
$data = array();
|
349 |
|
350 |
$data['get_assets'] = $getAssets;
|
351 |
+
$data['fetch_url'] = Misc::getPageUrl($postId);
|
|
|
352 |
|
353 |
$this->parseTemplate('meta-box', $data, true);
|
354 |
}
|
627 |
$exceptionsListJson = get_option(
|
628 |
WPACU_PLUGIN_ID . '_front_page_load_exceptions'
|
629 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
630 |
}
|
631 |
|
632 |
+
if ($exceptionsListJson) {
|
633 |
$exceptionsList = json_decode($exceptionsListJson, true);
|
634 |
|
635 |
if (json_last_error() !== JSON_ERROR_NONE) {
|
637 |
}
|
638 |
}
|
639 |
|
640 |
+
return $exceptionsList;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
}
|
642 |
|
643 |
/**
|
773 |
}
|
774 |
}
|
775 |
|
|
|
|
|
|
|
|
|
776 |
$manageStyles = $wp_styles->done;
|
777 |
$manageScripts = $wp_scripts->done;
|
778 |
|
971 |
$type = 'front_page';
|
972 |
} elseif ($this->getCurrentPostId() > 0) {
|
973 |
$type = 'post';
|
|
|
|
|
|
|
|
|
|
|
974 |
}
|
975 |
+
$data['load_exceptions'] = $this->getLoadExceptions($type, $this->getCurrentPostId());
|
|
|
976 |
// [wpacu_lite]
|
977 |
} else {
|
978 |
$data['is_updateable'] = false;
|
1003 |
$data = $this->setPageTemplate($data);
|
1004 |
}
|
1005 |
|
1006 |
+
$data['total_styles'] = ! empty($data['all']['styles']) ? count($data['all']['styles']) : 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
1007 |
$data['total_scripts'] = ! empty($data['all']['scripts']) ? count($data['all']['scripts']) : 0;
|
1008 |
|
1009 |
$this->parseTemplate('settings-frontend', $data, true);
|
1152 |
}
|
1153 |
}
|
1154 |
|
1155 |
+
if ($postId > 0) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1156 |
$type = 'post';
|
1157 |
+
}
|
1158 |
+
elseif($postId == 0) {
|
|
|
|
|
|
|
1159 |
$type = 'front_page';
|
1160 |
}
|
1161 |
|
1367 |
$this->assetsRemoved = get_post_meta($postId, '_' . WPACU_PLUGIN_ID . '_no_load', true);
|
1368 |
}
|
1369 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1370 |
@json_decode($this->assetsRemoved);
|
1371 |
|
1372 |
if (! (json_last_error() === JSON_ERROR_NONE) || empty($this->assetsRemoved)) {
|
1437 |
// Undetectable? The page is not a singular one nor the home page
|
1438 |
// It's likely an archive, category page (WooCommerce), 404 page etc.
|
1439 |
if (! $this->currentPostId && ! Misc::isHomePage()) {
|
1440 |
+
$this->isUpdateable = false;
|
1441 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
1442 |
}
|
|
|
1443 |
|
1444 |
// [/wpacu_lite]
|
1445 |
|
1625 |
return false;
|
1626 |
}
|
1627 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1628 |
// [wpacu_lite]
|
1629 |
/**
|
1630 |
*
|
classes/Misc.php
CHANGED
@@ -85,6 +85,27 @@ class Misc
|
|
85 |
return trim($strThree); // remove whitespaces;
|
86 |
}
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
/**
|
89 |
* @return string
|
90 |
*/
|
@@ -127,21 +148,7 @@ class Misc
|
|
127 |
return self::_filterPageUrl(get_permalink($postId));
|
128 |
}
|
129 |
|
130 |
-
|
131 |
-
if (is_admin() && Main::instance()->wpacuProEnabled()) {
|
132 |
-
$wpacuOwnAssets = new OwnAssets();
|
133 |
-
|
134 |
-
if ($wpacuOwnAssets->isTaxonomyEditPage()) {
|
135 |
-
$current_screen = \get_current_screen();
|
136 |
-
|
137 |
-
$term = isset($_GET['tag_ID']) ? (int)$_GET['tag_ID'] : false;
|
138 |
-
$taxonomy = $current_screen->taxonomy;
|
139 |
-
|
140 |
-
return get_term_link($term, $taxonomy);
|
141 |
-
}
|
142 |
-
}
|
143 |
-
|
144 |
-
// If it's not a singular page, nor the home page, continue...
|
145 |
// It could be: Archive page (e.g. author, category, tag, date, custom taxonomy), Search page, 404 page etc.
|
146 |
global $wp;
|
147 |
|
85 |
return trim($strThree); // remove whitespaces;
|
86 |
}
|
87 |
|
88 |
+
/**
|
89 |
+
* @param $string
|
90 |
+
* @param $endsWithString
|
91 |
+
* @return bool
|
92 |
+
*/
|
93 |
+
public static function endsWith($string, $endsWithString)
|
94 |
+
{
|
95 |
+
$stringLen = strlen($string);
|
96 |
+
$endsWithStringLen = strlen($endsWithString);
|
97 |
+
|
98 |
+
if ($endsWithStringLen > $stringLen) {
|
99 |
+
return false;
|
100 |
+
}
|
101 |
+
|
102 |
+
return (substr_compare(
|
103 |
+
$string,
|
104 |
+
$endsWithString,
|
105 |
+
$stringLen - $endsWithStringLen, $endsWithStringLen
|
106 |
+
) === 0);
|
107 |
+
}
|
108 |
+
|
109 |
/**
|
110 |
* @return string
|
111 |
*/
|
148 |
return self::_filterPageUrl(get_permalink($postId));
|
149 |
}
|
150 |
|
151 |
+
// If it's not a singular page, nor the home page, continue...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
// It could be: Archive page (e.g. author, category, tag, date, custom taxonomy), Search page, 404 page etc.
|
153 |
global $wp;
|
154 |
|
classes/OptimiseAssets/CombineCommon.php
ADDED
@@ -0,0 +1,412 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WpAssetCleanUp\OptimiseAssets;
|
3 |
+
|
4 |
+
use WpAssetCleanUp\Misc;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class CombineCommon
|
8 |
+
* @package WpAssetCleanUp
|
9 |
+
*/
|
10 |
+
class CombineCommon
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* @var string
|
14 |
+
*/
|
15 |
+
public static $relPathPluginCacheDir = '/cache/asset-cleanup/';
|
16 |
+
|
17 |
+
/**
|
18 |
+
* CombineCommon constructor.
|
19 |
+
*/
|
20 |
+
public function __construct()
|
21 |
+
{
|
22 |
+
add_action('switch_theme', array($this, 'clearAllCache'));
|
23 |
+
add_action('after_switch_theme', array($this, 'clearAllCache'));
|
24 |
+
|
25 |
+
// Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
|
26 |
+
if (array_key_exists('action', $_GET) && $_GET['action'] === 'purge_cache') {
|
27 |
+
add_action( 'before_rocket_clean_domain', array( $this, 'clearAllCache' ) );
|
28 |
+
}
|
29 |
+
|
30 |
+
add_action('admin_post_assetcleanup_clear_assets_cache', function() {
|
31 |
+
$this->clearAllCache(true);
|
32 |
+
});
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Is this a regular WordPress page (not feed, REST API etc.)?
|
37 |
+
* If not, do not proceed with any CSS/JS combine
|
38 |
+
*
|
39 |
+
* @return bool
|
40 |
+
*/
|
41 |
+
public static function doCombineIsRegularPage()
|
42 |
+
{
|
43 |
+
// In particular situations, do not process this
|
44 |
+
if ( strpos($_SERVER['REQUEST_URI'], '/wp-content/plugins/') !== false
|
45 |
+
&& strpos($_SERVER['REQUEST_URI'], '/wp-content/themes/') !== false) {
|
46 |
+
return false;
|
47 |
+
}
|
48 |
+
|
49 |
+
if (Misc::endsWith($_SERVER['REQUEST_URI'], '/comments/feed/')) {
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
if (str_replace('//', '/', site_url().'/feed/') === $_SERVER['REQUEST_URI']) {
|
54 |
+
return false;
|
55 |
+
}
|
56 |
+
|
57 |
+
if (is_feed()) { // any kind of feed page
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
|
61 |
+
return true;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param $filesSources
|
66 |
+
* @param $htmlSource
|
67 |
+
* @param $assetType
|
68 |
+
*
|
69 |
+
* @return mixed
|
70 |
+
*/
|
71 |
+
public static function stripJustCombinedFileTags($filesSources, $htmlSource, $assetType = 'css')
|
72 |
+
{
|
73 |
+
if ($assetType === 'css') {
|
74 |
+
$tagName = 'link';
|
75 |
+
$sourceAttr = 'href';
|
76 |
+
$regExpPattern = '#<link[^>]*stylesheet[^>]*(>)#Usmi';
|
77 |
+
} else {
|
78 |
+
return $htmlSource;
|
79 |
+
}
|
80 |
+
|
81 |
+
preg_match_all($regExpPattern, $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
|
82 |
+
|
83 |
+
$linkTagsStripped = 0;
|
84 |
+
|
85 |
+
foreach ($matchesSourcesFromTags as $matchSourceFromTag) {
|
86 |
+
$matchedSourceFromTag = trim($matchSourceFromTag[0]);
|
87 |
+
|
88 |
+
$domTag = new \DOMDocument();
|
89 |
+
$domTag->loadHTML($matchedSourceFromTag);
|
90 |
+
|
91 |
+
foreach ($domTag->getElementsByTagName( $tagName ) as $tagObject) {
|
92 |
+
if (! $tagObject->hasAttributes()) {
|
93 |
+
continue;
|
94 |
+
}
|
95 |
+
|
96 |
+
foreach ($tagObject->attributes as $tagAttrs) {
|
97 |
+
if ($tagAttrs->nodeName === $sourceAttr && in_array($tagAttrs->nodeValue, $filesSources)) {
|
98 |
+
$replaceWith = '';
|
99 |
+
|
100 |
+
$htmlSourceBeforeLinkTagReplacement = $htmlSource;
|
101 |
+
$htmlSource = str_replace($matchedSourceFromTag, $replaceWith, $htmlSource);
|
102 |
+
|
103 |
+
if ($htmlSource !== $htmlSourceBeforeLinkTagReplacement) {
|
104 |
+
$linkTagsStripped++;
|
105 |
+
}
|
106 |
+
|
107 |
+
continue;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
}
|
111 |
+
}
|
112 |
+
|
113 |
+
if ($linkTagsStripped < 2) {
|
114 |
+
return 'do_not_combine';
|
115 |
+
}
|
116 |
+
|
117 |
+
return $htmlSource;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* @param $href
|
122 |
+
* @param $assetType
|
123 |
+
*
|
124 |
+
* @return bool|string
|
125 |
+
*/
|
126 |
+
public static function getLocalAssetPath($href, $assetType)
|
127 |
+
{
|
128 |
+
/*
|
129 |
+
* Validate it first
|
130 |
+
*/
|
131 |
+
// Asset's Host
|
132 |
+
$assetHost = strtolower(parse_url($href, PHP_URL_HOST));
|
133 |
+
|
134 |
+
// First check the host name
|
135 |
+
$siteDbUrl = get_option('siteurl');
|
136 |
+
$siteUrlHost = strtolower(parse_url($siteDbUrl, PHP_URL_HOST));
|
137 |
+
|
138 |
+
if ($assetHost !== $siteUrlHost) {
|
139 |
+
return false;
|
140 |
+
}
|
141 |
+
|
142 |
+
$hrefRelPath = self::getHrefRelPath($href);
|
143 |
+
|
144 |
+
if (strpos($hrefRelPath, '/') === 0) {
|
145 |
+
$hrefRelPath = substr($hrefRelPath, 1);
|
146 |
+
}
|
147 |
+
|
148 |
+
$localAssetPath = ABSPATH . $hrefRelPath;
|
149 |
+
|
150 |
+
if (strpos($localAssetPath, '?ver=') !== false) {
|
151 |
+
list($localAssetPathAlt,) = explode('?ver=', $localAssetPath);
|
152 |
+
$localAssetPath = $localAssetPathAlt;
|
153 |
+
}
|
154 |
+
|
155 |
+
// The file needs to have the .css or .js extension (not .php)
|
156 |
+
// as it will be later read via file_get_contents()
|
157 |
+
if (strrchr($localAssetPath, '.') === '.'.$assetType && file_exists($localAssetPath)) {
|
158 |
+
return $localAssetPath;
|
159 |
+
}
|
160 |
+
|
161 |
+
return false;
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* @param $href
|
166 |
+
*
|
167 |
+
* @return mixed
|
168 |
+
*/
|
169 |
+
public static function getHrefRelPath($href)
|
170 |
+
{
|
171 |
+
$parseUrl = parse_url($href);
|
172 |
+
$hrefHost = $parseUrl['host'];
|
173 |
+
|
174 |
+
// Sometimes host is different on Staging websites such as the ones from Siteground
|
175 |
+
// e.g. staging1.domain.com and domain.com
|
176 |
+
// We need to make sure that the URI path is fetched correctly based on the host value from the $href
|
177 |
+
$siteDbUrl = get_option('siteurl');
|
178 |
+
$parseDbSiteUrl = parse_url($siteDbUrl);
|
179 |
+
|
180 |
+
$dbSiteUrlHost = $parseDbSiteUrl['host'];
|
181 |
+
|
182 |
+
$finalBaseUrl = str_replace($dbSiteUrlHost, $hrefHost, $siteDbUrl);
|
183 |
+
|
184 |
+
return str_replace($finalBaseUrl, '', $href);
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* @param $jsonStorageFile
|
189 |
+
* @param $relPathAssetCacheDir
|
190 |
+
* @param $assetType
|
191 |
+
*
|
192 |
+
* @return array|mixed|object
|
193 |
+
*/
|
194 |
+
public static function getAssetCachedData($jsonStorageFile, $relPathAssetCacheDir, $assetType)
|
195 |
+
{
|
196 |
+
// Only clean request URIs allowed
|
197 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
198 |
+
return array();
|
199 |
+
}
|
200 |
+
|
201 |
+
$requestUri = $_SERVER['REQUEST_URI'];
|
202 |
+
$requestUriPart = $requestUri;
|
203 |
+
|
204 |
+
if ($requestUri === '/') {
|
205 |
+
$requestUriPart = '';
|
206 |
+
}
|
207 |
+
|
208 |
+
$dirToFilename = WP_CONTENT_DIR . dirname($relPathAssetCacheDir).'/_storage/'
|
209 |
+
.parse_url(site_url(), PHP_URL_HOST).
|
210 |
+
$requestUriPart.'/';
|
211 |
+
|
212 |
+
$dirToFilename = str_replace('//', '/', $dirToFilename);
|
213 |
+
|
214 |
+
$assetsFile = $dirToFilename . self::filterStorageFileName($jsonStorageFile);
|
215 |
+
|
216 |
+
if ($assetType === 'css') {
|
217 |
+
$cachedAssetsFileExpiresIn = CombineCss::$cachedCssAssetsFileExpiresIn;
|
218 |
+
}
|
219 |
+
else {
|
220 |
+
return array();
|
221 |
+
}
|
222 |
+
|
223 |
+
// Delete cached file after it expired as it will be regenerated
|
224 |
+
if (filemtime($assetsFile) < (time() - 1 * $cachedAssetsFileExpiresIn)) {
|
225 |
+
self::clearAssetCachedData($jsonStorageFile, $relPathAssetCacheDir);
|
226 |
+
return array();
|
227 |
+
}
|
228 |
+
|
229 |
+
$optionValue = @file_get_contents($assetsFile);
|
230 |
+
|
231 |
+
if ($optionValue) {
|
232 |
+
$optionValueArray = json_decode($optionValue, ARRAY_A);
|
233 |
+
|
234 |
+
$uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
|
235 |
+
$linkHrefs = $optionValueArray['link_hrefs'];
|
236 |
+
|
237 |
+
if ($uriToFinalCssFile) {
|
238 |
+
return array(
|
239 |
+
'uri_final_css_file' => $uriToFinalCssFile,
|
240 |
+
'local_final_css_file' => WP_CONTENT_DIR . $relPathAssetCacheDir . $uriToFinalCssFile,
|
241 |
+
'link_hrefs' => array_map( function ( $linkHref ) {
|
242 |
+
return str_replace( '{site_url}', site_url(), $linkHref );
|
243 |
+
}, $linkHrefs )
|
244 |
+
);
|
245 |
+
}
|
246 |
+
|
247 |
+
}
|
248 |
+
|
249 |
+
return array();
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* @param $jsonStorageFile
|
254 |
+
* @param $relPathAssetCacheDir
|
255 |
+
* @param $list
|
256 |
+
*/
|
257 |
+
public static function setAssetCachedData($jsonStorageFile, $relPathAssetCacheDir, $list)
|
258 |
+
{
|
259 |
+
// Only clean request URIs allowed
|
260 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
261 |
+
return;
|
262 |
+
}
|
263 |
+
|
264 |
+
$requestUri = $_SERVER['REQUEST_URI'];
|
265 |
+
$requestUriPart = $requestUri;
|
266 |
+
|
267 |
+
if ($requestUri === '/') {
|
268 |
+
$requestUriPart = '';
|
269 |
+
}
|
270 |
+
|
271 |
+
$dirToFilename = WP_CONTENT_DIR . dirname($relPathAssetCacheDir).'/_storage/'
|
272 |
+
.parse_url(site_url(), PHP_URL_HOST).
|
273 |
+
$requestUriPart.'/';
|
274 |
+
|
275 |
+
$dirToFilename = str_replace('//', '/', $dirToFilename);
|
276 |
+
@mkdir($dirToFilename, 0755, true);
|
277 |
+
|
278 |
+
$assetsFile = $dirToFilename . self::filterStorageFileName($jsonStorageFile);
|
279 |
+
|
280 |
+
// CSS JSON FILE DATA
|
281 |
+
$assetsValue = json_encode(
|
282 |
+
array(
|
283 |
+
'uri_to_final_css_file' => $list['uri_to_final_css_file'],
|
284 |
+
'link_hrefs' => array_map( function ( $linkHref ) {
|
285 |
+
return str_replace( site_url(), '{site_url}', $linkHref );
|
286 |
+
}, $list['link_hrefs'] )
|
287 |
+
)
|
288 |
+
);
|
289 |
+
|
290 |
+
@file_put_contents($assetsFile, $assetsValue);
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* @param $jsonStorageFile
|
295 |
+
* @param $relPathAssetCacheDir
|
296 |
+
*/
|
297 |
+
public static function clearAssetCachedData($jsonStorageFile, $relPathAssetCacheDir)
|
298 |
+
{
|
299 |
+
// Only clean request URIs allowed
|
300 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
301 |
+
return;
|
302 |
+
}
|
303 |
+
|
304 |
+
$requestUri = $_SERVER['REQUEST_URI'];
|
305 |
+
$requestUriPart = $requestUri;
|
306 |
+
|
307 |
+
if ($requestUri === '/') {
|
308 |
+
$requestUriPart = '';
|
309 |
+
}
|
310 |
+
|
311 |
+
$dirToFilename = WP_CONTENT_DIR . dirname($relPathAssetCacheDir) . '/_storage/'
|
312 |
+
. parse_url(site_url(), PHP_URL_HOST) .
|
313 |
+
$requestUriPart . '/';
|
314 |
+
|
315 |
+
$assetsFile = $dirToFilename.self::filterStorageFileName($jsonStorageFile);
|
316 |
+
|
317 |
+
@unlink($assetsFile);
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Clears all CSS & JS cache
|
322 |
+
*
|
323 |
+
* @param bool $redirectAfter
|
324 |
+
* @param bool $keepAssetFiles
|
325 |
+
*
|
326 |
+
* $keepCssJsFiles is kept to "true" as default
|
327 |
+
* there could be cache plugins still having cached pages that load specific merged files,
|
328 |
+
* to avoid breaking the layout/functionality
|
329 |
+
*/
|
330 |
+
public function clearAllCache($redirectAfter = false, $keepAssetFiles = true)
|
331 |
+
{
|
332 |
+
if (self::doNotClearAllCache()) {
|
333 |
+
return;
|
334 |
+
}
|
335 |
+
|
336 |
+
$fileExtToRemove = array('.json');
|
337 |
+
|
338 |
+
// Also delete .css
|
339 |
+
if (! $keepAssetFiles) {
|
340 |
+
$fileExtToRemove[] = '.css';
|
341 |
+
}
|
342 |
+
|
343 |
+
$assetCleanUpCacheDir = dirname(WP_CONTENT_DIR . self::$relPathPluginCacheDir);
|
344 |
+
$storageDir = $assetCleanUpCacheDir.'/_storage';
|
345 |
+
|
346 |
+
$dirItems = new \RecursiveDirectoryIterator($assetCleanUpCacheDir, \RecursiveDirectoryIterator::SKIP_DOTS);
|
347 |
+
|
348 |
+
$storageEmptyDirs = array();
|
349 |
+
|
350 |
+
foreach(new \RecursiveIteratorIterator($dirItems, \RecursiveIteratorIterator::SELF_FIRST) as $item) {
|
351 |
+
$fileBaseName = strrchr($item, '/');
|
352 |
+
|
353 |
+
if (is_file($item) && in_array(strrchr($fileBaseName, '.'), $fileExtToRemove)) {
|
354 |
+
@unlink($item);
|
355 |
+
} else {
|
356 |
+
if ( strpos( $item, $storageDir ) !== false && $item != $storageDir ) {
|
357 |
+
$storageEmptyDirs[] = $item;
|
358 |
+
}
|
359 |
+
}
|
360 |
+
}
|
361 |
+
|
362 |
+
foreach (array_reverse($storageEmptyDirs) as $storageEmptyDir) {
|
363 |
+
@rmdir($storageEmptyDir);
|
364 |
+
}
|
365 |
+
|
366 |
+
if ( $redirectAfter && wp_get_referer() ) {
|
367 |
+
wp_safe_redirect( wp_get_referer() );
|
368 |
+
}
|
369 |
+
}
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Prevent clear cache function in the following situations
|
373 |
+
*
|
374 |
+
* @return bool
|
375 |
+
*/
|
376 |
+
public static function doNotClearAllCache()
|
377 |
+
{
|
378 |
+
// WooCommerce GET or AJAX call
|
379 |
+
if (array_key_exists('wc-ajax', $_GET) && $_GET['wc-ajax']) {
|
380 |
+
return true;
|
381 |
+
}
|
382 |
+
|
383 |
+
if (defined('WC_DOING_AJAX') && WC_DOING_AJAX === true) {
|
384 |
+
return true;
|
385 |
+
}
|
386 |
+
|
387 |
+
return false;
|
388 |
+
}
|
389 |
+
|
390 |
+
/**
|
391 |
+
* @param $fileName
|
392 |
+
*
|
393 |
+
* @return mixed
|
394 |
+
*/
|
395 |
+
public static function filterStorageFileName($fileName)
|
396 |
+
{
|
397 |
+
$current_user = wp_get_current_user();
|
398 |
+
|
399 |
+
if (isset($current_user->ID) && $current_user->ID > 0) {
|
400 |
+
$fileName = str_replace(
|
401 |
+
'{maybe-extra-info}',
|
402 |
+
'-logged-in-'.$current_user->ID,
|
403 |
+
$fileName
|
404 |
+
);
|
405 |
+
} else {
|
406 |
+
// Just clear {maybe-extra-info}
|
407 |
+
$fileName = str_replace('{maybe-extra-info}', '', $fileName);
|
408 |
+
}
|
409 |
+
|
410 |
+
return $fileName;
|
411 |
+
}
|
412 |
+
}
|
classes/{OptimizeCss.php → OptimiseAssets/CombineCss.php}
RENAMED
@@ -1,77 +1,29 @@
|
|
1 |
<?php
|
2 |
-
namespace WpAssetCleanUp;
|
|
|
|
|
|
|
3 |
|
4 |
/**
|
5 |
-
* Class
|
6 |
* @package WpAssetCleanUp
|
7 |
*/
|
8 |
-
class
|
9 |
{
|
10 |
/**
|
11 |
* @var string
|
12 |
*/
|
13 |
public static $relPathCssCacheDir = '/cache/asset-cleanup/css/'; // keep trailing slash at the end
|
14 |
|
15 |
-
/**
|
16 |
-
* @var string
|
17 |
-
*/
|
18 |
-
public static $transientCssNamePrefix = 'wpacu_css_';
|
19 |
-
|
20 |
/**
|
21 |
* @var float|int
|
22 |
*/
|
23 |
-
|
24 |
|
25 |
/**
|
26 |
-
* @var
|
27 |
-
*/
|
28 |
-
private $_transientCssName;
|
29 |
-
|
30 |
-
/**
|
31 |
-
* OptimizeCss constructor.
|
32 |
*/
|
33 |
-
public
|
34 |
-
{
|
35 |
-
add_action('switch_theme', array($this, 'clearAllCacheTransients'));
|
36 |
-
add_action('after_switch_theme', array($this, 'clearAllCacheTransients'));
|
37 |
-
|
38 |
-
// Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
|
39 |
-
if (array_key_exists('action', $_GET) && $_GET['action'] === 'purge_cache') {
|
40 |
-
add_action( 'before_rocket_clean_domain', array( $this, 'clearAllCacheTransients' ) );
|
41 |
-
}
|
42 |
-
|
43 |
-
// Is the CSS cache transient deleted? Remove the cached CSS file too
|
44 |
-
// The action below is triggered prior to transient deletion and ONLY in the front-end view (not within the Dashboard)
|
45 |
-
add_action('plugins_loaded', array($this, 'afterPluginsLoaded'));
|
46 |
-
|
47 |
-
add_action('admin_post_assetcleanup_clear_assets_cache', function() {
|
48 |
-
$this->clearAllCacheTransients(true);
|
49 |
-
});
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
*
|
54 |
-
*/
|
55 |
-
public function afterPluginsLoaded()
|
56 |
-
{
|
57 |
-
if (! is_admin() && (strpos($_SERVER['REQUEST_URI'], '?') === false)) {
|
58 |
-
$toMdFive = $_SERVER['REQUEST_URI'];
|
59 |
-
|
60 |
-
if (is_user_logged_in()) {
|
61 |
-
global $current_user;
|
62 |
-
|
63 |
-
if (isset($current_user->ID) && $current_user->ID > 0) {
|
64 |
-
$toMdFive .= '_'.$current_user->ID;
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
$this->_transientCssName = self::$transientCssNamePrefix . md5( $toMdFive );
|
69 |
-
|
70 |
-
// @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
|
71 |
-
// @TODO: Maybe adding to "Tools" page would be an option
|
72 |
-
//add_action( 'delete_transient_' . $this->transientCssName, array( $this, 'clearCssCacheFile' ) );
|
73 |
-
}
|
74 |
-
}
|
75 |
|
76 |
/**
|
77 |
*
|
@@ -90,35 +42,38 @@ class OptimizeCss
|
|
90 |
return $htmlSource;
|
91 |
}
|
92 |
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
// Speed up processing by getting the already existing final CSS file URI
|
96 |
// This will avoid parsing the HTML DOM and determine the combined URI paths for all the CSS files
|
97 |
-
$localFinalCssFileData = $this->
|
98 |
|
99 |
// $uriToFinalCssFile will always be relative ONLY within WP_CONTENT_DIR . self::$relPathCssCacheDir
|
100 |
// which is usually "wp-content/cache/asset-cleanup/css/"
|
101 |
-
|
102 |
if (! empty($localFinalCssFileData) && isset($localFinalCssFileData['local_final_css_file']) && file_exists($localFinalCssFileData['local_final_css_file'])) {
|
103 |
/*
|
104 |
* URIs to the LINK tags are already cached; No need to parse the DOM
|
105 |
*/
|
106 |
$uriToFinalCssFile = $localFinalCssFileData['uri_final_css_file'];
|
107 |
-
$linkHrefs
|
108 |
-
$
|
109 |
} else {
|
110 |
/*
|
111 |
* NO CACHING TRANSIENT; Parse the DOM
|
112 |
*/
|
113 |
// Nothing in the database records or the retrieved cached file does not exist?
|
114 |
-
$this->
|
115 |
|
116 |
// Fetch the DOM, and then set a new transient
|
117 |
$document = new \DOMDocument();
|
118 |
$document->loadHTML($htmlSource);
|
119 |
|
120 |
$documentHead = $document->getElementsByTagName('head')->item(0);
|
121 |
-
|
122 |
libxml_use_internal_errors( true );
|
123 |
|
124 |
$combinedUriPaths = $hrefUriPreloads = $localAssetsPaths = $linkHrefs = array();
|
@@ -142,12 +97,12 @@ class OptimizeCss
|
|
142 |
//$htmlSource .= $attrObj->nodeValue."\n";
|
143 |
$href = (string)$attrObj->nodeValue;
|
144 |
|
145 |
-
$localAssetPath =
|
146 |
|
147 |
if ($localAssetPath) {
|
148 |
-
$combinedUriPaths[]
|
149 |
$localAssetsPaths[$href] = $localAssetPath;
|
150 |
-
$linkHrefs[]
|
151 |
}
|
152 |
}
|
153 |
|
@@ -158,7 +113,7 @@ class OptimizeCss
|
|
158 |
}
|
159 |
|
160 |
if ($checkCssPreload && $attrObj->nodeName === 'href') {
|
161 |
-
$hrefUriPreloads[] =
|
162 |
}
|
163 |
}
|
164 |
}
|
@@ -199,60 +154,41 @@ class OptimizeCss
|
|
199 |
$uriToFinalCssFile = $maybeDoCssCombine['uri_final_css_file'];
|
200 |
|
201 |
if (file_exists($localFinalCssFile)) {
|
202 |
-
$
|
203 |
-
|
|
|
|
|
|
|
|
|
204 |
}
|
205 |
}
|
206 |
|
207 |
-
if ($
|
208 |
$finalTagUrl = WP_CONTENT_URL . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
209 |
|
210 |
$finalCssTag = <<<HTML
|
211 |
-
<link id=
|
212 |
HTML;
|
213 |
|
214 |
// Append the combine CSS Link tag right after <head> section of the website
|
215 |
// Any other <head> strings will be ignored as only the first one from the HTML source code matters
|
216 |
// e.g. some may use <head> inside a JavaScript code or part of a comment
|
217 |
-
$
|
218 |
-
$htmlSource = $this->stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource); // Strip the combined files to avoid duplicate code
|
219 |
-
}
|
220 |
-
|
221 |
-
return $htmlSource;
|
222 |
-
});
|
223 |
-
}, 1);
|
224 |
-
}
|
225 |
-
|
226 |
-
/**
|
227 |
-
* @param $linkHrefs
|
228 |
-
* @param $htmlSource
|
229 |
-
*
|
230 |
-
* @return mixed
|
231 |
-
*/
|
232 |
-
public function stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource)
|
233 |
-
{
|
234 |
-
preg_match_all('#<link[^>]*stylesheet[^>]*(>)#Usmi', $htmlSource, $matchesLinkStylesheetTags, PREG_SET_ORDER);
|
235 |
|
236 |
-
|
237 |
-
$matchedLinkStylesheetTag = $matchLinkStylesheetTag[0];
|
238 |
-
|
239 |
-
$domLink = new \DOMDocument();
|
240 |
-
$domLink->loadHTML($matchedLinkStylesheetTag);
|
241 |
|
242 |
-
|
243 |
-
|
244 |
-
continue;
|
245 |
-
}
|
246 |
|
247 |
-
|
248 |
-
if ($
|
249 |
-
|
250 |
}
|
251 |
}
|
252 |
-
}
|
253 |
-
}
|
254 |
|
255 |
-
|
|
|
|
|
256 |
}
|
257 |
|
258 |
/**
|
@@ -281,7 +217,7 @@ HTML;
|
|
281 |
$finalAssetsContents = '';
|
282 |
|
283 |
foreach ($localAssetsPaths as $assetHref => $localAssetsPath) {
|
284 |
-
$posLastSlash
|
285 |
$pathToAssetDir = substr($assetHref, 0, $posLastSlash);
|
286 |
|
287 |
$parseUrl = parse_url($pathToAssetDir);
|
@@ -303,7 +239,7 @@ HTML;
|
|
303 |
$assetContent = @file_get_contents($localAssetsPath);
|
304 |
|
305 |
if ($assetContent) {
|
306 |
-
$finalAssetsContents .=
|
307 |
}
|
308 |
}
|
309 |
|
@@ -326,78 +262,13 @@ HTML;
|
|
326 |
);
|
327 |
}
|
328 |
|
329 |
-
/**
|
330 |
-
* @return array
|
331 |
-
*/
|
332 |
-
public function getCssCachedTransient()
|
333 |
-
{
|
334 |
-
// Only clean request URIs allowed
|
335 |
-
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
336 |
-
return array();
|
337 |
-
}
|
338 |
-
|
339 |
-
$optionValue = get_transient($this->_transientCssName);
|
340 |
-
|
341 |
-
if ($optionValue) {
|
342 |
-
$optionValueArray = json_decode($optionValue, ARRAY_A);
|
343 |
-
|
344 |
-
$uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
|
345 |
-
$linkHrefs = $optionValueArray['link_hrefs'];
|
346 |
-
|
347 |
-
if ($uriToFinalCssFile) {
|
348 |
-
return array(
|
349 |
-
'uri_final_css_file' => $uriToFinalCssFile,
|
350 |
-
'local_final_css_file' => WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile,
|
351 |
-
'link_hrefs' => $linkHrefs
|
352 |
-
);
|
353 |
-
}
|
354 |
-
}
|
355 |
-
|
356 |
-
return array();
|
357 |
-
}
|
358 |
-
|
359 |
-
/**
|
360 |
-
* @param $uriToFinalCssFile
|
361 |
-
* @param array $linkHrefs
|
362 |
-
*/
|
363 |
-
public function setCssCachedTransient($uriToFinalCssFile, $linkHrefs)
|
364 |
-
{
|
365 |
-
// Only clean request URIs allowed
|
366 |
-
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
367 |
-
return;
|
368 |
-
}
|
369 |
-
|
370 |
-
$optionValue = json_encode(
|
371 |
-
array(
|
372 |
-
'request_' => $_SERVER['REQUEST_URI'],
|
373 |
-
'uri_to_final_css_file' => $uriToFinalCssFile,
|
374 |
-
'link_hrefs' => $linkHrefs
|
375 |
-
)
|
376 |
-
);
|
377 |
-
|
378 |
-
set_transient($this->_transientCssName, $optionValue, self::$_transientExpiresIn);
|
379 |
-
}
|
380 |
-
|
381 |
-
/**
|
382 |
-
*
|
383 |
-
*/
|
384 |
-
public function deleteCssCachedTransient()
|
385 |
-
{
|
386 |
-
// Only clean request URIs allowed
|
387 |
-
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
388 |
-
return;
|
389 |
-
}
|
390 |
-
|
391 |
-
delete_transient($this->_transientCssName);
|
392 |
-
}
|
393 |
-
|
394 |
/**
|
395 |
* @param $cssContent
|
396 |
* @param $appendBefore
|
397 |
*
|
398 |
* @return mixed
|
399 |
*/
|
400 |
-
public function maybeFixCssBackgroundUrls($cssContent, $appendBefore)
|
401 |
{
|
402 |
$cssContent = str_replace(
|
403 |
array('url("../', "url('../", 'url(../'),
|
@@ -451,72 +322,6 @@ HTML;
|
|
451 |
return $cssContent;
|
452 |
}
|
453 |
|
454 |
-
/**
|
455 |
-
* @param $href
|
456 |
-
*
|
457 |
-
* @return bool|string
|
458 |
-
*/
|
459 |
-
public static function getLocalAssetPath($href)
|
460 |
-
{
|
461 |
-
/*
|
462 |
-
* Validate it first
|
463 |
-
*/
|
464 |
-
// Asset's Host
|
465 |
-
$assetHost = strtolower(parse_url($href, PHP_URL_HOST));
|
466 |
-
|
467 |
-
// First check the host name
|
468 |
-
$siteUrl = get_option('siteurl');
|
469 |
-
$siteUrlHost = strtolower(parse_url($siteUrl, PHP_URL_HOST));
|
470 |
-
|
471 |
-
if ($assetHost !== $siteUrlHost) {
|
472 |
-
return false;
|
473 |
-
}
|
474 |
-
|
475 |
-
$hrefRelPath = self::getHrefRelPath($href);
|
476 |
-
|
477 |
-
if (strpos($hrefRelPath, '/') === 0) {
|
478 |
-
$hrefRelPath = substr($hrefRelPath, 1);
|
479 |
-
}
|
480 |
-
|
481 |
-
$localAssetPath = ABSPATH . $hrefRelPath;
|
482 |
-
|
483 |
-
//file_put_contents(WP_CONTENT_DIR . '/cache/asset-cleanup/css/data.log', $localAssetPath);
|
484 |
-
|
485 |
-
if (strpos($localAssetPath, '?ver=') !== false) {
|
486 |
-
list($localAssetPathAlt,) = explode('?ver=', $localAssetPath);
|
487 |
-
$localAssetPath = $localAssetPathAlt;
|
488 |
-
}
|
489 |
-
|
490 |
-
if (strrchr($localAssetPath, '.') === '.css' && file_exists($localAssetPath)) {
|
491 |
-
return $localAssetPath;
|
492 |
-
}
|
493 |
-
|
494 |
-
return false;
|
495 |
-
}
|
496 |
-
|
497 |
-
/**
|
498 |
-
* @param $href
|
499 |
-
*
|
500 |
-
* @return mixed
|
501 |
-
*/
|
502 |
-
public static function getHrefRelPath($href)
|
503 |
-
{
|
504 |
-
$parseUrl = parse_url($href);
|
505 |
-
$hrefHost = $parseUrl['host'];
|
506 |
-
|
507 |
-
// Sometimes host is different on Staging websites such as the ones from Siteground
|
508 |
-
// e.g. staging1.domain.com and domain.com
|
509 |
-
// We need to make sure that the URI path is fetched correctly based on the host value from the $href
|
510 |
-
$siteDbUrl = get_option('siteurl');
|
511 |
-
$parseDbSiteUrl = parse_url($siteDbUrl);
|
512 |
-
|
513 |
-
$dbSiteUrlHost = $parseDbSiteUrl['host'];
|
514 |
-
|
515 |
-
$finalBaseUrl = str_replace($dbSiteUrlHost, $hrefHost, $siteDbUrl);
|
516 |
-
|
517 |
-
return str_replace($finalBaseUrl, '', $href);
|
518 |
-
}
|
519 |
-
|
520 |
/**
|
521 |
* @return bool
|
522 |
*/
|
@@ -526,14 +331,23 @@ HTML;
|
|
526 |
// Always in the front-end view
|
527 |
// Do not combine if there's a POST request as there could be assets loading conditionally
|
528 |
// that might not be needed when the page is accessed without POST, making the final CSS file larger
|
529 |
-
if (! empty($_POST) ||
|
530 |
return false; // Do not combine
|
531 |
}
|
532 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
$pluginSettings = Main::instance()->settings;
|
534 |
|
535 |
-
if ($pluginSettings['test_mode']) {
|
536 |
-
return false; // Do not combine anything if "Test Mode" is ON
|
537 |
}
|
538 |
|
539 |
if ($pluginSettings['combine_loaded_css'] === '') {
|
@@ -552,92 +366,4 @@ HTML;
|
|
552 |
return false;
|
553 |
}
|
554 |
|
555 |
-
/**
|
556 |
-
* @param bool $redirectAfter
|
557 |
-
*/
|
558 |
-
public function clearAllCacheTransients($redirectAfter = false)
|
559 |
-
{
|
560 |
-
if ($this->doNotClearAllCache()) {
|
561 |
-
return;
|
562 |
-
}
|
563 |
-
|
564 |
-
global $wpdb;
|
565 |
-
|
566 |
-
// First, select all and get the combined CSS file names in order to be deleted
|
567 |
-
// As the files will be regenerated on page loads
|
568 |
-
$transientNamePrefix = self::$transientCssNamePrefix;
|
569 |
-
|
570 |
-
$sqlSelect = <<<SQL
|
571 |
-
SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name LIKE '_transient_{$transientNamePrefix}%'
|
572 |
-
SQL;
|
573 |
-
$sqlResults = $wpdb->get_results($sqlSelect, ARRAY_A);
|
574 |
-
|
575 |
-
foreach ($sqlResults as $sqlResult) {
|
576 |
-
// 53 = length of the following
|
577 |
-
// _transient_ (11) + self::$transientCssNamePrefix + MD5 value (always 32)
|
578 |
-
$optionNameValidLength = 11 + strlen(self::$transientCssNamePrefix) + 32;
|
579 |
-
|
580 |
-
// nothing is left by chance to make sure the right transients gets deleted
|
581 |
-
if (strlen($sqlResult['option_name']) === $optionNameValidLength) {
|
582 |
-
delete_transient( str_replace( '_transient_', '', $sqlResult['option_name'] ) );
|
583 |
-
// @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
|
584 |
-
//$this->removeCachedCssFile( $sqlResult['option_value'] );
|
585 |
-
}
|
586 |
-
}
|
587 |
-
|
588 |
-
if ( $redirectAfter && wp_get_referer() ) {
|
589 |
-
wp_safe_redirect( wp_get_referer() );
|
590 |
-
}
|
591 |
-
}
|
592 |
-
|
593 |
-
/**
|
594 |
-
* Prevent clear cache function in the following situations
|
595 |
-
*
|
596 |
-
* @return bool
|
597 |
-
*/
|
598 |
-
public function doNotClearAllCache()
|
599 |
-
{
|
600 |
-
// WooCommerce GET or AJAX call
|
601 |
-
if (array_key_exists('wc-ajax', $_GET) && $_GET['wc-ajax']) {
|
602 |
-
return true;
|
603 |
-
}
|
604 |
-
|
605 |
-
if (defined('WC_DOING_AJAX') && WC_DOING_AJAX === true) {
|
606 |
-
return true;
|
607 |
-
}
|
608 |
-
|
609 |
-
return false;
|
610 |
-
}
|
611 |
-
|
612 |
-
/**
|
613 |
-
* Triggers in the front-end view only for the current viewed page
|
614 |
-
*/
|
615 |
-
/*
|
616 |
-
public function clearCssCacheFile()
|
617 |
-
{
|
618 |
-
$optionValue = get_transient($this->transientCssName);
|
619 |
-
|
620 |
-
if ($optionValue) {
|
621 |
-
$this->removeCachedCssFile($optionValue);
|
622 |
-
}
|
623 |
-
}
|
624 |
-
*/
|
625 |
-
|
626 |
-
/**
|
627 |
-
* @param $optionValue
|
628 |
-
*/
|
629 |
-
/*
|
630 |
-
public function removeCachedCssFile($optionValue)
|
631 |
-
{
|
632 |
-
$optionValueArray = json_decode($optionValue, ARRAY_A);
|
633 |
-
$uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
|
634 |
-
|
635 |
-
$fullLocalPathToCachedCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
636 |
-
|
637 |
-
// Check the extension to make sure a CSS file is in fact deleted from the cache
|
638 |
-
if (file_exists($fullLocalPathToCachedCssFile) && strrchr($uriToFinalCssFile, '.') === '.css') {
|
639 |
-
@unlink($fullLocalPathToCachedCssFile);
|
640 |
-
}
|
641 |
}
|
642 |
-
*/
|
643 |
-
}
|
1 |
<?php
|
2 |
+
namespace WpAssetCleanUp\OptimiseAssets;
|
3 |
+
|
4 |
+
use WpAssetCleanUp\Main;
|
5 |
+
use WpAssetCleanUp\Menu;
|
6 |
|
7 |
/**
|
8 |
+
* Class CombineCss
|
9 |
* @package WpAssetCleanUp
|
10 |
*/
|
11 |
+
class CombineCss
|
12 |
{
|
13 |
/**
|
14 |
* @var string
|
15 |
*/
|
16 |
public static $relPathCssCacheDir = '/cache/asset-cleanup/css/'; // keep trailing slash at the end
|
17 |
|
|
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
* @var float|int
|
20 |
*/
|
21 |
+
public static $cachedCssAssetsFileExpiresIn = 60 * 60 * 12; // 8 hours in seconds
|
22 |
|
23 |
/**
|
24 |
+
* @var string
|
|
|
|
|
|
|
|
|
|
|
25 |
*/
|
26 |
+
public $jsonStorageFile = 'css-combined{maybe-extra-info}.json';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
/**
|
29 |
*
|
42 |
return $htmlSource;
|
43 |
}
|
44 |
|
45 |
+
// There has to be at least one "<link", otherwise, it could be a feed request or something similar (not page, post, homepage etc.)
|
46 |
+
if (stripos($htmlSource, '<link') === false) {
|
47 |
+
return $htmlSource;
|
48 |
+
}
|
49 |
+
|
50 |
+
$cachedFileExists = false;
|
51 |
|
52 |
// Speed up processing by getting the already existing final CSS file URI
|
53 |
// This will avoid parsing the HTML DOM and determine the combined URI paths for all the CSS files
|
54 |
+
$localFinalCssFileData = CombineCommon::getAssetCachedData($this->jsonStorageFile, self::$relPathCssCacheDir, 'css');
|
55 |
|
56 |
// $uriToFinalCssFile will always be relative ONLY within WP_CONTENT_DIR . self::$relPathCssCacheDir
|
57 |
// which is usually "wp-content/cache/asset-cleanup/css/"
|
|
|
58 |
if (! empty($localFinalCssFileData) && isset($localFinalCssFileData['local_final_css_file']) && file_exists($localFinalCssFileData['local_final_css_file'])) {
|
59 |
/*
|
60 |
* URIs to the LINK tags are already cached; No need to parse the DOM
|
61 |
*/
|
62 |
$uriToFinalCssFile = $localFinalCssFileData['uri_final_css_file'];
|
63 |
+
$linkHrefs = $localFinalCssFileData['link_hrefs'];
|
64 |
+
$cachedFileExists = true;
|
65 |
} else {
|
66 |
/*
|
67 |
* NO CACHING TRANSIENT; Parse the DOM
|
68 |
*/
|
69 |
// Nothing in the database records or the retrieved cached file does not exist?
|
70 |
+
CombineCommon::clearAssetCachedData($this->jsonStorageFile, self::$relPathCssCacheDir);
|
71 |
|
72 |
// Fetch the DOM, and then set a new transient
|
73 |
$document = new \DOMDocument();
|
74 |
$document->loadHTML($htmlSource);
|
75 |
|
76 |
$documentHead = $document->getElementsByTagName('head')->item(0);
|
|
|
77 |
libxml_use_internal_errors( true );
|
78 |
|
79 |
$combinedUriPaths = $hrefUriPreloads = $localAssetsPaths = $linkHrefs = array();
|
97 |
//$htmlSource .= $attrObj->nodeValue."\n";
|
98 |
$href = (string)$attrObj->nodeValue;
|
99 |
|
100 |
+
$localAssetPath = CombineCommon::getLocalAssetPath($href, 'css');
|
101 |
|
102 |
if ($localAssetPath) {
|
103 |
+
$combinedUriPaths[] = CombineCommon::getHrefRelPath($href);
|
104 |
$localAssetsPaths[$href] = $localAssetPath;
|
105 |
+
$linkHrefs[] = $href;
|
106 |
}
|
107 |
}
|
108 |
|
113 |
}
|
114 |
|
115 |
if ($checkCssPreload && $attrObj->nodeName === 'href') {
|
116 |
+
$hrefUriPreloads[] = CombineCommon::getHrefRelPath($attrObj->nodeValue);
|
117 |
}
|
118 |
}
|
119 |
}
|
154 |
$uriToFinalCssFile = $maybeDoCssCombine['uri_final_css_file'];
|
155 |
|
156 |
if (file_exists($localFinalCssFile)) {
|
157 |
+
$cachedFileExists = true;
|
158 |
+
CombineCommon::setAssetCachedData(
|
159 |
+
$this->jsonStorageFile,
|
160 |
+
self::$relPathCssCacheDir,
|
161 |
+
array('uri_to_final_css_file' => $uriToFinalCssFile, 'link_hrefs' => $linkHrefs)
|
162 |
+
);
|
163 |
}
|
164 |
}
|
165 |
|
166 |
+
if ($cachedFileExists) {
|
167 |
$finalTagUrl = WP_CONTENT_URL . self::$relPathCssCacheDir . $uriToFinalCssFile;
|
168 |
|
169 |
$finalCssTag = <<<HTML
|
170 |
+
<link id='asset-cleanup-combined-css' rel='stylesheet' href='{$finalTagUrl}' type='text/css' media='all' />
|
171 |
HTML;
|
172 |
|
173 |
// Append the combine CSS Link tag right after <head> section of the website
|
174 |
// Any other <head> strings will be ignored as only the first one from the HTML source code matters
|
175 |
// e.g. some may use <head> inside a JavaScript code or part of a comment
|
176 |
+
$htmlSourceBeforeAnyLinkTagReplacement = $htmlSource;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
|
178 |
+
$htmlSource = preg_replace('#<head>#si', '<head>'."\n" . $finalCssTag . "\n", $htmlSource, 1);
|
|
|
|
|
|
|
|
|
179 |
|
180 |
+
$htmlSourceBeforeLinkTagLoopReplacement = $htmlSource;
|
181 |
+
$htmlSource = CombineCommon::stripJustCombinedFileTags($linkHrefs, $htmlSource, 'css'); // Strip the combined files to avoid duplicate code
|
|
|
|
|
182 |
|
183 |
+
// There should be at least two replacements made
|
184 |
+
if ($htmlSource === 'do_not_combine') {
|
185 |
+
return $htmlSourceBeforeAnyLinkTagReplacement;
|
186 |
}
|
187 |
}
|
|
|
|
|
188 |
|
189 |
+
return $htmlSource;
|
190 |
+
});
|
191 |
+
}, 1);
|
192 |
}
|
193 |
|
194 |
/**
|
217 |
$finalAssetsContents = '';
|
218 |
|
219 |
foreach ($localAssetsPaths as $assetHref => $localAssetsPath) {
|
220 |
+
$posLastSlash = strrpos($assetHref, '/');
|
221 |
$pathToAssetDir = substr($assetHref, 0, $posLastSlash);
|
222 |
|
223 |
$parseUrl = parse_url($pathToAssetDir);
|
239 |
$assetContent = @file_get_contents($localAssetsPath);
|
240 |
|
241 |
if ($assetContent) {
|
242 |
+
$finalAssetsContents .= self::maybeFixCssBackgroundUrls($assetContent, $pathToAssetDir . '/') . "\n\n";
|
243 |
}
|
244 |
}
|
245 |
|
262 |
);
|
263 |
}
|
264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
/**
|
266 |
* @param $cssContent
|
267 |
* @param $appendBefore
|
268 |
*
|
269 |
* @return mixed
|
270 |
*/
|
271 |
+
public static function maybeFixCssBackgroundUrls($cssContent, $appendBefore)
|
272 |
{
|
273 |
$cssContent = str_replace(
|
274 |
array('url("../', "url('../", 'url(../'),
|
322 |
return $cssContent;
|
323 |
}
|
324 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
/**
|
326 |
* @return bool
|
327 |
*/
|
331 |
// Always in the front-end view
|
332 |
// Do not combine if there's a POST request as there could be assets loading conditionally
|
333 |
// that might not be needed when the page is accessed without POST, making the final CSS file larger
|
334 |
+
if (! empty($_POST) || is_admin()) {
|
335 |
return false; // Do not combine
|
336 |
}
|
337 |
|
338 |
+
// Only clean request URIs allowed
|
339 |
+
if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
|
340 |
+
return false;
|
341 |
+
}
|
342 |
+
|
343 |
+
if (! CombineCommon::doCombineIsRegularPage()) {
|
344 |
+
return false;
|
345 |
+
}
|
346 |
+
|
347 |
$pluginSettings = Main::instance()->settings;
|
348 |
|
349 |
+
if ($pluginSettings['test_mode'] && ! Menu::userCanManageAssets()) {
|
350 |
+
return false; // Do not combine anything if "Test Mode" is ON and the user is in guest mode (not logged-in)
|
351 |
}
|
352 |
|
353 |
if ($pluginSettings['combine_loaded_css'] === '') {
|
366 |
return false;
|
367 |
}
|
368 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
369 |
}
|
|
|
|
classes/OwnAssets.php
CHANGED
@@ -15,11 +15,6 @@ class OwnAssets
|
|
15 |
*/
|
16 |
public $loadPluginAssets = false; // default
|
17 |
|
18 |
-
/**
|
19 |
-
* @var bool
|
20 |
-
*/
|
21 |
-
public $isTaxonomyEditPage = false;
|
22 |
-
|
23 |
/**
|
24 |
*
|
25 |
*/
|
@@ -124,11 +119,7 @@ class OwnAssets
|
|
124 |
$this->loadPluginAssets = true;
|
125 |
}
|
126 |
|
127 |
-
if ($this->
|
128 |
-
$this->loadPluginAssets = true;
|
129 |
-
}
|
130 |
-
|
131 |
-
if (! $this->loadPluginAssets) {
|
132 |
return;
|
133 |
}
|
134 |
|
@@ -191,9 +182,9 @@ class OwnAssets
|
|
191 |
$postId = 0; // for home page
|
192 |
}
|
193 |
|
194 |
-
// Not home page (posts list)
|
195 |
// See if the individual post is published to continue
|
196 |
-
if ($postId > 0
|
197 |
$postStatus = get_post_status($postId);
|
198 |
|
199 |
if (! $postStatus) {
|
@@ -340,18 +331,4 @@ HTML;
|
|
340 |
return $src;
|
341 |
}
|
342 |
|
343 |
-
|
344 |
-
* @return bool
|
345 |
-
*/
|
346 |
-
public function isTaxonomyEditPage()
|
347 |
-
{
|
348 |
-
if ((!$this->isTaxonomyEditPage)
|
349 |
-
&& Main::instance()->wpacuProEnabled()
|
350 |
-
&& class_exists('\\WpAssetCleanUpPro\\MainPro')) {
|
351 |
-
$mainPro = new \WpAssetCleanUpPro\MainPro();
|
352 |
-
$this->isTaxonomyEditPage = $mainPro->isTaxonomyEditPage();
|
353 |
-
}
|
354 |
-
|
355 |
-
return $this->isTaxonomyEditPage;
|
356 |
-
}
|
357 |
-
}
|
15 |
*/
|
16 |
public $loadPluginAssets = false; // default
|
17 |
|
|
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
*
|
20 |
*/
|
119 |
$this->loadPluginAssets = true;
|
120 |
}
|
121 |
|
122 |
+
if (! $this->loadPluginAssets) {
|
|
|
|
|
|
|
|
|
123 |
return;
|
124 |
}
|
125 |
|
182 |
$postId = 0; // for home page
|
183 |
}
|
184 |
|
185 |
+
// Not home page (posts list)? Does it have a post ID?
|
186 |
// See if the individual post is published to continue
|
187 |
+
if ($postId > 0) {
|
188 |
$postStatus = get_post_status($postId);
|
189 |
|
190 |
if (! $postStatus) {
|
331 |
return $src;
|
332 |
}
|
333 |
|
334 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/Plugin.php
CHANGED
@@ -75,7 +75,7 @@ class Plugin
|
|
75 |
*/
|
76 |
public static function createCacheFoldersFiles()
|
77 |
{
|
78 |
-
$cacheCssDir = WP_CONTENT_DIR .
|
79 |
|
80 |
$emptyPhpFileContents = <<<TEXT
|
81 |
<?php
|
75 |
*/
|
76 |
public static function createCacheFoldersFiles()
|
77 |
{
|
78 |
+
$cacheCssDir = WP_CONTENT_DIR . OptimiseAssets\CombineCss::$relPathCssCacheDir;
|
79 |
|
80 |
$emptyPhpFileContents = <<<TEXT
|
81 |
<?php
|
classes/Settings.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
|
|
|
|
4 |
/**
|
5 |
* Class Settings
|
6 |
* @package WpAssetCleanUp
|
@@ -227,7 +229,7 @@ class Settings
|
|
227 |
*/
|
228 |
public function update($settings)
|
229 |
{
|
230 |
-
|
231 |
|
232 |
$wpacuUpdate = new Update;
|
233 |
|
@@ -296,20 +298,10 @@ class Settings
|
|
296 |
*
|
297 |
*/
|
298 |
public static function clearAllCache()
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
|
304 |
-
|
305 |
-
/*
|
306 |
-
add_action('init', function() {
|
307 |
-
if ( function_exists( 'rocket_clean_domain' ) ) {
|
308 |
-
try {
|
309 |
-
@rocket_clean_domain();
|
310 |
-
} catch ( \Exception $e ) {}
|
311 |
-
}
|
312 |
-
});
|
313 |
-
*/
|
314 |
-
}
|
315 |
}
|
1 |
<?php
|
2 |
namespace WpAssetCleanUp;
|
3 |
|
4 |
+
use WpAssetCleanUp\OptimiseAssets\CombineCommon;
|
5 |
+
|
6 |
/**
|
7 |
* Class Settings
|
8 |
* @package WpAssetCleanUp
|
229 |
*/
|
230 |
public function update($settings)
|
231 |
{
|
232 |
+
CombineCommon::clearAllCache();
|
233 |
|
234 |
$wpacuUpdate = new Update;
|
235 |
|
298 |
*
|
299 |
*/
|
300 |
public static function clearAllCache()
|
301 |
+
{
|
302 |
+
// Clear "Combined CSS/JS Loaded Files" Cache
|
303 |
+
$combineCommon = new OptimiseAssets\CombineCommon();
|
304 |
+
$combineCommon->clearAllCache();
|
305 |
|
306 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
}
|
classes/Sorting.php
CHANGED
@@ -61,7 +61,6 @@ class Sorting
|
|
61 |
public static function appendLocation($list)
|
62 |
{
|
63 |
$pluginsUrl = plugins_url();
|
64 |
-
//$currentTheme = wp_get_theme();
|
65 |
|
66 |
$urlsToThemeDirs = array();
|
67 |
|
@@ -77,25 +76,10 @@ class Sorting
|
|
77 |
}
|
78 |
|
79 |
$urlsToThemeDirs = array_unique($urlsToThemeDirs);
|
80 |
-
//echo '<pre>'; print_r($urlsToThemeDirs);
|
81 |
-
|
82 |
-
/*
|
83 |
-
$relPluginsPath = dirname(str_replace(ABSPATH, '', WPACU_PLUGIN_DIR)).'/';
|
84 |
-
|
85 |
-
if ($relPluginsPath{0} !== '/') {
|
86 |
-
$relPluginsPath = '/'.$relPluginsPath;
|
87 |
-
}
|
88 |
-
*/
|
89 |
-
|
90 |
-
//$locations = array();
|
91 |
|
92 |
foreach (array('styles', 'scripts') as $assetType) {
|
93 |
foreach ( $list[$assetType] as $indexNo => $asset ) {
|
94 |
-
|
95 |
-
if (! (isset($asset->src) && $asset->src)) {
|
96 |
-
continue;
|
97 |
-
}
|
98 |
-
*/
|
99 |
$src = isset($asset->src) ? $asset->src : '';
|
100 |
|
101 |
if (strpos($src,'/wp-includes/') === 0) {
|
@@ -115,26 +99,21 @@ class Sorting
|
|
115 |
$asset->locationMain = 'plugins';
|
116 |
$asset->locationChild = $pluginDir;
|
117 |
|
118 |
-
|
119 |
-
} else {
|
120 |
$isWithinThemes = false;
|
121 |
|
122 |
foreach ( $urlsToThemeDirs as $urlToThemeDir ) {
|
123 |
$srcRel = str_replace(site_url(),'', $src);
|
124 |
-
//echo $src . ' - '. $urlToThemeDir. ' = '.stripos( $src, $urlToThemeDir ).'<br />';
|
125 |
|
126 |
if ( strpos( $srcRel, $urlToThemeDir ) !== false ) {
|
127 |
$isWithinThemes = true;
|
128 |
|
129 |
-
//echo $urlToThemeDir.'<br />';
|
130 |
-
|
131 |
$themeDir = substr(strrchr(trim($urlToThemeDir, '/'), '/'), 1);
|
132 |
|
133 |
$asset->locationMain = 'themes';
|
134 |
$asset->locationChild = $themeDir;
|
135 |
break;
|
136 |
-
|
137 |
-
}
|
138 |
}
|
139 |
|
140 |
// Default: "External"
|
@@ -142,8 +121,7 @@ class Sorting
|
|
142 |
// Outside "themes", "plugins" and "wp-includes"
|
143 |
$asset->locationMain = 'external';
|
144 |
$asset->locationChild = 'none';
|
145 |
-
|
146 |
-
}
|
147 |
}
|
148 |
|
149 |
$list[$assetType][$indexNo] = $asset;
|
61 |
public static function appendLocation($list)
|
62 |
{
|
63 |
$pluginsUrl = plugins_url();
|
|
|
64 |
|
65 |
$urlsToThemeDirs = array();
|
66 |
|
76 |
}
|
77 |
|
78 |
$urlsToThemeDirs = array_unique($urlsToThemeDirs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
80 |
foreach (array('styles', 'scripts') as $assetType) {
|
81 |
foreach ( $list[$assetType] as $indexNo => $asset ) {
|
82 |
+
|
|
|
|
|
|
|
|
|
83 |
$src = isset($asset->src) ? $asset->src : '';
|
84 |
|
85 |
if (strpos($src,'/wp-includes/') === 0) {
|
99 |
$asset->locationMain = 'plugins';
|
100 |
$asset->locationChild = $pluginDir;
|
101 |
|
102 |
+
} else {
|
|
|
103 |
$isWithinThemes = false;
|
104 |
|
105 |
foreach ( $urlsToThemeDirs as $urlToThemeDir ) {
|
106 |
$srcRel = str_replace(site_url(),'', $src);
|
|
|
107 |
|
108 |
if ( strpos( $srcRel, $urlToThemeDir ) !== false ) {
|
109 |
$isWithinThemes = true;
|
110 |
|
|
|
|
|
111 |
$themeDir = substr(strrchr(trim($urlToThemeDir, '/'), '/'), 1);
|
112 |
|
113 |
$asset->locationMain = 'themes';
|
114 |
$asset->locationChild = $themeDir;
|
115 |
break;
|
116 |
+
}
|
|
|
117 |
}
|
118 |
|
119 |
// Default: "External"
|
121 |
// Outside "themes", "plugins" and "wp-includes"
|
122 |
$asset->locationMain = 'external';
|
123 |
$asset->locationChild = 'none';
|
124 |
+
}
|
|
|
125 |
}
|
126 |
|
127 |
$list[$assetType][$indexNo] = $asset;
|
classes/Tools.php
CHANGED
@@ -319,8 +319,6 @@ SQL;
|
|
319 |
|
320 |
// Remove Asset CleanUp's cache transients
|
321 |
$transientLikes = array(
|
322 |
-
'_transient_timeout_'.OptimizeCss::$transientCssNamePrefix,
|
323 |
-
'_transient_'.OptimizeCss::$transientCssNamePrefix,
|
324 |
'_transient_timeout_wpacu_',
|
325 |
'_transient_wpacu_',
|
326 |
);
|
@@ -337,6 +335,9 @@ SQL;
|
|
337 |
DELETE FROM `{$wpdb->prefix}options` WHERE {$transientLikesSql}
|
338 |
SQL;
|
339 |
$wpdb->query($sqlQuery);
|
|
|
|
|
|
|
340 |
} elseif ($wpacuResetValue === 'reset_settings') {
|
341 |
$sqlQuery = <<<SQL
|
342 |
DELETE FROM `{$wpdb->prefix}options` WHERE option_name='wpassetcleanup_settings'
|
319 |
|
320 |
// Remove Asset CleanUp's cache transients
|
321 |
$transientLikes = array(
|
|
|
|
|
322 |
'_transient_timeout_wpacu_',
|
323 |
'_transient_wpacu_',
|
324 |
);
|
335 |
DELETE FROM `{$wpdb->prefix}options` WHERE {$transientLikesSql}
|
336 |
SQL;
|
337 |
$wpdb->query($sqlQuery);
|
338 |
+
|
339 |
+
// Refers to the plugins' icons shown when viewing assets list by location is enabled
|
340 |
+
delete_transient('wpacu_active_plugins_icons');
|
341 |
} elseif ($wpacuResetValue === 'reset_settings') {
|
342 |
$sqlQuery = <<<SQL
|
343 |
DELETE FROM `{$wpdb->prefix}options` WHERE option_name='wpassetcleanup_settings'
|
classes/Update.php
CHANGED
@@ -76,7 +76,6 @@ HTML;
|
|
76 |
}
|
77 |
|
78 |
/**
|
79 |
-
* TODO: Remove priority later on as it's not needed anymore because there is a redirect after form submit
|
80 |
* Priority: 9 (AFTER current post ID is correctly retrieved and BEFORE the data from the database is fetched)
|
81 |
* Form was submitted in the frontend view (not Dashboard) from a singular page, front-page etc.
|
82 |
*/
|
@@ -135,11 +134,7 @@ HTML;
|
|
135 |
return;
|
136 |
}
|
137 |
|
138 |
-
|
139 |
-
// Form Submitted from a page such as taxonomy (e.g. 'category'), author page, 404 page, search page etc.
|
140 |
-
do_action('wpacu_pro_frontend_update');
|
141 |
-
// [/wpacu_pro]
|
142 |
-
}
|
143 |
|
144 |
/**
|
145 |
*
|
@@ -315,6 +310,8 @@ HTML;
|
|
315 |
/**
|
316 |
* Lite: For Singular Page (Post, Page, Custom Post Type) and Front Page (Home Page)
|
317 |
* Pro: 'for_pro' would trigger the actions from the premium extension (if available)
|
|
|
|
|
318 |
*
|
319 |
* This is the function that clears and updates the load exceptions for any of the requested pages
|
320 |
*
|
@@ -341,10 +338,7 @@ HTML;
|
|
341 |
delete_post_meta($postId, '_' . WPACU_PLUGIN_ID . '_load_exceptions');
|
342 |
} elseif ($type === 'front_page') {
|
343 |
delete_option( WPACU_PLUGIN_ID . '_front_page_load_exceptions');
|
344 |
-
}
|
345 |
-
// Clear existing list for pages like: taxonomy, 404, search, date etc.
|
346 |
-
do_action( 'wpacu_pro_clear_load_exceptions' );
|
347 |
-
} /* [/wpacu_pro] */
|
348 |
|
349 |
if (! $isPostOptionStyles && ! $isPostOptionScripts) {
|
350 |
return;
|
@@ -406,11 +400,9 @@ HTML;
|
|
406 |
}
|
407 |
} elseif ($type === 'front_page') {
|
408 |
update_option( WPACU_PLUGIN_ID . '_front_page_load_exceptions', $jsonLoadExceptions);
|
409 |
-
}
|
410 |
-
|
411 |
-
|
412 |
-
} /* [/wpacu_pro] */
|
413 |
-
}
|
414 |
}
|
415 |
|
416 |
/**
|
76 |
}
|
77 |
|
78 |
/**
|
|
|
79 |
* Priority: 9 (AFTER current post ID is correctly retrieved and BEFORE the data from the database is fetched)
|
80 |
* Form was submitted in the frontend view (not Dashboard) from a singular page, front-page etc.
|
81 |
*/
|
134 |
return;
|
135 |
}
|
136 |
|
137 |
+
}
|
|
|
|
|
|
|
|
|
138 |
|
139 |
/**
|
140 |
*
|
310 |
/**
|
311 |
* Lite: For Singular Page (Post, Page, Custom Post Type) and Front Page (Home Page)
|
312 |
* Pro: 'for_pro' would trigger the actions from the premium extension (if available)
|
313 |
+
* UPDATE: Since v1.2.9.5, no fallback for both the lite and pro version activated at the same time would work anymore
|
314 |
+
* Users need to only keep the PRO version since it's standalone since v1.0.3
|
315 |
*
|
316 |
* This is the function that clears and updates the load exceptions for any of the requested pages
|
317 |
*
|
338 |
delete_post_meta($postId, '_' . WPACU_PLUGIN_ID . '_load_exceptions');
|
339 |
} elseif ($type === 'front_page') {
|
340 |
delete_option( WPACU_PLUGIN_ID . '_front_page_load_exceptions');
|
341 |
+
}
|
|
|
|
|
|
|
342 |
|
343 |
if (! $isPostOptionStyles && ! $isPostOptionScripts) {
|
344 |
return;
|
400 |
}
|
401 |
} elseif ($type === 'front_page') {
|
402 |
update_option( WPACU_PLUGIN_ID . '_front_page_load_exceptions', $jsonLoadExceptions);
|
403 |
+
}
|
404 |
+
|
405 |
+
}
|
|
|
|
|
406 |
}
|
407 |
|
408 |
/**
|
freemius/assets/css/admin/account.css
CHANGED
File without changes
|
freemius/assets/css/admin/add-ons.css
CHANGED
File without changes
|
freemius/assets/css/admin/affiliation.css
CHANGED
File without changes
|
freemius/assets/css/admin/checkout.css
CHANGED
File without changes
|
freemius/assets/css/admin/common.css
CHANGED
File without changes
|
freemius/assets/css/admin/connect.css
CHANGED
File without changes
|
freemius/assets/css/admin/debug.css
CHANGED
File without changes
|
freemius/assets/css/admin/dialog-boxes.css
CHANGED
File without changes
|
freemius/assets/css/admin/gdpr-optin-notice.css
CHANGED
File without changes
|
freemius/assets/css/admin/index.php
CHANGED
File without changes
|
freemius/assets/css/customizer.css
CHANGED
File without changes
|
freemius/assets/css/index.php
CHANGED
File without changes
|
freemius/assets/img/index.php
CHANGED
File without changes
|
freemius/assets/img/plugin-icon.png
CHANGED
File without changes
|
freemius/assets/img/theme-icon.png
CHANGED
File without changes
|
freemius/assets/index.php
CHANGED
File without changes
|
freemius/assets/js/index.php
CHANGED
File without changes
|
freemius/assets/js/nojquery.ba-postmessage.js
CHANGED
File without changes
|
freemius/assets/js/nojquery.ba-postmessage.min.js
CHANGED
File without changes
|
freemius/assets/js/postmessage.js
CHANGED
File without changes
|
freemius/config.php
CHANGED
File without changes
|
freemius/includes/class-freemius-abstract.php
CHANGED
File without changes
|
freemius/includes/class-freemius.php
CHANGED
File without changes
|
freemius/includes/class-fs-admin-notices.php
CHANGED
File without changes
|
freemius/includes/class-fs-api.php
CHANGED
File without changes
|
freemius/includes/class-fs-logger.php
CHANGED
File without changes
|
freemius/includes/class-fs-options.php
CHANGED
File without changes
|
freemius/includes/class-fs-plugin-updater.php
CHANGED
File without changes
|
freemius/includes/class-fs-security.php
CHANGED
File without changes
|
freemius/includes/class-fs-storage.php
CHANGED
File without changes
|
freemius/includes/class-fs-user-lock.php
CHANGED
File without changes
|
freemius/includes/customizer/class-fs-customizer-support-section.php
CHANGED
File without changes
|
freemius/includes/customizer/class-fs-customizer-upsell-control.php
CHANGED
File without changes
|
freemius/includes/customizer/index.php
CHANGED
File without changes
|
freemius/includes/debug/class-fs-debug-bar-panel.php
CHANGED
File without changes
|
freemius/includes/debug/debug-bar-start.php
CHANGED
File without changes
|
freemius/includes/debug/index.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-affiliate-terms.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-affiliate.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-billing.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-entity.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-payment.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-info.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-license.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-plan.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-tag.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-pricing.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-scope-entity.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-site.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-subscription.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-user.php
CHANGED
File without changes
|
freemius/includes/entities/index.php
CHANGED
File without changes
|
freemius/includes/fs-core-functions.php
CHANGED
File without changes
|
freemius/includes/fs-essential-functions.php
CHANGED
File without changes
|
freemius/includes/fs-plugin-info-dialog.php
CHANGED
File without changes
|
freemius/includes/i18n.php
CHANGED
File without changes
|
freemius/includes/index.php
CHANGED
File without changes
|
freemius/includes/l10n.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-admin-notice-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-cache-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-gdpr-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-key-value-storage.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-license-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-option-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-plan-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-plugin-manager.php
CHANGED
File without changes
|
freemius/includes/managers/index.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/ArgumentNotExistException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/EmptyArgumentException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/Exception.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/InvalidArgumentException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/OAuthException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/index.php
CHANGED
File without changes
|
freemius/includes/sdk/FreemiusBase.php
CHANGED
File without changes
|
freemius/includes/sdk/FreemiusWordPress.php
CHANGED
File without changes
|
freemius/includes/sdk/LICENSE.txt
CHANGED
File without changes
|
freemius/includes/sdk/index.php
CHANGED
File without changes
|
freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
CHANGED
File without changes
|
freemius/includes/supplements/fs-essential-functions-2.2.1.php
CHANGED
File without changes
|
freemius/includes/supplements/index.php
CHANGED
File without changes
|
freemius/index.php
CHANGED
File without changes
|
freemius/languages/freemius-da_DK.mo
CHANGED
File without changes
|
freemius/languages/freemius-da_DK.po
CHANGED
File without changes
|
freemius/languages/freemius-en.mo
CHANGED
File without changes
|
freemius/languages/freemius-en.po
CHANGED
File without changes
|
freemius/languages/freemius-es_ES.mo
CHANGED
File without changes
|
freemius/languages/freemius-es_ES.po
CHANGED
File without changes
|
freemius/languages/freemius-fr_FR.mo
CHANGED
File without changes
|
freemius/languages/freemius-fr_FR.po
CHANGED
File without changes
|
freemius/languages/freemius-he_IL.mo
CHANGED
File without changes
|
freemius/languages/freemius-he_IL.po
CHANGED
File without changes
|
freemius/languages/freemius-it_IT.mo
CHANGED
File without changes
|
freemius/languages/freemius-it_IT.po
CHANGED
File without changes
|
freemius/languages/freemius-ja_JP.mo
CHANGED
File without changes
|
freemius/languages/freemius-ja_JP.po
CHANGED
File without changes
|
freemius/languages/freemius-nl_NL.mo
CHANGED
File without changes
|
freemius/languages/freemius-nl_NL.po
CHANGED
File without changes
|
freemius/languages/freemius-ru_RU.mo
CHANGED
File without changes
|
freemius/languages/freemius-ru_RU.po
CHANGED
File without changes
|
freemius/languages/freemius.pot
CHANGED
File without changes
|
freemius/languages/index.php
CHANGED
File without changes
|
freemius/require.php
CHANGED
File without changes
|
freemius/start.php
CHANGED
File without changes
|
freemius/templates/account.php
CHANGED
File without changes
|
freemius/templates/account/billing.php
CHANGED
File without changes
|
freemius/templates/account/index.php
CHANGED
File without changes
|
freemius/templates/account/partials/activate-license-button.php
CHANGED
File without changes
|
freemius/templates/account/partials/addon.php
CHANGED
File without changes
|
freemius/templates/account/partials/deactivate-license-button.php
CHANGED
File without changes
|
freemius/templates/account/partials/index.php
CHANGED
File without changes
|
freemius/templates/account/partials/site.php
CHANGED
File without changes
|
freemius/templates/account/payments.php
CHANGED
File without changes
|
freemius/templates/add-ons.php
CHANGED
File without changes
|
freemius/templates/add-trial-to-pricing.php
CHANGED
File without changes
|
freemius/templates/admin-notice.php
CHANGED
File without changes
|
freemius/templates/ajax-loader.php
CHANGED
File without changes
|
freemius/templates/auto-installation.php
CHANGED
File without changes
|
freemius/templates/checkout.php
CHANGED
File without changes
|
freemius/templates/connect.php
CHANGED
File without changes
|
freemius/templates/contact.php
CHANGED
File without changes
|
freemius/templates/debug.php
CHANGED
File without changes
|
freemius/templates/debug/api-calls.php
CHANGED
File without changes
|
freemius/templates/debug/index.php
CHANGED
File without changes
|
freemius/templates/debug/logger.php
CHANGED
File without changes
|
freemius/templates/debug/plugins-themes-sync.php
CHANGED
File without changes
|
freemius/templates/debug/scheduled-crons.php
CHANGED
File without changes
|
freemius/templates/email.php
CHANGED
File without changes
|
freemius/templates/firewall-issues-js.php
CHANGED
File without changes
|
freemius/templates/forms/affiliation.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/contact.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/form.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/index.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/retry-skip.php
CHANGED
File without changes
|
freemius/templates/forms/index.php
CHANGED
File without changes
|
freemius/templates/forms/license-activation.php
CHANGED
File without changes
|
freemius/templates/forms/optout.php
CHANGED
File without changes
|
freemius/templates/forms/premium-versions-upgrade-handler.php
CHANGED
File without changes
|
freemius/templates/forms/premium-versions-upgrade-metadata.php
CHANGED
File without changes
|
freemius/templates/forms/resend-key.php
CHANGED
File without changes
|
freemius/templates/forms/subscription-cancellation.php
CHANGED
File without changes
|
freemius/templates/forms/trial-start.php
CHANGED
File without changes
|
freemius/templates/gdpr-optin-js.php
CHANGED
File without changes
|
freemius/templates/index.php
CHANGED
File without changes
|
freemius/templates/js/index.php
CHANGED
File without changes
|
freemius/templates/js/jquery.content-change.php
CHANGED
File without changes
|
freemius/templates/js/open-license-activation.php
CHANGED
File without changes
|
freemius/templates/js/style-premium-theme.php
CHANGED
File without changes
|
freemius/templates/partials/network-activation.php
CHANGED
File without changes
|
freemius/templates/plugin-icon.php
CHANGED
File without changes
|
freemius/templates/plugin-info/description.php
CHANGED
File without changes
|
freemius/templates/plugin-info/features.php
CHANGED
File without changes
|
freemius/templates/plugin-info/index.php
CHANGED
File without changes
|
freemius/templates/plugin-info/screenshots.php
CHANGED
File without changes
|
freemius/templates/powered-by.php
CHANGED
File without changes
|
freemius/templates/pricing.php
CHANGED
File without changes
|
freemius/templates/secure-https-header.php
CHANGED
File without changes
|
freemius/templates/sticky-admin-notice-js.php
CHANGED
File without changes
|
freemius/templates/tabs-capture-js.php
CHANGED
File without changes
|
freemius/templates/tabs.php
CHANGED
File without changes
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: pagespeed, page speed, dequeue, performance, gtmetrix
|
|
4 |
Donate link: https://gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 5.0.3
|
7 |
-
Stable tag: 1.2.9.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
@@ -131,8 +131,12 @@ With the recently released "Test Mode" feature, you can safely unload assets on
|
|
131 |
4. Scripts (.JS) are selected for site-wide unload
|
132 |
|
133 |
== Changelog ==
|
|
|
|
|
|
|
|
|
134 |
= 1.2.9.4 =
|
135 |
-
* Bug Fix: If PHP version is lower than 7, an error is shown when
|
136 |
|
137 |
= 1.2.9.3 =
|
138 |
* New sorting by location (default) option in "Assets List Layout" setting
|
4 |
Donate link: https://gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 5.0.3
|
7 |
+
Stable tag: 1.2.9.5
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
|
131 |
4. Scripts (.JS) are selected for site-wide unload
|
132 |
|
133 |
== Changelog ==
|
134 |
+
= 1.2.9.5 =
|
135 |
+
* Changed the way the combined loaded CSS files caching is stored (/wp-content/cache/asset-cleanup/); Transients are not used anymore to avoid having too many records in the options table
|
136 |
+
* Clear cache now keeps the old merge CSS files in the "cache/asset-cleanup" folder in case a cached page still makes reference to any of the files
|
137 |
+
|
138 |
= 1.2.9.4 =
|
139 |
+
* Bug Fix: If PHP version is lower than 7, an error is shown when fetching the plugins' icons in the background to be shown on the management list (when sorted by the assets' location)
|
140 |
|
141 |
= 1.2.9.3 =
|
142 |
* New sorting by location (default) option in "Assets List Layout" setting
|
templates/admin-page-getting-started.php
CHANGED
@@ -10,7 +10,7 @@ if (! isset($data)) {
|
|
10 |
<div class="about-wrap wpacu-about-wrap">
|
11 |
<h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
|
12 |
<p class="about-text wpacu-about-text">
|
13 |
-
Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster & lighter by removing the useless CSS & JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with either a caching plugin
|
14 |
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
|
15 |
</p>
|
16 |
|
@@ -25,14 +25,21 @@ if (! isset($data)) {
|
|
25 |
<p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS & JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
|
26 |
<p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
|
27 |
<hr />
|
28 |
-
<p class="area-title">What Asset CleanUp really does? <span style="font-size:
|
29 |
-
<p>Asset CleanUp is front-end optimisation performance plugin and let's you select the assets that are not needed to load on your website and combine the remaining loaded ones into fewer files, which will in the end reduce considerably the number of HTTP requests and optimize the front-end side of your pages. <a target="_blank" href="https://developer.yahoo.com/performance/rules.html">Read more</a></p>
|
30 |
-
<p>Once the setup is completed, the pages will have a better speed score
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
<hr />
|
32 |
-
<p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size:
|
33 |
<p>Let's suppose you have a page where 30 files (CSS & JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also combine and minify the remaining 12 files, the total assets size becomes smaller to 0.5 MB. In the end, <strong>the assets will load 3 times faster and improve your page speed score</strong>. Moreover, the HTML source code will be cleaner and easier to go through in case you're a developer and need to do any debugging or just check something in the code.</p>
|
34 |
<hr />
|
35 |
-
<p class="area-title">Not sure how to configure it? <span style="font-size:
|
36 |
<p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
|
37 |
<?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
|
38 |
<p class="area-title">Higher search ranking <span style="font-size: 22px;">📈</span></p>
|
@@ -41,15 +48,15 @@ if (! isset($data)) {
|
|
41 |
<p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
|
42 |
<hr />
|
43 |
|
44 |
-
<p class="area-title">Visitor Experience <span style="font-size:
|
45 |
<p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
|
46 |
<hr />
|
47 |
|
48 |
-
<p class="area-title">Better Developer Experience <span style="font-size:
|
49 |
<p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
|
50 |
<hr />
|
51 |
|
52 |
-
<p class="area-title">Higher Revenue <span style="font-size:
|
53 |
<p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
|
54 |
|
55 |
<p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
|
10 |
<div class="about-wrap wpacu-about-wrap">
|
11 |
<h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
|
12 |
<p class="about-text wpacu-about-text">
|
13 |
+
Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster & lighter by removing the useless CSS & JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with either a <a style="text-decoration: none; color: #555d66;" href="https://gabelivan.com/visit/wp-rocket">caching plugin</a>, the in-built hosting caching (e.g. <a style="text-decoration: none; color: #555d66;" href="https://gabelivan.com/visit/wp-engine">WPEngine</a>, Kinsta have it) or something like Varnish.
|
14 |
<img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
|
15 |
</p>
|
16 |
|
25 |
<p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS & JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
|
26 |
<p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
|
27 |
<hr />
|
28 |
+
<p class="area-title">What Asset CleanUp really does? <span style="font-size: 24px;">🚀</span></p>
|
29 |
+
<p>Asset CleanUp is a <strong>front-end optimisation performance plugin</strong> and let's you select the assets that are not needed to load on your website and combine the remaining loaded ones into fewer files, which will in the end reduce considerably the number of HTTP requests and optimize the front-end side of your pages. <a target="_blank" href="https://developer.yahoo.com/performance/rules.html">Read more</a></p>
|
30 |
+
<p>Once the setup is completed, the pages will have a better speed score since there will be less HTTP requests (.css & .js files) loaded by the browser (this can be tested using tools such as GTMetrix) and combined with a backend page caching system it will improve the page speed even more.
|
31 |
+
<p>Page caching solutions include:</p>
|
32 |
+
<ul style="font-size: 14px; list-style: disc; margin-left: 25px;">
|
33 |
+
<li style="line-height: 21px; margin-bottom: 15px;">A plugin such as <a target="_blank" href="https://gabelivan.com/visit/wp-rocket">WP Rocket</a> (get 20% off by using the <em>IMAGIFY20</em> coupon code) that creates static HTML files (which are lighter thanks to Asset CleanUp) and reads them avoiding PHP code processing within the active plugins & theme, including database queries which can use lots of server resources if you have high traffic. The page caching improves the <a href="http://gabelivan.com/visit/wp-rocket-ttfb">TTFB</a> (time to first byte) which measures the duration from the user or client making an HTTP request to the first byte of the page being received by the client's browser.</li>
|
34 |
+
<li style="line-height: 21px; margin-bottom: 20px;">A hosting service that has its in-built WordPress caching like <a href="https://gabelivan.com/visit/wp-engine">WPEngine</a> or Kinsta, a web application accelerator like Varnish that can be setup the server etc.</li>
|
35 |
+
</ul>
|
36 |
+
|
37 |
+
<p style="line-height: normal;"><small><strong>Disclaimer:</strong> The recommendations above are based from my own experience as a developer & user and I'm happy to recommend them to whoever wants superior WordPress performance. The links are affiliate related and I might get a commission if you decide to make a purchase.</small></p>
|
38 |
<hr />
|
39 |
+
<p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size: 24px;">✨</span></p>
|
40 |
<p>Let's suppose you have a page where 30 files (CSS & JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also combine and minify the remaining 12 files, the total assets size becomes smaller to 0.5 MB. In the end, <strong>the assets will load 3 times faster and improve your page speed score</strong>. Moreover, the HTML source code will be cleaner and easier to go through in case you're a developer and need to do any debugging or just check something in the code.</p>
|
41 |
<hr />
|
42 |
+
<p class="area-title">Not sure how to configure it? <span style="font-size: 24px;">🤔</span></p>
|
43 |
<p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
|
44 |
<?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
|
45 |
<p class="area-title">Higher search ranking <span style="font-size: 22px;">📈</span></p>
|
48 |
<p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
|
49 |
<hr />
|
50 |
|
51 |
+
<p class="area-title">Visitor Experience <span style="font-size: 24px;">😊</span></p>
|
52 |
<p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
|
53 |
<hr />
|
54 |
|
55 |
+
<p class="area-title">Better Developer Experience <span style="font-size: 24px;">⚙️</span></p>
|
56 |
<p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
|
57 |
<hr />
|
58 |
|
59 |
+
<p class="area-title">Higher Revenue <span style="font-size: 24px;">💯</span></p>
|
60 |
<p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
|
61 |
|
62 |
<p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
|
templates/admin-page-settings-plugin.php
CHANGED
@@ -259,13 +259,39 @@ do_action('wpacu_admin_notices');
|
|
259 |
<option <?php if ($data['combine_loaded_css'] === 'for_all') { ?>selected="selected"<?php } ?> value="for_all">Yes, for everyone</option>
|
260 |
</select> <small>* if /wp-content/cache/ directory is not writable for some reason, this feature will not work; requires the DOMDocument XML DOM Parser to be enabled in PHP (which it is by default) for maximum performance</small>
|
261 |
|
262 |
-
<p>This scans the remaining CSS files from the <code><head></code> and combines them into one file. To be 100% sure everything works fine after activation, consider using "Yes, for logged-in administrators" so only you can see the updated page. If all looks good, you can later switch it to "Yes (for everyone)".</p>
|
263 |
-
<p style="margin-bottom:
|
264 |
-
<ul style="list-style: disc; margin-left:
|
265 |
<li>Have any <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">preloading added to them</a> via <code>rel="preload"</code> will not be combined as they have priority in loading and shouldn't be mixed with the rest of the CSS.</li>
|
266 |
<li style="margin-bottom: 0;">Are loaded within the <code><body></code> part of the page as they were likely added there because they are needed after the page is rendered (e.g. for AJAX styling calls, popups or elements that are not visible in the top viewport etc.)</li>
|
267 |
</ul>
|
268 |
-
<p style="margin-top:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
</td>
|
270 |
</tr>
|
271 |
</table>
|
259 |
<option <?php if ($data['combine_loaded_css'] === 'for_all') { ?>selected="selected"<?php } ?> value="for_all">Yes, for everyone</option>
|
260 |
</select> <small>* if /wp-content/cache/ directory is not writable for some reason, this feature will not work; requires the DOMDocument XML DOM Parser to be enabled in PHP (which it is by default) for maximum performance</small>
|
261 |
|
262 |
+
<p>This scans the remaining CSS files (left after unloaded the unnecessary ones) from the <code><head></code> and combines them into one file. To be 100% sure everything works fine after activation, consider using "Yes, for logged-in administrators" so only you can see the updated page. If all looks good, you can later switch it to "Yes (for everyone)".</p>
|
263 |
+
<p style="margin-bottom: -7px;">The following stylesheets are not included in the combined CSS file for maximum performance:</p>
|
264 |
+
<ul style="list-style: disc; margin-left: 25px; margin-bottom: 0;">
|
265 |
<li>Have any <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">preloading added to them</a> via <code>rel="preload"</code> will not be combined as they have priority in loading and shouldn't be mixed with the rest of the CSS.</li>
|
266 |
<li style="margin-bottom: 0;">Are loaded within the <code><body></code> part of the page as they were likely added there because they are needed after the page is rendered (e.g. for AJAX styling calls, popups or elements that are not visible in the top viewport etc.)</li>
|
267 |
</ul>
|
268 |
+
<p style="margin-bottom: -7px; margin-top: 20px;">This feature will not work <strong>IF</strong>:</p>
|
269 |
+
<ul style="margin-left: 25px; list-style: disc;">
|
270 |
+
<li>"Test Mode" is enabled, this feature will not work for the guest users, even if "Yes, for everyone" is chosen as "Test Mode" purpose is to make the plugin as inactive for non logged-in administrators for ultimate debugging.</li>
|
271 |
+
<li>The URL has query strings (e.g. an URL such as //www.yourdomain.com/product/title-here/?param=1&param_two=value_here)</li>
|
272 |
+
</ul>
|
273 |
+
</td>
|
274 |
+
</tr>
|
275 |
+
|
276 |
+
<tr valign="top">
|
277 |
+
<th scope="row" class="setting_title">
|
278 |
+
<label>Combine loaded JS (JavaScript) into less files?</label>
|
279 |
+
<p class="wpacu_subtitle"><small><em>Helps reducing the number of HTTP Requests even further</em></small></p>
|
280 |
+
</th>
|
281 |
+
<td>
|
282 |
+
<?php echo $availableForPro; ?> <small>* if /wp-content/cache/ directory is not writable for some reason, this feature will not work; requires the DOMDocument XML DOM Parser to be enabled in PHP (which it is by default) for maximum performance</small>
|
283 |
+
|
284 |
+
<p>This scans the remaining JavaScript files (left after unloaded the unnecessary ones) from the <code><head></code> and <code><body></code> and combines them into less files. The combination is made in such a way that it will not interefere with any inline JavaScript code associated with any of the files. To be 100% sure everything works fine after activation, consider using "Yes, for logged-in administrators" so only you can see the updated page. If all looks good, you can later switch it to "Yes (for everyone)".</p>
|
285 |
+
<p style="margin-bottom: -7px;">For maximum performance and making sure that no functionality is broken the following JavaScript files:</p>
|
286 |
+
<ul style="list-style: disc; margin-left: 25px; margin-bottom: 0;">
|
287 |
+
<li>Any script tag having "defer" or "async" attributes</li>
|
288 |
+
<li>Scripts that have inline code associated with it</li>
|
289 |
+
</ul>
|
290 |
+
<p style="margin-bottom: -7px; margin-top: 20px;">This feature will not work <strong>IF</strong>:</p>
|
291 |
+
<ul style="list-style: disc; margin-left: 25px; margin-bottom: 0;">
|
292 |
+
<li>"Test Mode" is enabled, this feature will not work for the guest users, even if "Yes, for everyone" is chosen as "Test Mode" purpose is to make the plugin as inactive for non logged-in administrators for ultimate debugging.</li>
|
293 |
+
<li>The URL has query strings (e.g. an URL such as //www.yourdomain.com/product/title-here/?param=1&param_two=value_here)</li>
|
294 |
+
</ul>
|
295 |
</td>
|
296 |
</tr>
|
297 |
</table>
|
templates/meta-box-loaded-assets/_asset-script-single-row.php
CHANGED
@@ -16,6 +16,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
16 |
<p class="wpacu_handle">
|
17 |
<label for="script_<?php echo $data['row']['obj']->handle; ?>"> <?php _e('Handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong></label>
|
18 |
<?php if (isset($data['view_by_location'])) { echo ' <em>* JavaScript (.js)</em>'; } ?>
|
|
|
19 |
<?php
|
20 |
if ($isCoreFile && ! $hideCoreFiles) {
|
21 |
?>
|
@@ -25,6 +26,41 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
25 |
?>
|
26 |
</p>
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
<div <?php if (! $isBulkUnloaded) { ?>class="wrap_bulk_unload_options"<?php } ?>>
|
29 |
<div class="wpacu_asset_options_wrap">
|
30 |
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php /* [wpacu_lite] */ if ($data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded']) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
|
@@ -162,7 +198,6 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
162 |
<div class="wpacu-clearfix"></div>
|
163 |
</div>
|
164 |
<?php
|
165 |
-
do_action('wpacu_pro_bulk_unload_output', $data, $data['row']['obj'], 'js');
|
166 |
?>
|
167 |
|
168 |
<ul class="wpacu_asset_options wpacu_exception_options_area">
|
@@ -178,12 +213,6 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
178 |
</li>
|
179 |
</ul>
|
180 |
<?php
|
181 |
-
if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src !== '' && $data['row']['obj']->srcHref) {
|
182 |
-
?>
|
183 |
-
<p><strong><?php _e('Source:', WPACU_PLUGIN_TEXT_DOMAIN); ?></strong> <a target="_blank" href="<?php echo $data['row']['obj']->srcHref; ?>"><?php echo $data['row']['obj']->src; ?></a></p>
|
184 |
-
<?php
|
185 |
-
}
|
186 |
-
|
187 |
if ($data['row']['extra_data_js']) { ?>
|
188 |
<div>
|
189 |
<?php _e('Inline JavaScript code associated with the handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?>
|
@@ -200,30 +229,6 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
200 |
</div>
|
201 |
<?php
|
202 |
}
|
203 |
-
|
204 |
-
$extraInfo = array();
|
205 |
-
|
206 |
-
if (! empty($data['row']['obj']->deps)) {
|
207 |
-
$extraInfo[] = '<strong>'.__('Depends on:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> ' . implode(', ', $data['row']['obj']->deps);
|
208 |
-
}
|
209 |
-
|
210 |
-
if (isset($data['row']['obj']->ver) && $data['row']['obj']->ver !== '') {
|
211 |
-
$extraInfo[] = '<strong>'.__('Version:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> ' . $data['row']['obj']->ver;
|
212 |
-
}
|
213 |
-
|
214 |
-
if (isset($data['row']['obj']->position) && $data['row']['obj']->position !== '') {
|
215 |
-
$extraInfo[] = '<strong>'.__('Position:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> ' . (( $data['row']['obj']->position === 'head') ? 'HEAD' : 'BODY');
|
216 |
-
}
|
217 |
-
|
218 |
-
// [wpacu_lite]
|
219 |
-
if (isset($data['row']['obj']->src) && $data['row']['obj']->src) {
|
220 |
-
$extraInfo[] = '<strong>' . __( 'File Size:', WPACU_PLUGIN_TEXT_DOMAIN ) . '</strong> <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
221 |
-
}
|
222 |
-
// [/wpacu_lite]
|
223 |
-
|
224 |
-
if (! empty($extraInfo)) {
|
225 |
-
echo '<p>'.implode(' / ', $extraInfo).'</p>';
|
226 |
-
}
|
227 |
?>
|
228 |
|
229 |
<!-- [wpacu_lite] -->
|
16 |
<p class="wpacu_handle">
|
17 |
<label for="script_<?php echo $data['row']['obj']->handle; ?>"> <?php _e('Handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong></label>
|
18 |
<?php if (isset($data['view_by_location'])) { echo ' <em>* JavaScript (.js)</em>'; } ?>
|
19 |
+
|
20 |
<?php
|
21 |
if ($isCoreFile && ! $hideCoreFiles) {
|
22 |
?>
|
26 |
?>
|
27 |
</p>
|
28 |
|
29 |
+
<?php
|
30 |
+
if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src !== '' && $data['row']['obj']->srcHref) {
|
31 |
+
$relSrc = str_replace(site_url(), '', $data['row']['obj']->src);
|
32 |
+
?>
|
33 |
+
<p><?php _e('Source:', WPACU_PLUGIN_TEXT_DOMAIN); ?> <a target="_blank" style="color: green;" href="<?php echo $data['row']['obj']->srcHref; ?>"><?php echo $relSrc; ?></a></p>
|
34 |
+
<?php
|
35 |
+
}
|
36 |
+
?>
|
37 |
+
|
38 |
+
<?php
|
39 |
+
$extraInfo = array();
|
40 |
+
|
41 |
+
if (! empty($data['row']['obj']->deps)) {
|
42 |
+
$extraInfo[] = __('Depends on:', WPACU_PLUGIN_TEXT_DOMAIN) . ' ' . implode(', ', $data['row']['obj']->deps);
|
43 |
+
}
|
44 |
+
|
45 |
+
if (isset($data['row']['obj']->ver) && $data['row']['obj']->ver !== '') {
|
46 |
+
$extraInfo[] = __('Version:', WPACU_PLUGIN_TEXT_DOMAIN) . ' ' . $data['row']['obj']->ver;
|
47 |
+
}
|
48 |
+
|
49 |
+
if (isset($data['row']['obj']->position) && $data['row']['obj']->position !== '') {
|
50 |
+
$extraInfo[] = __('Position:', WPACU_PLUGIN_TEXT_DOMAIN) . ' ' . (( $data['row']['obj']->position === 'head') ? 'HEAD' : 'BODY');
|
51 |
+
}
|
52 |
+
|
53 |
+
// [wpacu_lite]
|
54 |
+
if (isset($data['row']['obj']->src) && $data['row']['obj']->src) {
|
55 |
+
$extraInfo[] = __( 'File Size:', WPACU_PLUGIN_TEXT_DOMAIN ) . ' <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
56 |
+
}
|
57 |
+
// [/wpacu_lite]
|
58 |
+
|
59 |
+
if (! empty($extraInfo)) {
|
60 |
+
echo '<p>'.implode(' / ', $extraInfo).'</p>';
|
61 |
+
}
|
62 |
+
?>
|
63 |
+
|
64 |
<div <?php if (! $isBulkUnloaded) { ?>class="wrap_bulk_unload_options"<?php } ?>>
|
65 |
<div class="wpacu_asset_options_wrap">
|
66 |
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php /* [wpacu_lite] */ if ($data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded']) { /* [/wpacu_lite] */ echo 'style="display: none;"'; } ?>>
|
198 |
<div class="wpacu-clearfix"></div>
|
199 |
</div>
|
200 |
<?php
|
|
|
201 |
?>
|
202 |
|
203 |
<ul class="wpacu_asset_options wpacu_exception_options_area">
|
213 |
</li>
|
214 |
</ul>
|
215 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
if ($data['row']['extra_data_js']) { ?>
|
217 |
<div>
|
218 |
<?php _e('Inline JavaScript code associated with the handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?>
|
229 |
</div>
|
230 |
<?php
|
231 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
?>
|
233 |
|
234 |
<!-- [wpacu_lite] -->
|
templates/meta-box-loaded-assets/_asset-style-single-row.php
CHANGED
@@ -25,6 +25,34 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
25 |
?>
|
26 |
</p>
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
<div <?php if (! $isBulkUnloaded) { ?>class="wrap_bulk_unload_options"<?php } ?>>
|
29 |
<div class="wpacu_asset_options_wrap">
|
30 |
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php if ($isBulkUnloaded) { echo 'style="display: none;"'; } ?>>
|
@@ -162,9 +190,6 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
162 |
</div>
|
163 |
|
164 |
<?php
|
165 |
-
// [wpacu_pro]
|
166 |
-
do_action('wpacu_pro_bulk_unload_output', $data, $data['row']['obj'], 'css');
|
167 |
-
// [/wpacu_pro]
|
168 |
?>
|
169 |
|
170 |
<ul class="wpacu_asset_options wpacu_exception_options_area">
|
@@ -179,11 +204,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
179 |
Load it on this page (make exception<?php if (! $isBulkUnloaded) { echo ' * works only IF any of bulk rule above is selected'; } ?>)</label>
|
180 |
</li>
|
181 |
</ul>
|
182 |
-
|
183 |
-
<?php if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src && $data['row']['obj']->srcHref) { ?>
|
184 |
-
<p><strong><?php _e('Source:', WPACU_PLUGIN_TEXT_DOMAIN); ?></strong> <a target="_blank" href="<?php echo $data['row']['obj']->srcHref; ?>"><?php echo $data['row']['obj']->src; ?></a></p>
|
185 |
-
<?php }
|
186 |
-
|
187 |
if (! empty($data['row']['extra_data_css_list'])) { ?>
|
188 |
<div>
|
189 |
<?php _e('Inline styling associated with the handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?>
|
@@ -203,26 +224,6 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
|
|
203 |
</div>
|
204 |
<?php
|
205 |
}
|
206 |
-
|
207 |
-
$extraInfo = array();
|
208 |
-
|
209 |
-
if (! empty($data['row']['obj']->deps)) {
|
210 |
-
$extraInfo[] = '<strong>'.__('Depends on:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> ' . implode(', ', $data['row']['obj']->deps);
|
211 |
-
}
|
212 |
-
|
213 |
-
if ($data['row']['obj']->ver) {
|
214 |
-
$extraInfo[] = '<strong>'.__('Version:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> ' . $data['row']['obj']->ver;
|
215 |
-
}
|
216 |
-
|
217 |
-
// [wpacu_lite]
|
218 |
-
if (isset($data['row']['obj']->src) && $data['row']['obj']->src) {
|
219 |
-
$extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
220 |
-
}
|
221 |
-
// [/wpacu_lite]
|
222 |
-
|
223 |
-
if (! empty($extraInfo)) {
|
224 |
-
echo '<p>'.implode(' / ', $extraInfo).'</p>';
|
225 |
-
}
|
226 |
?>
|
227 |
</td>
|
228 |
</tr>
|
25 |
?>
|
26 |
</p>
|
27 |
|
28 |
+
<?php if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src && $data['row']['obj']->srcHref) {
|
29 |
+
$relSrc = str_replace(site_url(), '', $data['row']['obj']->src);
|
30 |
+
?>
|
31 |
+
<p><?php _e('Source:', WPACU_PLUGIN_TEXT_DOMAIN); ?> <a target="_blank" style="color: green;" href="<?php echo $data['row']['obj']->srcHref; ?>"><?php echo $relSrc; ?></a></p>
|
32 |
+
<?php } ?>
|
33 |
+
|
34 |
+
<?php
|
35 |
+
$extraInfo = array();
|
36 |
+
|
37 |
+
if (! empty($data['row']['obj']->deps)) {
|
38 |
+
$extraInfo[] = __('Depends on:', WPACU_PLUGIN_TEXT_DOMAIN) . ' ' . implode(', ', $data['row']['obj']->deps);
|
39 |
+
}
|
40 |
+
|
41 |
+
if ($data['row']['obj']->ver) {
|
42 |
+
$extraInfo[] = __('Version:', WPACU_PLUGIN_TEXT_DOMAIN) . ' ' . $data['row']['obj']->ver;
|
43 |
+
}
|
44 |
+
|
45 |
+
// [wpacu_lite]
|
46 |
+
if (isset($data['row']['obj']->src) && $data['row']['obj']->src) {
|
47 |
+
$extraInfo[] = __('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . ' <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
|
48 |
+
}
|
49 |
+
// [/wpacu_lite]
|
50 |
+
|
51 |
+
if (! empty($extraInfo)) {
|
52 |
+
echo '<p>'.implode(' / ', $extraInfo).'</p>';
|
53 |
+
}
|
54 |
+
?>
|
55 |
+
|
56 |
<div <?php if (! $isBulkUnloaded) { ?>class="wrap_bulk_unload_options"<?php } ?>>
|
57 |
<div class="wpacu_asset_options_wrap">
|
58 |
<ul class="wpacu_asset_options wpacu_exception_options_area" <?php if ($isBulkUnloaded) { echo 'style="display: none;"'; } ?>>
|
190 |
</div>
|
191 |
|
192 |
<?php
|
|
|
|
|
|
|
193 |
?>
|
194 |
|
195 |
<ul class="wpacu_asset_options wpacu_exception_options_area">
|
204 |
Load it on this page (make exception<?php if (! $isBulkUnloaded) { echo ' * works only IF any of bulk rule above is selected'; } ?>)</label>
|
205 |
</li>
|
206 |
</ul>
|
207 |
+
<?php
|
|
|
|
|
|
|
|
|
208 |
if (! empty($data['row']['extra_data_css_list'])) { ?>
|
209 |
<div>
|
210 |
<?php _e('Inline styling associated with the handle:', WPACU_PLUGIN_TEXT_DOMAIN); ?>
|
224 |
</div>
|
225 |
<?php
|
226 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
?>
|
228 |
</td>
|
229 |
</tr>
|
templates/meta-box-loaded-assets/view-by-location.php
CHANGED
@@ -21,7 +21,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
|
|
21 |
<?php
|
22 |
if (! empty($data['all']['styles']) || ! empty($data['all']['scripts'])) {
|
23 |
?>
|
24 |
-
<p><?php echo sprintf(__('The following styles & scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to
|
25 |
<p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
26 |
<?php
|
27 |
if ($data['plugin_settings']['hide_core_files']) {
|
21 |
<?php
|
22 |
if (! empty($data['all']['styles']) || ! empty($data['all']['scripts'])) {
|
23 |
?>
|
24 |
+
<p><?php echo sprintf(__('The following styles & scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to enable "Test Mode" (to make the changes apply only to you), while you are going through the trial & error process.', WPACU_PLUGIN_TEXT_DOMAIN), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
|
25 |
<p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
26 |
<?php
|
27 |
if ($data['plugin_settings']['hide_core_files']) {
|
templates/meta-box-loaded-assets/view-default.php
CHANGED
@@ -34,7 +34,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
|
|
34 |
<?php
|
35 |
if (! empty($data['all']['styles'])) {
|
36 |
?>
|
37 |
-
<p><?php echo sprintf(__('The following styles are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to
|
38 |
<p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
39 |
<?php
|
40 |
if ($data['plugin_settings']['hide_core_files']) {
|
34 |
<?php
|
35 |
if (! empty($data['all']['styles'])) {
|
36 |
?>
|
37 |
+
<p><?php echo sprintf(__('The following styles & scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to enable "Test Mode" (to make the changes apply only to you), while you are going through the trial & error process.', WPACU_PLUGIN_TEXT_DOMAIN), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
|
38 |
<p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
|
39 |
<?php
|
40 |
if ($data['plugin_settings']['hide_core_files']) {
|
templates/settings-frontend.php
CHANGED
@@ -62,11 +62,7 @@ if (! isset($data)) {
|
|
62 |
<?php
|
63 |
}
|
64 |
|
65 |
-
|
66 |
-
do_action('wpacu_pro_frontend_before_asset_list');
|
67 |
-
// [/wpacu_pro]
|
68 |
-
|
69 |
-
require_once 'meta-box-loaded.php';
|
70 |
} else {
|
71 |
// Category, Tag, Search, 404, Author, Date pages (not supported by Lite version)
|
72 |
$contentUnlockFeature = ' <p class="pro-page-unlock-notice">To unlock this feature, you can upgrade to the Pro version.</p>';
|
62 |
<?php
|
63 |
}
|
64 |
|
65 |
+
require_once 'meta-box-loaded.php';
|
|
|
|
|
|
|
|
|
66 |
} else {
|
67 |
// Category, Tag, Search, 404, Author, Date pages (not supported by Lite version)
|
68 |
$contentUnlockFeature = ' <p class="pro-page-unlock-notice">To unlock this feature, you can upgrade to the Pro version.</p>';
|
wpacu-load.php
CHANGED
@@ -55,9 +55,15 @@ new \WpAssetCleanUp\Menu;
|
|
55 |
// Admin Bar (Top Area of the website when user is logged in)
|
56 |
new \WpAssetCleanUp\AdminBar();
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
if (is_admin()) {
|
63 |
new \WpAssetCleanUp\Plugin;
|
55 |
// Admin Bar (Top Area of the website when user is logged in)
|
56 |
new \WpAssetCleanUp\AdminBar();
|
57 |
|
58 |
+
/*
|
59 |
+
* Trigger the CSS & JS combination only in the front-end view in certain conditions (not within the Dashboard)
|
60 |
+
*/
|
61 |
+
// Common functions for both CSS & JS combinations
|
62 |
+
new \WpAssetCleanUp\OptimiseAssets\CombineCommon();
|
63 |
+
|
64 |
+
// Combine CSS Files Setup
|
65 |
+
$wpacuCombineCss = new \WpAssetCleanUp\OptimiseAssets\CombineCss();
|
66 |
+
$wpacuCombineCss->init();
|
67 |
|
68 |
if (is_admin()) {
|
69 |
new \WpAssetCleanUp\Plugin;
|
wpacu.php
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
-
* Version: 1.2.9.
|
6 |
* Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
9 |
*/
|
10 |
|
11 |
-
define('WPACU_PLUGIN_VERSION', '1.2.9.
|
12 |
|
13 |
// Exit if accessed directly
|
14 |
if (! defined('ABSPATH')) {
|
2 |
/*
|
3 |
* Plugin Name: Asset CleanUp: Page Speed Booster
|
4 |
* Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
|
5 |
+
* Version: 1.2.9.5
|
6 |
* Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
|
7 |
* Author: Gabriel Livan
|
8 |
* Author URI: http://gabelivan.com/
|
9 |
*/
|
10 |
|
11 |
+
define('WPACU_PLUGIN_VERSION', '1.2.9.5');
|
12 |
|
13 |
// Exit if accessed directly
|
14 |
if (! defined('ABSPATH')) {
|