├── cache └── local-ga.js ├── _config.yml ├── lib ├── .DS_Store ├── class-optimisationio-upgrader-skin.php ├── class-wpperformance-view.php ├── WpPerformance │ ├── View.php │ └── Admin.php └── class-optimisationio-stats-and-addons.php ├── images ├── stars.jpg ├── addon-load.gif ├── icon-support.png ├── wp-disable.jpg ├── optimisation-1.jpg ├── optimisation-4.jpg ├── logo-optimisation.png ├── logo-optimisation-line.png └── wp-image-compression.jpg ├── lang ├── wpperformance.mo ├── wpperformance-en_US.mo └── wpperformance.pot ├── css ├── optimisationio-all.css ├── optimisationio-import-export.css ├── wp-disable-style.css ├── style.css ├── optimisationio-statistics-addons.css └── optimisationio-dashboard.css ├── includes ├── empty-comments-template.php ├── update_local_ga.php └── update-local-ga.php ├── .gitignore ├── uninstall.php ├── js ├── css-lazy-load.min.js ├── optimisationio-dashboard-wp-disable.js ├── loadcss.js ├── css-lazy-load.js ├── clipboard.min.js └── optimisationio-stats-addons.js ├── changelog.txt ├── views ├── optimisationio-dashboard.php ├── optimisationio-statistics-addons.php ├── optimisationio-import-export.php └── admin_settings.php ├── wpperformance.php └── readme.txt /cache/local-ga.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/lib/.DS_Store -------------------------------------------------------------------------------- /images/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/stars.jpg -------------------------------------------------------------------------------- /images/addon-load.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/addon-load.gif -------------------------------------------------------------------------------- /images/icon-support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/icon-support.png -------------------------------------------------------------------------------- /images/wp-disable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/wp-disable.jpg -------------------------------------------------------------------------------- /lang/wpperformance.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/lang/wpperformance.mo -------------------------------------------------------------------------------- /css/optimisationio-all.css: -------------------------------------------------------------------------------- 1 | #toplevel_page_optimisationio-dashboard .wp-first-item{ 2 | display:none; 3 | } -------------------------------------------------------------------------------- /images/optimisation-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/optimisation-1.jpg -------------------------------------------------------------------------------- /images/optimisation-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/optimisation-4.jpg -------------------------------------------------------------------------------- /images/logo-optimisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/logo-optimisation.png -------------------------------------------------------------------------------- /lang/wpperformance-en_US.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/lang/wpperformance-en_US.mo -------------------------------------------------------------------------------- /images/logo-optimisation-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/logo-optimisation-line.png -------------------------------------------------------------------------------- /images/wp-image-compression.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hosting-io/wp-disable/HEAD/images/wp-image-compression.jpg -------------------------------------------------------------------------------- /includes/empty-comments-template.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /includes/update-local-ga.php: -------------------------------------------------------------------------------- 1 | before 12 | // By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document. 13 | // `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all' 14 | var doc = w.document; 15 | var ss = doc.createElement( "link" ); 16 | var ref; 17 | if( before ){ 18 | ref = before; 19 | } 20 | else { 21 | var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes; 22 | ref = refs[ refs.length - 1]; 23 | } 24 | 25 | var sheets = doc.styleSheets; 26 | ss.rel = "stylesheet"; 27 | ss.href = href; 28 | // temporarily set media to something inapplicable to ensure it'll fetch without blocking render 29 | ss.media = "only x"; 30 | 31 | // wait until body is defined before injecting link. This ensures a non-blocking load in IE11. 32 | function ready( cb ){ 33 | if( doc.body ){ 34 | return cb(); 35 | } 36 | setTimeout(function(){ 37 | ready( cb ); 38 | }); 39 | } 40 | // Inject link 41 | // Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs 42 | // Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/ 43 | ready( function(){ 44 | ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) ); 45 | }); 46 | // A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet. 47 | var onloadcssdefined = function( cb ){ 48 | var resolvedHref = ss.href; 49 | var i = sheets.length; 50 | while( i-- ){ 51 | if( sheets[ i ].href === resolvedHref ){ 52 | return cb(); 53 | } 54 | } 55 | setTimeout(function() { 56 | onloadcssdefined( cb ); 57 | }); 58 | }; 59 | 60 | function loadCB(){ 61 | if( ss.addEventListener ){ 62 | ss.removeEventListener( "load", loadCB ); 63 | } 64 | ss.media = media || "all"; 65 | } 66 | 67 | // once loaded, set link's media back to `all` so that the stylesheet applies once it loads 68 | if( ss.addEventListener ){ 69 | ss.addEventListener( "load", loadCB); 70 | } 71 | ss.onloadcssdefined = onloadcssdefined; 72 | onloadcssdefined( loadCB ); 73 | return ss; 74 | }; 75 | // commonjs 76 | if( typeof exports !== "undefined" ){ 77 | exports.loadCSS = loadCSS; 78 | } 79 | else { 80 | w.loadCSS = loadCSS; 81 | } 82 | }( typeof global !== "undefined" ? global : this )); 83 | -------------------------------------------------------------------------------- /js/css-lazy-load.js: -------------------------------------------------------------------------------- 1 | /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ 2 | 3 | // https://github.com/filamentgroup/loadCSS/blob/master/src/loadCSS.js 4 | 5 | (function(w){ 6 | "use strict"; 7 | /* exported loadCSS */ 8 | var loadCSS = function( href, before, media ){ 9 | // Arguments explained: 10 | // `href` [REQUIRED] is the URL for your CSS file. 11 | // `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet before 12 | // By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document. 13 | // `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all' 14 | var doc = w.document; 15 | var ss = doc.createElement( "link" ); 16 | var ref; 17 | if( before ){ 18 | ref = before; 19 | } 20 | else { 21 | var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes; 22 | ref = refs[ refs.length - 1]; 23 | } 24 | 25 | var sheets = doc.styleSheets; 26 | ss.rel = "stylesheet"; 27 | ss.href = href; 28 | // temporarily set media to something inapplicable to ensure it'll fetch without blocking render 29 | ss.media = "only x"; 30 | 31 | // wait until body is defined before injecting link. This ensures a non-blocking load in IE11. 32 | function ready( cb ){ 33 | if( doc.body ){ 34 | return cb(); 35 | } 36 | setTimeout(function(){ 37 | ready( cb ); 38 | }); 39 | } 40 | // Inject link 41 | // Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs 42 | // Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/ 43 | ready( function(){ 44 | ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) ); 45 | }); 46 | // A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet. 47 | var onloadcssdefined = function( cb ){ 48 | var resolvedHref = ss.href; 49 | var i = sheets.length; 50 | while( i-- ){ 51 | if( sheets[ i ].href === resolvedHref ){ 52 | return cb(); 53 | } 54 | } 55 | setTimeout(function() { 56 | onloadcssdefined( cb ); 57 | }); 58 | }; 59 | 60 | function loadCB(){ 61 | if( ss.addEventListener ){ 62 | ss.removeEventListener( "load", loadCB ); 63 | } 64 | ss.media = media || "all"; 65 | } 66 | 67 | // once loaded, set link's media back to `all` so that the stylesheet applies once it loads 68 | if( ss.addEventListener ){ 69 | ss.addEventListener( "load", loadCB); 70 | } 71 | ss.onloadcssdefined = onloadcssdefined; 72 | onloadcssdefined( loadCB ); 73 | return ss; 74 | }; 75 | // commonjs 76 | if( typeof exports !== "undefined" ){ 77 | exports.loadCSS = loadCSS; 78 | } 79 | else { 80 | w.loadCSS = loadCSS; 81 | } 82 | }( typeof global !== "undefined" ? global : this )); 83 | 84 | /**/ 85 | 86 | (function ($) { 87 | "use strict"; 88 | $(function () { 89 | if( 'undefined'!== typeof WpDisableAsyncLinks && Object.keys(WpDisableAsyncLinks).length ){ 90 | var key; 91 | for(key in WpDisableAsyncLinks){ 92 | if(WpDisableAsyncLinks.hasOwnProperty(key)){ 93 | loadCSS(WpDisableAsyncLinks[key]); 94 | } 95 | } 96 | } 97 | }); 98 | }(jQuery)); -------------------------------------------------------------------------------- /css/optimisationio-import-export.css: -------------------------------------------------------------------------------- 1 | #wpadminbar{ 2 | padding:0; 3 | } 4 | 5 | .wrap-main *, 6 | .wrap-main *:before, 7 | .wrap-main *:after { 8 | box-sizing: border-box; 9 | } 10 | 11 | .wrap-main, 12 | .wrap-imp-exp-nav, 13 | .wrap-imp-exp-content{ 14 | position:relative; 15 | display:inline-block; 16 | width:100%; 17 | } 18 | 19 | .wrap-imp-exp-nav, 20 | .wrap-imp-exp-nav li{ 21 | margin:0; 22 | padding:0; 23 | } 24 | 25 | .wrap-imp-exp-nav{ 26 | float:left; 27 | margin-bottom:-1px; 28 | z-index:+1; 29 | } 30 | 31 | .wrap-imp-exp-nav li{ 32 | float:left; 33 | max-width:50%; 34 | display:inline-block; 35 | font-size: 1.1em; 36 | font-weight:500; 37 | border-width:1px; 38 | border-style:solid; 39 | border-color:#e5e5e5; 40 | border-color:transparent; 41 | } 42 | 43 | .wrap-imp-exp-nav li a{ 44 | display:block; 45 | padding:12px 20px; 46 | text-decoration: none; 47 | color:#858585; 48 | 49 | } 50 | 51 | .wrap-imp-exp-nav li a:focus{ 52 | -webkit-box-shadow:none; 53 | box-shadow:none; 54 | } 55 | 56 | .wrap-imp-exp-nav li:hover{ 57 | background:#e5e5e5; 58 | } 59 | 60 | .wrap-imp-exp-nav li:hover a{ 61 | color:#555; 62 | } 63 | 64 | .wrap-imp-exp-nav li.active{ 65 | border-color:#e5e5e5; 66 | border-bottom-color:#fff; 67 | background:#fff; 68 | -webkit-box-shadow: 0 0px 1px rgba(0,0,0,.04); 69 | box-shadow: 0 0px 1px rgba(0,0,0,.04); 70 | } 71 | 72 | .wrap-imp-exp-nav li.active a{ 73 | color:#23282d; 74 | } 75 | 76 | .wrap-imp-exp-content{ 77 | width:100%; 78 | display:inline-block; 79 | margin-bottom:5px; 80 | border:1px solid #e5e5e5; 81 | background:#fff; 82 | -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.04); 83 | box-shadow: 0 1px 1px rgba(0,0,0,.04); 84 | } 85 | 86 | .wrap-imp-exp-inner{ 87 | padding:10px; 88 | } 89 | 90 | 91 | .wrap-imp-exp-main{ 92 | display:none; 93 | width:100%; 94 | } 95 | 96 | .wrap-imp-exp-main .imp-exp-options{ 97 | float:left; 98 | width:35%; 99 | padding:10px; 100 | } 101 | 102 | .wrap-imp-exp-main .imp-exp-options label{ 103 | display:inline-block; 104 | width:100%; 105 | padding:15px 0; 106 | font-size:1.1em; 107 | font-weight: 500; 108 | line-height:1.5em; 109 | border-bottom:1px solid #e5e5e5; 110 | } 111 | 112 | .wrap-imp-exp-main .imp-exp-options label:last-child{ 113 | padding-bottom:0; 114 | border-bottom-width: 0; 115 | } 116 | 117 | .wrap-imp-exp-main .imp-exp-options label input{ 118 | margin:0 10px 0 0; 119 | } 120 | 121 | .wrap-imp-exp-main .textarea-wrap{ 122 | float:left; 123 | width:65%; 124 | padding:10px; 125 | } 126 | 127 | .wrap-imp-exp-main.c-export .textarea-wrap{ 128 | 129 | } 130 | 131 | .wrap-imp-exp-main .textarea-wrap textarea{ 132 | width:100%; 133 | padding:10px 15px; 134 | min-height:250px; 135 | display:block; 136 | margin:0; 137 | } 138 | 139 | .wrap-imp-exp-main .textarea-wrap textarea[readonly]{ 140 | color:#32373c; 141 | background:#f5f5f5; 142 | } 143 | 144 | .button.import-btn, 145 | .button.export-btn{ 146 | float:left; 147 | display:none; 148 | margin:15px 5px 0 0; 149 | } 150 | 151 | .button.copy-export-btn, 152 | .button.clear-import-btn{ 153 | float:right; 154 | display:none; 155 | margin:15px 0 0 5px; 156 | } 157 | 158 | .import-btn{ 159 | 160 | } 161 | 162 | .export-btn{ 163 | 164 | } 165 | 166 | .copy-export-btn{ 167 | 168 | } 169 | 170 | .clear-import-btn{ 171 | 172 | } 173 | 174 | .view-import .wrap-imp-exp-main.c-import, 175 | .view-import .button.clear-import-btn, 176 | .view-import .button.import-btn, 177 | .view-export .wrap-imp-exp-main.c-export, 178 | .view-export .button.copy-export-btn, 179 | .view-export .button.export-btn{ 180 | display:inline-block; 181 | } 182 | 183 | .button.copy-export-btn.hidden, 184 | .button.clear-import-btn.hidden{ 185 | display:none; 186 | } 187 | 188 | @media (max-width: 991px) { 189 | 190 | .wrap-imp-exp-main .imp-exp-options{ 191 | width:100%; 192 | } 193 | 194 | .wrap-imp-exp-main .textarea-wrap{ 195 | width:100%; 196 | } 197 | 198 | .wrap-imp-exp-main .imp-exp-options label{ 199 | line-height:2em; 200 | } 201 | } -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | = 1.3.22 = 2 | Added ability to Import and Export settings between sites 3 | Removed Visual Banner Ads from inside plugin 4 | Fix - Keep Active Tab State after saving 5 | Please note *** if you use either our cache or image compression plugin, they both need to be updated to take full advantage of these changes*** 6 | 7 | = 1.3.21 = 8 | Further cleanup to Navigation 9 | Fixed Pagination 10 | Improvements based on Settings --> Discussion core features 11 | **NEW Features:** 12 | Better Stats on Dashboard 13 | Disable loading dashicons on front end if admin bar disabled 14 | Disable Author Pages 15 | One click addon for Cache, CDN paths and Image Optimisation 16 | 17 | = 1.3.20 = 18 | Added Dashboard to show stats (work in progress) - aim is to get rid of the sidebar ads 19 | Moving towards a Modular version to enable a cleaner panel for users. 20 | Improved function checks for is WooCommerce active 21 | Improved Settings layout 22 | Added better analysis to help us improve. 23 | 24 | = 1.3.12 = 25 | Fix to Some features not showing on existing installs 26 | Updated menu icon 27 | tidied up navigation 28 | Removed Admin bar navigation 29 | 30 | = 1.3.11 = 31 | Added support for Heartbeat (please remove any other heartbeat plugins) 32 | Fixed sidebar navigation 33 | Added a top navigation for easy access (to support upcoming features) 34 | Fixed Remove RSD error 35 | General code tidy up and removed unused functions 36 | 37 | = 1.3.1 = 38 | Cleaned up navigation (moved to Optimisation.io in WP menu) 39 | 40 | = 1.3.0 = 41 | Added default option to Google Analytics to make it more clear when its active 42 | Option to Remove password strength meter js on non woo pages 43 | Added option to completely disable comments 44 | Improved folder/file structure 45 | Added option to disable feed, replaced Disable RSS 46 | Added option to remove spam comments 47 | Option to combine and async Google Fonts and Font awesome fonts for better performance 48 | Removed old versions from WP Repo for better WP Compliance 49 | 50 | = 1.2.26 = 51 | * Improved visuals 52 | * Cleaner Code, fixed issue that breaks access on some installs 53 | 54 | = 1.2.25 = 55 | * Bug fix breaking css on woo checkout pages 56 | 57 | = 1.2.24 = 58 | * Added ability to remove Ajax calls for WooCommerce on home page 59 | = 1.2.23 = 60 | * Fixed bug in GA Local 61 | 62 | = 1.2.22 = 63 | * Minor text clean up 64 | 65 | = 1.2.21 = 66 | * Fixed Google Maps bug where maps not showing 67 | 68 | = 1.2.2 = 69 | * Fix for GA bug where it disables tracking completely 70 | * IMPORTANT! please ensure you Disable any other GA tracking you have active 71 | * Moved Navigation under Tools to free up the sidebar 72 | * Minor edits on WooCommerce cleanup logic 73 | 74 | = 1.2.1 = 75 | * Fix GA options not saving 76 | 77 | = 1.2.0 = 78 | * Major update: 79 | * Added the ability to Cache Google Analytics scripts 80 | * Added the ability to remove Google Maps calls if your theme has it embedded but you don't want or use it. 81 | * Small bug fixes and general tidy up 82 | * Added links to our Caching Plugin and Image Compression 83 | 84 | 85 | = 1.1.9 = 86 | Fixed bug in querystrings not disabling fully 87 | 88 | = 1.1.8 = 89 | Small bug fix where we were showing other plugin notifications inside ours 90 | 91 | = 1.1.7 = 92 | Mainly Visual changes & prep for caching integration 93 | 94 | = 1.1.6 = 95 | Remove Query string activation crash fixed 96 | 97 | = 1.1.5 = 98 | Fixed bug on saving tabs from 1.1.4 99 | 100 | = 1.1.4 = 101 | Added a tabbed navigation for easier usability. 102 | 103 | = 1.1.3 = 104 | Added support for: Disable RSS, XML-RPC, Autosave, RSD, Windows Live Writer tag, Shortlink Tag, WP API from header which in a lot of sites can shave over 1 second on page load. 105 | 106 | = 1.1.2 = 107 | Added support for disable ping/trackbacks 108 | Added the ability to close comments after 28 days 109 | Added the ability to force pagination after 20 posts 110 | Added Disable WooCommerce scripts and CSS on non WooCommerce Pages 111 | 112 | = 1.0 = 113 | * Initial commit 114 | 115 | == Upgrade Notice == 116 | 117 | = 1.0 = 118 | Nothing here yet 119 | -------------------------------------------------------------------------------- /views/optimisationio-dashboard.php: -------------------------------------------------------------------------------- 1 | 4 |