Version Description
11/Jan/2019 =
FEATURE: Added the ability to download unused images list (Premium version) as a CSV file
FIX: Load scripts and styles only on WP-Optimize pages
FIX: Fix a possible fatal error due to missing get_plugins() function
TWEAK: Remember selected optimizations on Database page
TWEAK: Prevent PHP notices when saving settings or optimizing in some circumstances
Download this release
Release Info
Developer | DavidAnderson |
Plugin | WP-Optimize |
Version | 2.2.10 |
Comparing to | |
See all releases |
Code changes from version 2.2.9 to 2.2.10
- cache/class-wpo-cache-rules.php +140 -0
- cache/class-wpo-page-cache.php +439 -0
- cache/file-based-page-cache-functions.php +297 -0
- cache/file-based-page-cache.php +65 -0
- css/wp-optimize-admin.css +4 -1
- css/wp-optimize-admin.min.css +1 -1
- css/wp-optimize-admin.min.css.map +1 -1
- includes/class-wp-optimize-options.php +5 -2
- includes/class-wp-optimizer.php +16 -11
- includes/wp-optimize-database-information.php +3 -0
- languages/wp-optimize.pot +53 -53
- optimizations/commentmeta.php +2 -0
- optimizations/optimizetables.php +1 -1
- optimizations/orphandata.php +2 -0
- optimizations/orphanedtables.php +1 -1
- optimizations/pingbacks.php +2 -0
- optimizations/postmeta.php +2 -0
- optimizations/repairtables.php +1 -1
- optimizations/trackbacks.php +2 -0
- optimizations/transient.php +2 -0
- readme.txt +11 -2
- wp-optimize.php +6 -4
cache/class-wpo-cache-rules.php
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) die('No direct access allowed');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Page caching rules and exceptions
|
7 |
+
*/
|
8 |
+
|
9 |
+
if (!class_exists('WPO_Cache_Config')) require_once('class-wpo-cache-config.php');
|
10 |
+
|
11 |
+
if (!class_exists('WPO_Cache_Rules')) :
|
12 |
+
|
13 |
+
class WPO_Cache_Rules {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Cache config object
|
17 |
+
*
|
18 |
+
* @var mixed
|
19 |
+
*/
|
20 |
+
public $config;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Instance of this class
|
24 |
+
*
|
25 |
+
* @var mixed
|
26 |
+
*/
|
27 |
+
public static $instance;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Class constructor
|
31 |
+
*/
|
32 |
+
public function __construct() {
|
33 |
+
$this->config = WPO_Cache_Config::instance()->get();
|
34 |
+
$this->setup_hooks();
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Setup hooks/filters
|
39 |
+
*/
|
40 |
+
public function setup_hooks() {
|
41 |
+
add_action('pre_post_update', array($this, 'purge_post_on_update'), 10, 1);
|
42 |
+
add_action('save_post', array($this, 'purge_post_on_update'), 10, 1);
|
43 |
+
add_action('wp_trash_post', array($this, 'purge_post_on_update'), 10, 1);
|
44 |
+
add_action('wp_set_comment_status', array($this, 'purge_post_on_comment_status_change'), 10);
|
45 |
+
add_action('set_comment_cookies', array($this, 'set_comment_cookie_exceptions'), 10);
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* When user posts a comment, set a cookie so we don't show them page cache
|
50 |
+
*
|
51 |
+
* @param WP_Comment $comment Comment to check.
|
52 |
+
*/
|
53 |
+
public function set_comment_cookie_exceptions($comment) {
|
54 |
+
|
55 |
+
if (empty($this->config['enable_page_caching'])) return;
|
56 |
+
|
57 |
+
$path = $this->get_post_path($comment->comment_post_ID);
|
58 |
+
|
59 |
+
$this->purge_from_cache($path);
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Purge files for a particular path from the cache
|
64 |
+
*
|
65 |
+
* @param String $path - the path
|
66 |
+
*/
|
67 |
+
public function purge_from_cache($path) {
|
68 |
+
WPO_Page_Cache::delete(untrailingslashit($path) . '/index.html');
|
69 |
+
WPO_Page_Cache::delete(untrailingslashit($path) . '/index.gzip.html');
|
70 |
+
|
71 |
+
if (!empty($this->config['enable_mobile_caching'])) {
|
72 |
+
WPO_Page_Cache::delete(untrailingslashit($path) . '/mobile.index.html');
|
73 |
+
WPO_Page_Cache::delete(untrailingslashit($path) . '/mobile.index.gzip.html');
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Get the cache path for a given post
|
80 |
+
*
|
81 |
+
* @param Integer $post_id - WP post ID
|
82 |
+
*
|
83 |
+
* @return String
|
84 |
+
*/
|
85 |
+
private function get_post_path($post_id) {
|
86 |
+
return WPO_CACHE_DIR . preg_replace('#^https?://#i', '', get_permalink($post_id));
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Every time a comment's status changes, purge it's parent posts cache
|
91 |
+
*
|
92 |
+
* @param Integer $comment_id Comment ID.
|
93 |
+
*/
|
94 |
+
public function purge_post_on_comment_status_change($comment_id) {
|
95 |
+
|
96 |
+
if (empty($this->config['enable_page_caching'])) return;
|
97 |
+
|
98 |
+
$comment = get_comment($comment_id);
|
99 |
+
|
100 |
+
$path = $this->get_post_path($comment->comment_post_ID);
|
101 |
+
|
102 |
+
$this->purge_from_cache($path);
|
103 |
+
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Automatically purge all file based page cache on post changes
|
108 |
+
* We want the whole cache purged here as different parts
|
109 |
+
* of the site could potentially change on post updates
|
110 |
+
*
|
111 |
+
* @param Integer $post_id WordPress post id
|
112 |
+
*/
|
113 |
+
public function purge_post_on_update($post_id) {
|
114 |
+
$post_type = get_post_type($post_id);
|
115 |
+
|
116 |
+
if ((defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || 'revision' === $post_type) {
|
117 |
+
return;
|
118 |
+
} elseif (!current_user_can('edit_post', $post_id) && (!defined('DOING_CRON') || !DOING_CRON)) {
|
119 |
+
return;
|
120 |
+
}
|
121 |
+
|
122 |
+
if (!empty($this->config['enable_page_caching'])) {
|
123 |
+
wpo_cache_flush();
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Returns an instance of the current class, creates one if it doesn't exist
|
129 |
+
*
|
130 |
+
* @return WPO_Cache_Rules
|
131 |
+
*/
|
132 |
+
public static function instance() {
|
133 |
+
if (empty(self::$instance)) {
|
134 |
+
self::$instance = new self();
|
135 |
+
}
|
136 |
+
return self::$instance;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
endif;
|
cache/class-wpo-page-cache.php
ADDED
@@ -0,0 +1,439 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Page caching functionality
|
4 |
+
*/
|
5 |
+
|
6 |
+
if (!defined('ABSPATH')) die('No direct access allowed');
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Base cache directory, everything else goes under here
|
10 |
+
*/
|
11 |
+
if (!defined('WPO_CACHE_DIR')) define('WPO_CACHE_DIR', untrailingslashit(WP_CONTENT_DIR).'/wpo-cache');
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Directory that stores config and related files
|
15 |
+
*/
|
16 |
+
if (!defined('WPO_CACHE_CONFIG_DIR')) define('WPO_CACHE_CONFIG_DIR', WPO_CACHE_DIR.'/config');
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Directory that stores the cache, including gzipped files and mobile specifc cache
|
20 |
+
*/
|
21 |
+
if (!defined('WPO_CACHE_FILES_DIR')) define('WPO_CACHE_FILES_DIR', WPO_CACHE_DIR.'/cache');
|
22 |
+
|
23 |
+
|
24 |
+
if (!class_exists('WPO_Cache_Config')) require_once('class-wpo-cache-config.php');
|
25 |
+
if (!class_exists('WPO_Cache_Rules')) require_once('class-wpo-cache-rules.php');
|
26 |
+
|
27 |
+
if (!class_exists('Updraft_PHP_Logger')) require_once(WPO_PLUGIN_MAIN_PATH.'/includes/class-updraft-php-logger.php');
|
28 |
+
|
29 |
+
if (!class_exists('WPO_Page_Cache')) :
|
30 |
+
|
31 |
+
class WPO_Page_Cache {
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Cache config object
|
35 |
+
*
|
36 |
+
* @var mixed
|
37 |
+
*/
|
38 |
+
public $config;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Logger for this class
|
42 |
+
*
|
43 |
+
* @var mixed
|
44 |
+
*/
|
45 |
+
public $logger;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Instance of this class
|
49 |
+
*
|
50 |
+
* @var mixed
|
51 |
+
*/
|
52 |
+
public static $instance;
|
53 |
+
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Set everything up here
|
57 |
+
*/
|
58 |
+
public function __construct() {
|
59 |
+
$this->config = WPO_Cache_Config::instance();
|
60 |
+
$this->rules = WPO_Cache_Rules::instance();
|
61 |
+
$this->logger = new Updraft_PHP_Logger();
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Enables page cache
|
66 |
+
*
|
67 |
+
* @param array $options - options for caching
|
68 |
+
* @return WP_Error|bool - true on success, error otherwise
|
69 |
+
*/
|
70 |
+
public function enable($options = array()) {
|
71 |
+
|
72 |
+
if (!$this->create_folders()) {
|
73 |
+
return new WP_Error("create_folders", "The request to the filesystem to create the cache directories failed");
|
74 |
+
}
|
75 |
+
|
76 |
+
|
77 |
+
if (!$this->write_advanced_cache()) {
|
78 |
+
return new WP_Error("write_advanced_cache", "The request to write the advanced-cache.php file failed");
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
if (!$this->write_wp_config(true)) {
|
83 |
+
return new WP_Error("write_wp_config", "Could not toggle the WP_CACHE constant in wp-config.php");
|
84 |
+
}
|
85 |
+
|
86 |
+
if (!$this->verify_cache()) {
|
87 |
+
return new WP_Error("verify_cache", "Could not verify if cache was enabled");
|
88 |
+
}
|
89 |
+
|
90 |
+
$this->config->update($options);
|
91 |
+
|
92 |
+
return true;
|
93 |
+
}
|
94 |
+
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Disables page cache
|
98 |
+
*
|
99 |
+
* @return bool - true on success, false otherwise
|
100 |
+
*/
|
101 |
+
public function disable() {
|
102 |
+
$ret = true;
|
103 |
+
|
104 |
+
if (!self::delete(untrailingslashit(WP_CONTENT_DIR) . '/advanced-cache.php')) {
|
105 |
+
$this->log("The request to the filesystem to delete the advanced-cache.php failed");
|
106 |
+
$ret = false;
|
107 |
+
}
|
108 |
+
|
109 |
+
if (!$this->write_wp_config(false)) {
|
110 |
+
$this->log("Could not toggle the WP_CACHE constant in wp-config.php");
|
111 |
+
$ret = false;
|
112 |
+
}
|
113 |
+
|
114 |
+
return $ret;
|
115 |
+
}
|
116 |
+
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Purges the cache
|
120 |
+
*
|
121 |
+
* @return bool - true on success, false otherwise
|
122 |
+
*/
|
123 |
+
public function purge() {
|
124 |
+
|
125 |
+
if (!self::delete(WPO_CACHE_FILES_DIR)) {
|
126 |
+
$this->log("The request to the filesystem to delete the cache failed");
|
127 |
+
return false;
|
128 |
+
}
|
129 |
+
|
130 |
+
return true;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Purges the cache
|
135 |
+
*
|
136 |
+
* @return bool - true on success, false otherwise
|
137 |
+
*/
|
138 |
+
public function clean_up() {
|
139 |
+
|
140 |
+
$this->disable();
|
141 |
+
|
142 |
+
if (!self::delete(WPO_CACHE_DIR, true)) {
|
143 |
+
$this->log("The request to the filesystem to clean up the cache failed");
|
144 |
+
return false;
|
145 |
+
}
|
146 |
+
|
147 |
+
return true;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Check if cache is enabled and working
|
152 |
+
*
|
153 |
+
* @return bool - true on success, false otherwise
|
154 |
+
*/
|
155 |
+
public function is_enabled() {
|
156 |
+
|
157 |
+
if (!defined('WP_CACHE') || !WP_CACHE) {
|
158 |
+
return false;
|
159 |
+
}
|
160 |
+
|
161 |
+
if (!defined('WPO_ADVANCED_CACHE') || !WPO_ADVANCED_CACHE) {
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
|
165 |
+
if (empty($this->config['enable_page_caching'])) {
|
166 |
+
return false;
|
167 |
+
}
|
168 |
+
|
169 |
+
return true;
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Create the folder structure needed for cache to work
|
174 |
+
*
|
175 |
+
* @return bool - true on success, false otherwise
|
176 |
+
*/
|
177 |
+
private function create_folders() {
|
178 |
+
|
179 |
+
if (!is_dir(WPO_CACHE_DIR) && !mkdir(WPO_CACHE_DIR)) {
|
180 |
+
$this->log('The request to the filesystem failed, unable to create - ' . WPO_CACHE_DIR);
|
181 |
+
return false;
|
182 |
+
}
|
183 |
+
|
184 |
+
if (!is_dir(WPO_CACHE_CONFIG_DIR) && !mkdir(WPO_CACHE_CONFIG_DIR)) {
|
185 |
+
$this->log('The request to the filesystem failed, unable to create - ' . WPO_CACHE_CONFIG_DIR);
|
186 |
+
return false;
|
187 |
+
}
|
188 |
+
|
189 |
+
if (!is_dir(WPO_CACHE_FILES_DIR) && !mkdir(WPO_CACHE_FILES_DIR)) {
|
190 |
+
$this->log('The request to the filesystem failed, unable to create - ' . WPO_CACHE_FILES_DIR);
|
191 |
+
return false;
|
192 |
+
}
|
193 |
+
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Writes advanced-cache.php
|
199 |
+
*
|
200 |
+
* @return bool
|
201 |
+
*/
|
202 |
+
private function write_advanced_cache() {
|
203 |
+
|
204 |
+
$file = untrailingslashit(WP_CONTENT_DIR) . '/advanced-cache.php';
|
205 |
+
$contents = '';
|
206 |
+
|
207 |
+
if (!empty($config['enable_page_caching'])) {
|
208 |
+
return false;
|
209 |
+
}
|
210 |
+
|
211 |
+
$cache_file = untrailingslashit(plugin_dir_path(__FILE__)) . '/file-based-page-cache.php';
|
212 |
+
$config_file = WPO_CACHE_CONFIG_DIR . '/config-' . $_SERVER['HTTP_HOST'] . '.php';
|
213 |
+
$cache_path = WPO_CACHE_DIR;
|
214 |
+
$cache_config_path = WPO_CACHE_CONFIG_DIR;
|
215 |
+
$cache_files_path = WPO_CACHE_FILES_DIR;
|
216 |
+
|
217 |
+
// CS does not like heredoc
|
218 |
+
// @codingStandardsIgnoreStart
|
219 |
+
$contents = <<<EOF
|
220 |
+
<?php
|
221 |
+
|
222 |
+
if (!defined('ABSPATH')) die('No direct access allowed');
|
223 |
+
|
224 |
+
if (!defined('WPO_ADVANCED_CACHE')) define('WPO_ADVANCED_CACHE', true);
|
225 |
+
if (!defined('WPO_CACHE_DIR')) define('WPO_CACHE_DIR', '$cache_path');
|
226 |
+
if (!defined('WPO_CACHE_CONFIG_DIR')) define('WPO_CACHE_CONFIG_DIR', '$cache_config_path');
|
227 |
+
if (!defined('WPO_CACHE_FILES_DIR')) define('WPO_CACHE_FILES_DIR', '$cache_files_path');
|
228 |
+
|
229 |
+
if (is_admin()) { return; }
|
230 |
+
if (!@file_exists('$config_file')) { return; }
|
231 |
+
|
232 |
+
\$GLOBALS['wpo_cache_config'] = json_decode(file_get_contents('$config_file'), true);
|
233 |
+
|
234 |
+
if (empty(\$GLOBALS['wpo_cache_config']) || empty(\$GLOBALS['wpo_cache_config']['enable_page_caching'])) { return; }
|
235 |
+
|
236 |
+
if (@file_exists('$cache_file')) { include_once('$cache_file'); }
|
237 |
+
|
238 |
+
EOF;
|
239 |
+
// @codingStandardsIgnoreEnd
|
240 |
+
if (!file_put_contents($file, $contents)) {
|
241 |
+
return false;
|
242 |
+
}
|
243 |
+
|
244 |
+
return true;
|
245 |
+
}
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Set WP_CACHE on or off in wp-config.php
|
249 |
+
*
|
250 |
+
* @param boolean $status value of WP_CACHE.
|
251 |
+
* @return boolean true if the value was set, false otherwise
|
252 |
+
*/
|
253 |
+
private function write_wp_config($status = true) {
|
254 |
+
|
255 |
+
if (defined('WP_CACHE') && WP_CACHE === $status) {
|
256 |
+
return true;
|
257 |
+
}
|
258 |
+
|
259 |
+
$config_path = $this->_get_wp_config();
|
260 |
+
|
261 |
+
// Couldn't find wp-config.php.
|
262 |
+
if (!$config_path) {
|
263 |
+
return false;
|
264 |
+
}
|
265 |
+
|
266 |
+
$config_file_string = file_get_contents($config_path);
|
267 |
+
|
268 |
+
// Config file is empty. Maybe couldn't read it?
|
269 |
+
if (empty($config_file_string)) {
|
270 |
+
return false;
|
271 |
+
}
|
272 |
+
|
273 |
+
$config_file = preg_split("#(\n|\r)#", $config_file_string);
|
274 |
+
$line_key = false;
|
275 |
+
|
276 |
+
foreach ($config_file as $key => $line) {
|
277 |
+
if (!preg_match('/^\s*define\(\s*(\'|")([A-Z_]+)(\'|")(.*)/i', $line, $match)) {
|
278 |
+
continue;
|
279 |
+
}
|
280 |
+
|
281 |
+
if ('WP_CACHE' === $match[2]) {
|
282 |
+
$line_key = $key;
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
if (false !== $line_key) {
|
287 |
+
unset($config_file[$line_key]);
|
288 |
+
}
|
289 |
+
|
290 |
+
|
291 |
+
if ($status) {
|
292 |
+
array_shift($config_file);
|
293 |
+
array_unshift($config_file, '<?php', "define('WP_CACHE', true); // WP-Optimize Cache");
|
294 |
+
}
|
295 |
+
|
296 |
+
foreach ($config_file as $key => $line) {
|
297 |
+
if ('' === $line) {
|
298 |
+
unset($config_file[$key]);
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
if (file_put_contents($config_path, implode("\r\n", $config_file))) {
|
303 |
+
return false;
|
304 |
+
}
|
305 |
+
|
306 |
+
return true;
|
307 |
+
}
|
308 |
+
|
309 |
+
/**
|
310 |
+
* Verify we can write to the file system
|
311 |
+
*
|
312 |
+
* @return boolean
|
313 |
+
*/
|
314 |
+
private function verify_cache() {
|
315 |
+
if (function_exists('clearstatcache')) {
|
316 |
+
clearstatcache();
|
317 |
+
}
|
318 |
+
|
319 |
+
// First check wp-config.php.
|
320 |
+
if (!$this->_get_wp_config() && !is_writable($this->_get_wp_config())) {
|
321 |
+
$this->log("Unable to write to or find wp-config.php, please check file/folder permissions");
|
322 |
+
return false;
|
323 |
+
}
|
324 |
+
|
325 |
+
// Now check wp-content. We need to be able to create files of the same user as this file.
|
326 |
+
if (!is_writable(untrailingslashit(WP_CONTENT_DIR))) {
|
327 |
+
$this->log("Unable to write inside the wp-content folder, please check file/folder permissions");
|
328 |
+
return false;
|
329 |
+
}
|
330 |
+
|
331 |
+
// If the cache and config directories exist, make sure they're writeable.
|
332 |
+
if (file_exists(WPO_CACHE_DIR)) {
|
333 |
+
if (!is_writable(WPO_CACHE_DIR)) {
|
334 |
+
$this->log("Unable to write inside the cache folder, please check file/folder permissions");
|
335 |
+
return false;
|
336 |
+
}
|
337 |
+
}
|
338 |
+
|
339 |
+
if (file_exists(WPO_CACHE_FILES_DIR)) {
|
340 |
+
if (!is_writable(WPO_CACHE_FILES_DIR)) {
|
341 |
+
$this->log("Unable to write inside the cache files folder, please check file/folder permissions");
|
342 |
+
return false;
|
343 |
+
}
|
344 |
+
}
|
345 |
+
|
346 |
+
if (file_exists(WPO_CACHE_CONFIG_DIR)) {
|
347 |
+
if (!is_writable(WPO_CACHE_CONFIG_DIR)) {
|
348 |
+
$this->log("Unable to write inside the cache configuration folder, please check file/folder permissions");
|
349 |
+
return false;
|
350 |
+
}
|
351 |
+
}
|
352 |
+
|
353 |
+
return true;
|
354 |
+
}
|
355 |
+
|
356 |
+
/**
|
357 |
+
* Returns the path to wp-config
|
358 |
+
*
|
359 |
+
* @return string wp-config.php path.
|
360 |
+
*/
|
361 |
+
private function _get_wp_config() {
|
362 |
+
|
363 |
+
$file = '/wp-config.php';
|
364 |
+
$config_path = false;
|
365 |
+
|
366 |
+
foreach (get_included_files() as $filename) {
|
367 |
+
if (0 === stripos(strrev($filename), strrev($file))) {
|
368 |
+
$config_path = $filename;
|
369 |
+
}
|
370 |
+
}
|
371 |
+
|
372 |
+
// Couldn't find wp-config.php.
|
373 |
+
if (!$config_path) {
|
374 |
+
return false;
|
375 |
+
}
|
376 |
+
|
377 |
+
return $config_path;
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Util to delete folders and/or files
|
382 |
+
*
|
383 |
+
* @param string $src
|
384 |
+
* @return boolean
|
385 |
+
*/
|
386 |
+
public static function delete($src) {
|
387 |
+
|
388 |
+
if (!file_exists($src)) {
|
389 |
+
return true;
|
390 |
+
}
|
391 |
+
|
392 |
+
if (is_dir($src)) {
|
393 |
+
$dir = opendir($src);
|
394 |
+
while (false !== ($file = readdir($dir))) {
|
395 |
+
if (('.' != $file) && ('..' != $file)) {
|
396 |
+
if (is_dir($src . '/' . $file)) {
|
397 |
+
self::delete($src . '/' . $file);
|
398 |
+
} else {
|
399 |
+
unlink($src . '/' . $file);
|
400 |
+
}
|
401 |
+
}
|
402 |
+
}
|
403 |
+
closedir($dir);
|
404 |
+
rmdir($src);
|
405 |
+
} else {
|
406 |
+
unlink($src);
|
407 |
+
}
|
408 |
+
|
409 |
+
return true;
|
410 |
+
}
|
411 |
+
|
412 |
+
/**
|
413 |
+
* Logs error messages
|
414 |
+
*
|
415 |
+
* @param string $message
|
416 |
+
* @return null|void
|
417 |
+
*/
|
418 |
+
public function log($message) {
|
419 |
+
if (isset($this->logger)) {
|
420 |
+
$this->logger->log('ERROR', $message);
|
421 |
+
} else {
|
422 |
+
error_log($message);
|
423 |
+
}
|
424 |
+
}
|
425 |
+
|
426 |
+
/**
|
427 |
+
* Returns an instance of the current class, creates one if it doesn't exist
|
428 |
+
*
|
429 |
+
* @return object
|
430 |
+
*/
|
431 |
+
public static function instance() {
|
432 |
+
if (empty(self::$instance)) {
|
433 |
+
self::$instance = new self();
|
434 |
+
}
|
435 |
+
return self::$instance;
|
436 |
+
}
|
437 |
+
}
|
438 |
+
|
439 |
+
endif;
|
cache/file-based-page-cache-functions.php
ADDED
@@ -0,0 +1,297 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) die('No direct access allowed');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Holds utility functions used by file based cache
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Cache output before it goes to the browser
|
11 |
+
*
|
12 |
+
* @param string $buffer Page HTML.
|
13 |
+
* @param int $flags OB flags to be passed through.
|
14 |
+
* @return string
|
15 |
+
*/
|
16 |
+
function wpo_cache($buffer, $flags) {
|
17 |
+
global $post;
|
18 |
+
|
19 |
+
if (strlen($buffer) < 255) {
|
20 |
+
return $buffer;
|
21 |
+
}
|
22 |
+
|
23 |
+
// Don't cache search, 404, or password protected.
|
24 |
+
if (is_404() || is_search() || !empty($post->post_password)) {
|
25 |
+
return $buffer;
|
26 |
+
}
|
27 |
+
|
28 |
+
// No root cache folder, exit here
|
29 |
+
if (!file_exists(WPO_CACHE_DIR)) {
|
30 |
+
// Can not cache!
|
31 |
+
return $buffer;
|
32 |
+
}
|
33 |
+
|
34 |
+
// Try creating a folder for cached files, if it was flushed recently
|
35 |
+
if (!file_exists(WPO_CACHE_FILES_DIR)) {
|
36 |
+
if (!mkdir(WPO_CACHE_FILES_DIR)) {
|
37 |
+
// Can not cache!
|
38 |
+
return $buffer;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
$buffer = apply_filters('wpo_pre_cache_buffer', $buffer);
|
43 |
+
|
44 |
+
$url_path = wpo_get_url_path();
|
45 |
+
|
46 |
+
$dirs = explode('/', $url_path);
|
47 |
+
|
48 |
+
$path = WPO_CACHE_FILES_DIR;
|
49 |
+
|
50 |
+
foreach ($dirs as $dir) {
|
51 |
+
if (!empty($dir)) {
|
52 |
+
$path .= '/' . $dir;
|
53 |
+
|
54 |
+
if (!file_exists($path)) {
|
55 |
+
if (!mkdir($path)) {
|
56 |
+
// Can not cache!
|
57 |
+
return $buffer;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
$modified_time = time(); // Make sure modified time is consistent.
|
64 |
+
|
65 |
+
// Prevent mixed content when there's an http request but the site URL uses https.
|
66 |
+
$home_url = get_home_url();
|
67 |
+
|
68 |
+
if (!is_ssl() && 'https' === strtolower(parse_url($home_url, PHP_URL_SCHEME))) {
|
69 |
+
$https_home_url = $home_url;
|
70 |
+
$http_home_url = str_ireplace('https://', 'http://', $https_home_url);
|
71 |
+
$buffer = str_replace(esc_url($http_home_url), esc_url($https_home_url), $buffer);
|
72 |
+
}
|
73 |
+
|
74 |
+
if (preg_match('#</html>#i', $buffer)) {
|
75 |
+
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
76 |
+
$buffer .= "\n<!-- Cached by WP Optimize for mobile devices - Last modified: " . gmdate('D, d M Y H:i:s', $modified_time) . " GMT -->\n";
|
77 |
+
} else {
|
78 |
+
$buffer .= "\n<!-- Cached by WP Optimize - Last modified: " . gmdate('D, d M Y H:i:s', $modified_time) . " GMT -->\n";
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
if (!empty($GLOBALS['wpo_cache_config']['enable_gzip_compression']) && function_exists('gzencode')) {
|
83 |
+
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
84 |
+
file_put_contents($path . '/mobile.index.gzip.html', gzencode($buffer, 3));
|
85 |
+
touch($path . '/mobile.index.gzip.html', $modified_time);
|
86 |
+
} else {
|
87 |
+
file_put_contents($path . '/index.gzip.html', gzencode($buffer, 3));
|
88 |
+
touch($path . '/index.gzip.html', $modified_time);
|
89 |
+
}
|
90 |
+
} else {
|
91 |
+
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
92 |
+
file_put_contents($path . '/mobile.index.html', $buffer);
|
93 |
+
touch($path . '/mobile.index.html', $modified_time);
|
94 |
+
} else {
|
95 |
+
file_put_contents($path . '/index.html', $buffer);
|
96 |
+
touch($path . '/index.html', $modified_time);
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
header('Cache-Control: no-cache'); // Check back every time to see if re-download is necessary.
|
101 |
+
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $modified_time) . ' GMT');
|
102 |
+
|
103 |
+
if (function_exists('ob_gzhandler') && !empty($GLOBALS['wpo_cache_config']['enable_gzip_compression'])) {
|
104 |
+
return ob_gzhandler($buffer, $flags);
|
105 |
+
} else {
|
106 |
+
return $buffer;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Serves the cache and exits
|
112 |
+
*/
|
113 |
+
function wpo_serve_cache() {
|
114 |
+
$file_name = 'index.html';
|
115 |
+
|
116 |
+
if (function_exists('gzencode') && !empty($GLOBALS['wpo_cache_config']['enable_gzip_compression'])) {
|
117 |
+
$file_name = 'index.gzip.html';
|
118 |
+
}
|
119 |
+
|
120 |
+
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
121 |
+
$file_name = 'mobile.' . $file_name;
|
122 |
+
}
|
123 |
+
|
124 |
+
$path = WPO_CACHE_FILES_DIR . '/' . rtrim(wpo_get_url_path(), '/') . '/' . $file_name;
|
125 |
+
|
126 |
+
|
127 |
+
$modified_time = file_exists($path) ? (int) filemtime($path) : time();
|
128 |
+
|
129 |
+
header('Cache-Control: no-cache'); // Check back in an hour.
|
130 |
+
|
131 |
+
if (!empty($modified_time) && !empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) === $modified_time) {
|
132 |
+
if (function_exists('gzencode') && !empty($GLOBALS['wpo_cache_config']['enable_gzip_compression'])) {
|
133 |
+
header('Content-Encoding: gzip');
|
134 |
+
}
|
135 |
+
|
136 |
+
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified', true, 304);
|
137 |
+
exit;
|
138 |
+
}
|
139 |
+
|
140 |
+
if (file_exists($path) && is_readable($path)) {
|
141 |
+
if (function_exists('gzencode') && !empty($GLOBALS['wpo_cache_config']['enable_gzip_compression'])) {
|
142 |
+
header('Content-Encoding: gzip');
|
143 |
+
}
|
144 |
+
|
145 |
+
readfile($path);
|
146 |
+
|
147 |
+
exit;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Clears the cache
|
153 |
+
*/
|
154 |
+
function wpo_cache_flush() {
|
155 |
+
|
156 |
+
$this->wpo_delete_files(WPO_CACHE_FILES_DIR);
|
157 |
+
|
158 |
+
if (function_exists('wp_cache_flush')) {
|
159 |
+
wp_cache_flush();
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Get URL path for caching
|
165 |
+
*
|
166 |
+
* @since 1.0
|
167 |
+
* @return string
|
168 |
+
*/
|
169 |
+
function wpo_get_url_path() {
|
170 |
+
|
171 |
+
$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
|
172 |
+
|
173 |
+
return rtrim($host, '/') . $_SERVER['REQUEST_URI'];
|
174 |
+
}
|
175 |
+
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Return true of exception url matches current url
|
179 |
+
*
|
180 |
+
* @param string $exception Exceptions to check URL against.
|
181 |
+
* @param bool $regex Whether to check with regex or not.
|
182 |
+
* @return bool true if matched, false otherwise
|
183 |
+
*/
|
184 |
+
function wpo_url_exception_match($exception, $regex = false ) {
|
185 |
+
if (preg_match('#^[\s]*$#', $exception)) return false;
|
186 |
+
|
187 |
+
$exception = trim($exception);
|
188 |
+
|
189 |
+
if (!preg_match('#^/#', $exception)) {
|
190 |
+
|
191 |
+
$url = rtrim('http' . (isset($_SERVER['HTTPS']) ? 's' : '' ) . '://' . "{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}", '/');
|
192 |
+
|
193 |
+
if ($regex) {
|
194 |
+
if (preg_match('#^' . $exception . '$#', $url)) {
|
195 |
+
// Exception match!
|
196 |
+
return true;
|
197 |
+
}
|
198 |
+
} elseif (preg_match('#\*$#', $exception)) {
|
199 |
+
$filtered_exception = str_replace('*', '', $exception);
|
200 |
+
|
201 |
+
if (preg_match('#^' . $filtered_exception . '#', $url)) {
|
202 |
+
// Exception match!
|
203 |
+
return true;
|
204 |
+
}
|
205 |
+
} else {
|
206 |
+
$exception = rtrim($exception, '/');
|
207 |
+
|
208 |
+
if (strtolower($exception) === strtolower($url)) {
|
209 |
+
// Exception match!
|
210 |
+
return true;
|
211 |
+
}
|
212 |
+
}
|
213 |
+
} else {
|
214 |
+
$path = $_SERVER['REQUEST_URI'];
|
215 |
+
|
216 |
+
if ($regex) {
|
217 |
+
if (preg_match('#^' . $exception . '$#', $path)) {
|
218 |
+
// Exception match!
|
219 |
+
return true;
|
220 |
+
}
|
221 |
+
} elseif (preg_match('#\*$#', $exception)) {
|
222 |
+
$filtered_exception = preg_replace('#/?\*#', '', $exception);
|
223 |
+
|
224 |
+
if (preg_match('#^' . $filtered_exception . '#i', $path)) {
|
225 |
+
// Exception match!
|
226 |
+
return true;
|
227 |
+
}
|
228 |
+
} else {
|
229 |
+
if ('/' !== $path) {
|
230 |
+
$path = rtrim($path, '/');
|
231 |
+
}
|
232 |
+
|
233 |
+
if ('/' !== $exception) {
|
234 |
+
$exception = rtrim($exception, '/');
|
235 |
+
}
|
236 |
+
|
237 |
+
if (strtolower($exception) === strtolower($path)) {
|
238 |
+
// Exception match!
|
239 |
+
return true;
|
240 |
+
}
|
241 |
+
}
|
242 |
+
}
|
243 |
+
|
244 |
+
return false;
|
245 |
+
}
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Checks if its a mobile device
|
249 |
+
*
|
250 |
+
* @see https://developer.wordpress.org/reference/functions/wp_is_mobile/
|
251 |
+
*/
|
252 |
+
function wpo_is_mobile() {
|
253 |
+
if (empty($_SERVER['HTTP_USER_AGENT'])) {
|
254 |
+
$is_mobile = false;
|
255 |
+
// many mobile devices (all iPhone, iPad, etc.)
|
256 |
+
} elseif (false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile')
|
257 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Android')
|
258 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/')
|
259 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle')
|
260 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry')
|
261 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini')
|
262 |
+
|| false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi')
|
263 |
+
) {
|
264 |
+
$is_mobile = true;
|
265 |
+
} else {
|
266 |
+
$is_mobile = false;
|
267 |
+
}
|
268 |
+
|
269 |
+
return $is_mobile;
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Delete function that deals with directories recursively
|
274 |
+
*
|
275 |
+
* @param string $src path of the folder
|
276 |
+
*/
|
277 |
+
function wpo_delete_files($src) {
|
278 |
+
if (!file_exists($src)) return;
|
279 |
+
|
280 |
+
if (is_file($src)) unlink($src);
|
281 |
+
|
282 |
+
$dir = opendir($src);
|
283 |
+
$file = readdir($dir);
|
284 |
+
|
285 |
+
while (false !== $file) {
|
286 |
+
if ('.' != $file && '..' != $file) {
|
287 |
+
if (is_dir($src . '/' . $file)) {
|
288 |
+
wpo_delete_files($src . '/' . $file);
|
289 |
+
} else {
|
290 |
+
unlink($src . '/' . $file);
|
291 |
+
}
|
292 |
+
}
|
293 |
+
}
|
294 |
+
|
295 |
+
closedir($dir);
|
296 |
+
rmdir($src);
|
297 |
+
}
|
cache/file-based-page-cache.php
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) die('No direct access allowed');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* File based page cache drop in
|
7 |
+
*/
|
8 |
+
require_once(dirname(__FILE__) . '/file-based-page-cache-functions.php');
|
9 |
+
|
10 |
+
// Don't cache robots.txt or htacesss.
|
11 |
+
if (false !== strpos($_SERVER['REQUEST_URI'], 'robots.txt') || false !== strpos($_SERVER['REQUEST_URI'], '.htaccess')) {
|
12 |
+
return;
|
13 |
+
}
|
14 |
+
|
15 |
+
// Don't cache non-GET requests.
|
16 |
+
if (!isset($_SERVER['REQUEST_METHOD']) || 'GET' !== $_SERVER['REQUEST_METHOD']) return;
|
17 |
+
|
18 |
+
$file_extension = $_SERVER['REQUEST_URI'];
|
19 |
+
$file_extension = preg_replace('#^(.*?)\?.*$#', '$1', $file_extension);
|
20 |
+
$file_extension = trim(preg_replace('#^.*\.(.*)$#', '$1', $file_extension));
|
21 |
+
|
22 |
+
// Don't cache disallowed extensions. Prevents wp-cron.php, xmlrpc.php, etc.
|
23 |
+
if (!preg_match('#index\.php$#i', $_SERVER['REQUEST_URI']) && in_array($file_extension, array( 'php', 'xml', 'xsl' ))) {
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
// Don't cache if logged in.
|
28 |
+
if (!empty($_COOKIE)) {
|
29 |
+
$wp_cookies = array( 'wordpressuser_', 'wordpresspass_', 'wordpress_sec_', 'wordpress_logged_in_' );
|
30 |
+
|
31 |
+
foreach ($_COOKIE as $key => $value) {
|
32 |
+
foreach ($wp_cookies as $cookie) {
|
33 |
+
if (strpos($key, $cookie) !== false) {
|
34 |
+
// Logged in!
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
if (!empty($_COOKIE['wpo_commented_posts'])) {
|
41 |
+
foreach ($_COOKIE['wpo_commented_posts'] as $path) {
|
42 |
+
if (rtrim($path, '/') === rtrim($_SERVER['REQUEST_URI'], '/')) {
|
43 |
+
// User commented on this post.
|
44 |
+
return;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
// Deal with optional cache exceptions.
|
51 |
+
if (!empty($GLOBALS['wpo_cache_config']['cache_exception_urls'])) {
|
52 |
+
$exceptions = preg_split('#(\n|\r)#', $GLOBALS['wpo_cache_config']['cache_exception_urls']);
|
53 |
+
$regex = !empty($GLOBALS['wpo_cache_config']['enable_url_exemption_regex']);
|
54 |
+
|
55 |
+
foreach ($exceptions as $exception) {
|
56 |
+
if (wpo_url_exception_match($exception, $regex)) {
|
57 |
+
// Exception match.
|
58 |
+
return;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
wpo_serve_cache();
|
64 |
+
|
65 |
+
ob_start('wpo_cache');
|
css/wp-optimize-admin.css
CHANGED
@@ -1321,7 +1321,10 @@ h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons, h
|
|
1321 |
user-select: none;
|
1322 |
}
|
1323 |
|
1324 |
-
.wpo_unused_image .wpo_unused_image__input:checked + label,
|
|
|
|
|
|
|
1325 |
border-color: #0272AA;
|
1326 |
}
|
1327 |
|
1321 |
user-select: none;
|
1322 |
}
|
1323 |
|
1324 |
+
.wpo_unused_image .wpo_unused_image__input:checked + label,
|
1325 |
+
.wpo_unused_image.checked label,
|
1326 |
+
.wpo_smush_image .wpo_unused_image__input:checked + label,
|
1327 |
+
.wpo_smush_image.checked label {
|
1328 |
border-color: #0272AA;
|
1329 |
}
|
1330 |
|
css/wp-optimize-admin.min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
.wpo_hidden{display:none}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}.nav-tab-wrapper{margin:14px 0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:250% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{display:none}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output{background:#f0f0f0;padding:10px;border:1px solid #CCC}#wpo_browser_cache_error_message,#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}#wp-optimize-wrap{position:relative;padding-top:100px}@media(min-width:820px){#wp-optimize-wrap{padding-top:120px}}@media(max-width:782px){#wp-optimize-wrap{margin-right:0}}.wpo-main-header{height:77px;position:fixed;top:32px;left:160px;background:#FFF;right:0;z-index:9980}@media(min-width:820px){.wpo-main-header{height:105px}}.wpo-main-header .wpo-logo__container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;position:relative;height:100%;line-height:1;font-size:1rem;padding-left:50px;margin-left:10px}.wpo-main-header .wpo-logo{position:absolute;left:0;top:50%;transform:translateY(-50%);width:50px}.wpo-main-header .wpo-subheader{margin:0;font-weight:300;color:#72777c;line-height:1.3}@media(max-width:1080px){.wpo-main-header .wpo-subheader{display:none}}.wpo-main-header p.wpo-header-links{margin:0;font-size:.7rem;position:absolute;right:0;padding:6px 15px;background:#edeeef;border-bottom-left-radius:5px;z-index:1}.wpo-main-header p.wpo-header-links a{text-decoration:none}.wpo-main-header p.wpo-header-links .wpo-header-links__label{color:#82868b;position:absolute;right:100%;width:110px;text-align:right;padding-right:10px}@media(max-width:820px){.wpo-main-header p.wpo-header-links{display:none}}.wpo-main-header p.wpo-header-links__mobile{padding:10px;background:#edeeef;margin-bottom:0}@media(min-width:820px){.wpo-main-header p.wpo-header-links__mobile{display:none}}.wpo-main-header p.wpo-header-links__mobile a{display:inline-block;padding:4px;font-size:.8rem}.wpo-main-header p.wpo-header-links__mobile .wpo-header-links__label{color:#82868b}@media(max-width:600px){.wpo-main-header .wpo-logo__container strong{width:140px;display:inline-block}}@media(max-width:960px){body.auto-fold .wpo-main-header{left:36px}}@media(max-width:782px){body.auto-fold .wpo-main-header{left:0;top:46px}}@media(max-width:600px){body.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:0}}@media(min-width:782px){body.folded .wpo-main-header{left:36px}}body.is-scrolled .wpo-main-header{box-shadow:0 5px 25px rgba(0,0,0,0.17)}@media(min-width:769px){.wpo-page{padding-right:15px}}.wpo-page:not(.active){display:none}@media(min-width:1200px){.wpo-tab-postbox.right-col{width:350px;float:right;box-sizing:border-box;margin-top:3.1rem}.right-col+.wpo-main{float:left;box-sizing:border-box;width:calc(100% - 380px)}}@media(max-width:782px){#wp-optimize-wrap .button-large{display:block;width:100%}}#wp-optimize-wrap .red{color:#e07575}#wp-optimize-wrap div[id*="_notice"] div.updated{margin-left:0}.button.button-block{display:block;width:100%;text-align:center}.wpo-refresh-button{float:right}.wpo-refresh-button:hover{cursor:pointer}.wpo-refresh-button .dashicons{text-decoration:none;line-height:inherit;font-size:inherit}*[class*="wpo-badge"]{display:inline-block;font-size:.8em;text-transform:uppercase;background:#edeff0;padding:3px 5px;line-height:1;border-radius:3px}.wpo-badge__new{background:#dbe3e6;color:#00689a}.wpo-text__dim{color:#b5b9be}.wpo-fieldgroup .wpo-text__dim{color:#82868b}.wpo-first-child{margin-top:0}#save_done,.save-done{color:#009b24;font-size:250%}p.wpo-take-a-backup{display:inline-block;margin:0;line-height:1;padding-top:8px}@media(min-width:782px){p.wpo-take-a-backup{margin-left:20px}}#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox{border:0}#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox>h3:first-child{margin-top:0}.wpo-p25,.postbox.wpo-tab-postbox{padding:25px}.wpo-tab-postbox>h3:first-child{margin-top:0}.wpo-fieldgroup{background:#edeff0;border-radius:8px;padding:20px}.wpo-fieldgroup:not(:last-child){margin-bottom:2em}.wpo-fieldgroup>*:first-child{margin-top:0}.wpo-fieldgroup>*:last-child{margin-bottom:0}.wpo-fieldgroup__subgroup:not(:last-of-type){margin-bottom:20px}h2#wp-optimize-nav-tab-wrapper{margin-bottom:0;border-bottom:0;position:relative}h2#wp-optimize-nav-tab-wrapper .nav-tab,h2#wp-optimize-nav-tab-wrapper .nav-tab:hover,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus:active{border:0;background:transparent;margin:0;border-top:3px solid transparent;padding:7px 15px;color:#0272aa}h2#wp-optimize-nav-tab-wrapper .nav-tab .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:hover .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus:active .dashicons{display:block;margin:0 auto;color:#72777c;font-size:30px;width:30px;height:30px}h2#wp-optimize-nav-tab-wrapper .nav-tab-active,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:hover,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus:active{background:#FFF;box-shadow:0 0 1px rgba(0,0,0,0.04);border-top-color:#0272aa}h2#wp-optimize-nav-tab-wrapper .nav-tab-active .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:hover .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus:active .dashicons{color:#0272aa}@media(max-width:782px){h2#wp-optimize-nav-tab-wrapper a:not(.nav-tab-active){display:none}}h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:block;float:right}@media(min-width:782px){h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:none}}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{text-align:right}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}@media(min-width:782px){h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{position:absolute;bottom:14px;right:0;font-size:12px;font-weight:400;text-decoration:none;padding:0}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}}.wpo-mobile-menu-opened .wpo-main .wpo-tab-postbox{display:none}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a{display:block;float:none}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active:focus{border-top:0;border-left:3px solid}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active:focus .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a:focus .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a:hover .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a .dashicons{display:inline-block;line-height:inherit}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:none}.wpo-pages-menu{position:absolute;bottom:0;right:0;display:none}@media(max-width:820px){.opened+.wpo-pages-menu{display:block;box-shadow:0 5px 25px rgba(0,0,0,0.17)}}@media(min-width:821px){.wpo-pages-menu{display:-ms-flexbox;display:flex;height:77px}}.wpo-pages-menu>a{text-decoration:none;position:relative;color:inherit;text-align:center;box-sizing:border-box;display:block;color:#555d66}@media(min-width:821px){.wpo-pages-menu>a{padding:0 8px;height:77px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.wpo-pages-menu>a>span{display:block;margin:0 auto}}@media(max-width:820px){.wpo-pages-menu>a{padding:15px;font-size:1.2em}}.wpo-pages-menu>a.active::after{content:'';display:block;position:absolute;bottom:0;left:0;width:100%;height:3px;background:#e46b1f;color:#191e23}@media(max-width:820px){.wpo-pages-menu>a.active::after{width:3px;height:100%}}@media(max-width:820px){.wpo-pages-menu>a.active{color:#e46b1f}}.wpo-pages-menu>a:hover{background:#f9f9f9;color:#191e23}.wpo-pages-menu span.separator{display:block;width:2px;background:#efefef;margin-top:18px;margin-bottom:18px;margin-right:5px;margin-left:5px}@media(max-width:820px){.wpo-pages-menu span.separator{width:80%;height:2px;margin:10px 10%}}@media(max-width:820px){.wpo-pages-menu{text-align:center;top:100%;width:100%;bottom:auto;background:#FFF}}#wp-optimize-nav-page-menu{position:absolute;right:0;bottom:0;display:-ms-flexbox;display:flex;height:77px;-ms-flex-direction:column;flex-direction:column;padding:0 20px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;text-decoration:none}#wp-optimize-nav-page-menu:not(.opened) .dashicons-no-alt{display:none}#wp-optimize-nav-page-menu.opened .dashicons-menu{display:none}@media(min-width:821px){#wp-optimize-nav-page-menu{display:none}}.wpo-dashboard-pages-menu{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpo-dashboard-pages-menu[data-itemscount="1"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="2"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="3"] .wpo-dashboard-pages-menu__item{width:calc(33.333% - 13.33333px)}.wpo-dashboard-pages-menu[data-itemscount="4"] .wpo-dashboard-pages-menu__item{width:calc(25% - 15px)}.wpo-dashboard-pages-menu[data-itemscount="5"] .wpo-dashboard-pages-menu__item{width:calc(20% - 16px)}.wpo-dashboard-pages-menu[data-itemscount="6"] .wpo-dashboard-pages-menu__item{width:calc(16.66667% - 16.66667px)}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{padding:20px;margin-right:20px;box-sizing:border-box;padding-bottom:60px;min-width:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item:last-child{margin-right:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin-top:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3 .dashicons{color:#72777c;line-height:1;height:18px;margin-top:-2px;margin-right:10px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a{position:absolute;bottom:20px;left:20px;width:calc(100% - 40px) !important}@media(max-width:782px){.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{width:100%;margin-right:0;padding-bottom:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a.button.button-large{width:auto !important;left:auto;bottom:auto;top:50%;transform:translateY(-50%);right:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item p{display:none}}#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item{height:2px;line-height:2px;background:rgba(255,255,255,0.0902);margin:5px 10px;width:auto;min-width:0}.wpo_unused_image,.wpo_smush_image{position:relative;margin:4px;width:calc(50% - 8px);text-align:center}@media(min-width:500px){.wpo_unused_image,.wpo_smush_image{width:calc(25% - 8px)}}@media(min-width:782px){.wpo_unused_image,.wpo_smush_image{width:calc(16.6666% - 8px)}}@media(min-width:1100px){.wpo_unused_image,.wpo_smush_image{width:calc(12.5% - 8px)}}.wpo_unused_image .wpo_unused_image__input,.wpo_smush_image .wpo_unused_image__input{position:absolute;top:10px;visibility:hidden}.wpo_unused_image label,.wpo_smush_image label{display:block;width:100%;position:relative;padding:1px;border:3px solid #edeff0;box-sizing:border-box}.wpo_unused_image label::before,.wpo_smush_image label::before{content:"";display:block;padding-top:100%}.wpo_unused_image label .thumbnail,.wpo_smush_image label .thumbnail{position:absolute;top:1px;left:1px;width:calc(100% - 2px);height:calc(100% - 2px);background-repeat:no-repeat;background-size:cover;background-position:50% 50%;overflow:hidden;background:rgba(220,220,220,0.2)}.wpo_unused_image label .thumbnail img,.wpo_smush_image label .thumbnail img{display:block;margin:0;max-height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wpo_unused_image .wpo_unused_image__input:checked+label,.wpo_smush_image .wpo_unused_image__input:checked+label{border-color:#0272aa}.wpo_unused_image a,.wpo_unused_image a.button,.wpo_unused_image a.button:active,.wpo_smush_image a,.wpo_smush_image a.button,.wpo_smush_image a.button:active{position:absolute;z-index:2;bottom:13px;left:50%;transform:translateX(-50%);display:none}.wpo_unused_image:hover a,.wpo_unused_image:hover a.button,.wpo_unused_image:hover a.button:active,.wpo_smush_image:hover a,.wpo_smush_image:hover a.button,.wpo_smush_image:hover a.button:active{display:inline-block}#wpo_unused_images,#wpo_smush_images_grid{width:calc(100% + 8px);margin-left:-4px;margin-right:-4px;max-height:500px;overflow-y:auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#wpo_unused_images .wpo-fieldgroup,#wpo_smush_images_grid .wpo-fieldgroup{width:100%}#wpo_unused_images a{outline:0}p.wpo-plugin-installed{color:#009b24}.wpo-repeater__add{display:inline-block;cursor:pointer;font-weight:bold;text-decoration:none}.wpo-plugin-family__premium h2{margin:0;padding:25px}.wpo-plugin-family__plugins{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:1px;padding-bottom:1px}.wpo-plugin-family__plugin{-ms-flex:auto;flex:auto;width:100%;padding:30px;box-sizing:border-box;border:1px solid #e3e4e7;margin-left:-1px;margin-bottom:-1px}@media(min-width:782px){.wpo-plugin-family__plugin{width:50%}.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}@media(max-width:1080px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:50%}}@media(max-width:782px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}div#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox{padding:0}.wpo_feature_cont{width:64.5%}.wpo_plugin_family_cont{width:34.5%}@media(max-width:1080px){.wpo_feature_cont,.wpo_plugin_family_cont{width:100%;float:none;margin:0}}.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:20px}@media(max-width:1080px){.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:40px}}.wpo_feature_cont header h2,.wpo_plugin_family_cont header h2{margin:0}.wpo_feature_cont header p,.wpo_plugin_family_cont header p{margin-bottom:0}.wpo_feat_table,.wpo_feat_th,.wpo_feat_table td{border:0;border-collapse:collapse;background-color:white;font-size:120%;text-align:center}.wpo_feat_table td{border:1px solid #f1f1f1;border-bottom-width:4px;padding:15px}.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){background:rgba(241,241,241,0.38)}.wpo_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.wpo_feat_table h4{margin:5px 0}.wpo_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.wpo_feat_table .dashicons-yes,.wpo_feat_table .updraft-yes{color:green}.wpo_feat_table .dashicons-no-alt,.wpo_feat_table .updraft-no{color:red}.wpo-premium-image{display:none}@media screen and (min-width:720px){#wpoptimize_table_list_filter{width:40%}.wpo-premium-image{display:block;float:left;padding:16px 18px;width:30px;height:auto}}@media screen and (min-width:1220px){.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){width:110px}}.other-plugin-title{text-decoration:none}@media screen and (max-width:782px){table.wpo_feat_table{display:block}table.wpo_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.wpo_feat_table td{display:block}table.wpo_feat_table td:first-child{width:100%;border-bottom:0}table.wpo_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.wpo_feat_table td:first-child:empty{display:none}table.wpo_feat_table td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}#wp-optimize-wrap .wp-list-table td{word-break:break-all}@media screen and (max-width:782px){#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody tr,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody th,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 8px 3px 35%;word-break:break-word;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td::before{color:#b5b9be}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead tr{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th.column-primary{display:block;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th:not(.column-primary){display:none !important}}th:not(.sorter-false) .tablesorter-header-inner{color:#0074ab}th:not(.sorter-false) .tablesorter-header-inner::after{content:'';font-family:'dashicons';font-size:20px;line-height:20px;height:20px;width:20px;display:inline-block;vertical-align:bottom}th.tablesorter-header.tablesorter-headerAsc,th.tablesorter-header.tablesorter-headerDesc{font-weight:500;border-bottom-color:#0272aa}th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{content:"\f140"}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after{content:"\f142"}th.tablesorter-header:focus{outline:0;box-shadow:0 0 3px rgba(0,116,171,0.78)}th.tablesorter-header:focus:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after{content:"\f142";opacity:.5}.tablesorter.hasFilters tr.filtered{display:none}
|
2 |
/*# sourceMappingURL=wp-optimize-admin.min.css.map */
|
1 |
+
.wpo_hidden{display:none}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}.nav-tab-wrapper{margin:14px 0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:250% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{display:none}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output{background:#f0f0f0;padding:10px;border:1px solid #CCC}#wpo_browser_cache_error_message,#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}#wp-optimize-wrap{position:relative;padding-top:100px}@media(min-width:820px){#wp-optimize-wrap{padding-top:120px}}@media(max-width:782px){#wp-optimize-wrap{margin-right:0}}.wpo-main-header{height:77px;position:fixed;top:32px;left:160px;background:#FFF;right:0;z-index:9980}@media(min-width:820px){.wpo-main-header{height:105px}}.wpo-main-header .wpo-logo__container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;position:relative;height:100%;line-height:1;font-size:1rem;padding-left:50px;margin-left:10px}.wpo-main-header .wpo-logo{position:absolute;left:0;top:50%;transform:translateY(-50%);width:50px}.wpo-main-header .wpo-subheader{margin:0;font-weight:300;color:#72777c;line-height:1.3}@media(max-width:1080px){.wpo-main-header .wpo-subheader{display:none}}.wpo-main-header p.wpo-header-links{margin:0;font-size:.7rem;position:absolute;right:0;padding:6px 15px;background:#edeeef;border-bottom-left-radius:5px;z-index:1}.wpo-main-header p.wpo-header-links a{text-decoration:none}.wpo-main-header p.wpo-header-links .wpo-header-links__label{color:#82868b;position:absolute;right:100%;width:110px;text-align:right;padding-right:10px}@media(max-width:820px){.wpo-main-header p.wpo-header-links{display:none}}.wpo-main-header p.wpo-header-links__mobile{padding:10px;background:#edeeef;margin-bottom:0}@media(min-width:820px){.wpo-main-header p.wpo-header-links__mobile{display:none}}.wpo-main-header p.wpo-header-links__mobile a{display:inline-block;padding:4px;font-size:.8rem}.wpo-main-header p.wpo-header-links__mobile .wpo-header-links__label{color:#82868b}@media(max-width:600px){.wpo-main-header .wpo-logo__container strong{width:140px;display:inline-block}}@media(max-width:960px){body.auto-fold .wpo-main-header{left:36px}}@media(max-width:782px){body.auto-fold .wpo-main-header{left:0;top:46px}}@media(max-width:600px){body.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:0}}@media(min-width:782px){body.folded .wpo-main-header{left:36px}}body.is-scrolled .wpo-main-header{box-shadow:0 5px 25px rgba(0,0,0,0.17)}@media(min-width:769px){.wpo-page{padding-right:15px}}.wpo-page:not(.active){display:none}@media(min-width:1200px){.wpo-tab-postbox.right-col{width:350px;float:right;box-sizing:border-box;margin-top:3.1rem}.right-col+.wpo-main{float:left;box-sizing:border-box;width:calc(100% - 380px)}}@media(max-width:782px){#wp-optimize-wrap .button-large{display:block;width:100%}}#wp-optimize-wrap .red{color:#e07575}#wp-optimize-wrap div[id*="_notice"] div.updated{margin-left:0}.button.button-block{display:block;width:100%;text-align:center}.wpo-refresh-button{float:right}.wpo-refresh-button:hover{cursor:pointer}.wpo-refresh-button .dashicons{text-decoration:none;line-height:inherit;font-size:inherit}*[class*="wpo-badge"]{display:inline-block;font-size:.8em;text-transform:uppercase;background:#edeff0;padding:3px 5px;line-height:1;border-radius:3px}.wpo-badge__new{background:#dbe3e6;color:#00689a}.wpo-text__dim{color:#b5b9be}.wpo-fieldgroup .wpo-text__dim{color:#82868b}.wpo-first-child{margin-top:0}#save_done,.save-done{color:#009b24;font-size:250%}p.wpo-take-a-backup{display:inline-block;margin:0;line-height:1;padding-top:8px}@media(min-width:782px){p.wpo-take-a-backup{margin-left:20px}}#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox{border:0}#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox>h3:first-child{margin-top:0}.wpo-p25,.postbox.wpo-tab-postbox{padding:25px}.wpo-tab-postbox>h3:first-child{margin-top:0}.wpo-fieldgroup{background:#edeff0;border-radius:8px;padding:20px}.wpo-fieldgroup:not(:last-child){margin-bottom:2em}.wpo-fieldgroup>*:first-child{margin-top:0}.wpo-fieldgroup>*:last-child{margin-bottom:0}.wpo-fieldgroup__subgroup:not(:last-of-type){margin-bottom:20px}h2#wp-optimize-nav-tab-wrapper{margin-bottom:0;border-bottom:0;position:relative}h2#wp-optimize-nav-tab-wrapper .nav-tab,h2#wp-optimize-nav-tab-wrapper .nav-tab:hover,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus:active{border:0;background:transparent;margin:0;border-top:3px solid transparent;padding:7px 15px;color:#0272aa}h2#wp-optimize-nav-tab-wrapper .nav-tab .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:hover .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab:focus:active .dashicons{display:block;margin:0 auto;color:#72777c;font-size:30px;width:30px;height:30px}h2#wp-optimize-nav-tab-wrapper .nav-tab-active,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:hover,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus:active{background:#FFF;box-shadow:0 0 1px rgba(0,0,0,0.04);border-top-color:#0272aa}h2#wp-optimize-nav-tab-wrapper .nav-tab-active .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:hover .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus .dashicons,h2#wp-optimize-nav-tab-wrapper .nav-tab-active:focus:active .dashicons{color:#0272aa}@media(max-width:782px){h2#wp-optimize-nav-tab-wrapper a:not(.nav-tab-active){display:none}}h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:block;float:right}@media(min-width:782px){h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:none}}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{text-align:right}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}@media(min-width:782px){h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{position:absolute;bottom:14px;right:0;font-size:12px;font-weight:400;text-decoration:none;padding:0}h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,h2#wp-optimize-nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}}.wpo-mobile-menu-opened .wpo-main .wpo-tab-postbox{display:none}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a{display:block;float:none}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active:focus{border-top:0;border-left:3px solid}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a.nav-tab-active:focus .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a:focus .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a:hover .dashicons,.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a .dashicons{display:inline-block;line-height:inherit}.wpo-mobile-menu-opened h2#wp-optimize-nav-tab-wrapper a[role="toggle-menu"]{display:none}.wpo-pages-menu{position:absolute;bottom:0;right:0;display:none}@media(max-width:820px){.opened+.wpo-pages-menu{display:block;box-shadow:0 5px 25px rgba(0,0,0,0.17)}}@media(min-width:821px){.wpo-pages-menu{display:-ms-flexbox;display:flex;height:77px}}.wpo-pages-menu>a{text-decoration:none;position:relative;color:inherit;text-align:center;box-sizing:border-box;display:block;color:#555d66}@media(min-width:821px){.wpo-pages-menu>a{padding:0 8px;height:77px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.wpo-pages-menu>a>span{display:block;margin:0 auto}}@media(max-width:820px){.wpo-pages-menu>a{padding:15px;font-size:1.2em}}.wpo-pages-menu>a.active::after{content:'';display:block;position:absolute;bottom:0;left:0;width:100%;height:3px;background:#e46b1f;color:#191e23}@media(max-width:820px){.wpo-pages-menu>a.active::after{width:3px;height:100%}}@media(max-width:820px){.wpo-pages-menu>a.active{color:#e46b1f}}.wpo-pages-menu>a:hover{background:#f9f9f9;color:#191e23}.wpo-pages-menu span.separator{display:block;width:2px;background:#efefef;margin-top:18px;margin-bottom:18px;margin-right:5px;margin-left:5px}@media(max-width:820px){.wpo-pages-menu span.separator{width:80%;height:2px;margin:10px 10%}}@media(max-width:820px){.wpo-pages-menu{text-align:center;top:100%;width:100%;bottom:auto;background:#FFF}}#wp-optimize-nav-page-menu{position:absolute;right:0;bottom:0;display:-ms-flexbox;display:flex;height:77px;-ms-flex-direction:column;flex-direction:column;padding:0 20px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;text-decoration:none}#wp-optimize-nav-page-menu:not(.opened) .dashicons-no-alt{display:none}#wp-optimize-nav-page-menu.opened .dashicons-menu{display:none}@media(min-width:821px){#wp-optimize-nav-page-menu{display:none}}.wpo-dashboard-pages-menu{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpo-dashboard-pages-menu[data-itemscount="1"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="2"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="3"] .wpo-dashboard-pages-menu__item{width:calc(33.333% - 13.33333px)}.wpo-dashboard-pages-menu[data-itemscount="4"] .wpo-dashboard-pages-menu__item{width:calc(25% - 15px)}.wpo-dashboard-pages-menu[data-itemscount="5"] .wpo-dashboard-pages-menu__item{width:calc(20% - 16px)}.wpo-dashboard-pages-menu[data-itemscount="6"] .wpo-dashboard-pages-menu__item{width:calc(16.66667% - 16.66667px)}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{padding:20px;margin-right:20px;box-sizing:border-box;padding-bottom:60px;min-width:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item:last-child{margin-right:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin-top:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3 .dashicons{color:#72777c;line-height:1;height:18px;margin-top:-2px;margin-right:10px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a{position:absolute;bottom:20px;left:20px;width:calc(100% - 40px) !important}@media(max-width:782px){.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{width:100%;margin-right:0;padding-bottom:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a.button.button-large{width:auto !important;left:auto;bottom:auto;top:50%;transform:translateY(-50%);right:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item p{display:none}}#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item{height:2px;line-height:2px;background:rgba(255,255,255,0.0902);margin:5px 10px;width:auto;min-width:0}.wpo_unused_image,.wpo_smush_image{position:relative;margin:4px;width:calc(50% - 8px);text-align:center}@media(min-width:500px){.wpo_unused_image,.wpo_smush_image{width:calc(25% - 8px)}}@media(min-width:782px){.wpo_unused_image,.wpo_smush_image{width:calc(16.6666% - 8px)}}@media(min-width:1100px){.wpo_unused_image,.wpo_smush_image{width:calc(12.5% - 8px)}}.wpo_unused_image .wpo_unused_image__input,.wpo_smush_image .wpo_unused_image__input{position:absolute;top:10px;visibility:hidden}.wpo_unused_image label,.wpo_smush_image label{display:block;width:100%;position:relative;padding:1px;border:3px solid #edeff0;box-sizing:border-box}.wpo_unused_image label::before,.wpo_smush_image label::before{content:"";display:block;padding-top:100%}.wpo_unused_image label .thumbnail,.wpo_smush_image label .thumbnail{position:absolute;top:1px;left:1px;width:calc(100% - 2px);height:calc(100% - 2px);background-repeat:no-repeat;background-size:cover;background-position:50% 50%;overflow:hidden;background:rgba(220,220,220,0.2)}.wpo_unused_image label .thumbnail img,.wpo_smush_image label .thumbnail img{display:block;margin:0;max-height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wpo_unused_image .wpo_unused_image__input:checked+label,.wpo_unused_image.checked label,.wpo_smush_image .wpo_unused_image__input:checked+label,.wpo_smush_image.checked label{border-color:#0272aa}.wpo_unused_image a,.wpo_unused_image a.button,.wpo_unused_image a.button:active,.wpo_smush_image a,.wpo_smush_image a.button,.wpo_smush_image a.button:active{position:absolute;z-index:2;bottom:13px;left:50%;transform:translateX(-50%);display:none}.wpo_unused_image:hover a,.wpo_unused_image:hover a.button,.wpo_unused_image:hover a.button:active,.wpo_smush_image:hover a,.wpo_smush_image:hover a.button,.wpo_smush_image:hover a.button:active{display:inline-block}#wpo_unused_images,#wpo_smush_images_grid{width:calc(100% + 8px);margin-left:-4px;margin-right:-4px;max-height:500px;overflow-y:auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#wpo_unused_images .wpo-fieldgroup,#wpo_smush_images_grid .wpo-fieldgroup{width:100%}#wpo_unused_images a{outline:0}p.wpo-plugin-installed{color:#009b24}.wpo-repeater__add{display:inline-block;cursor:pointer;font-weight:bold;text-decoration:none}.wpo-plugin-family__premium h2{margin:0;padding:25px}.wpo-plugin-family__plugins{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:1px;padding-bottom:1px}.wpo-plugin-family__plugin{-ms-flex:auto;flex:auto;width:100%;padding:30px;box-sizing:border-box;border:1px solid #e3e4e7;margin-left:-1px;margin-bottom:-1px}@media(min-width:782px){.wpo-plugin-family__plugin{width:50%}.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}@media(max-width:1080px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:50%}}@media(max-width:782px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}div#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox{padding:0}.wpo_feature_cont{width:64.5%}.wpo_plugin_family_cont{width:34.5%}@media(max-width:1080px){.wpo_feature_cont,.wpo_plugin_family_cont{width:100%;float:none;margin:0}}.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:20px}@media(max-width:1080px){.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:40px}}.wpo_feature_cont header h2,.wpo_plugin_family_cont header h2{margin:0}.wpo_feature_cont header p,.wpo_plugin_family_cont header p{margin-bottom:0}.wpo_feat_table,.wpo_feat_th,.wpo_feat_table td{border:0;border-collapse:collapse;background-color:white;font-size:120%;text-align:center}.wpo_feat_table td{border:1px solid #f1f1f1;border-bottom-width:4px;padding:15px}.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){background:rgba(241,241,241,0.38)}.wpo_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.wpo_feat_table h4{margin:5px 0}.wpo_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.wpo_feat_table .dashicons-yes,.wpo_feat_table .updraft-yes{color:green}.wpo_feat_table .dashicons-no-alt,.wpo_feat_table .updraft-no{color:red}.wpo-premium-image{display:none}@media screen and (min-width:720px){#wpoptimize_table_list_filter{width:40%}.wpo-premium-image{display:block;float:left;padding:16px 18px;width:30px;height:auto}}@media screen and (min-width:1220px){.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){width:110px}}.other-plugin-title{text-decoration:none}@media screen and (max-width:782px){table.wpo_feat_table{display:block}table.wpo_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.wpo_feat_table td{display:block}table.wpo_feat_table td:first-child{width:100%;border-bottom:0}table.wpo_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.wpo_feat_table td:first-child:empty{display:none}table.wpo_feat_table td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}#wp-optimize-wrap .wp-list-table td{word-break:break-all}@media screen and (max-width:782px){#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody tr,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody th,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 8px 3px 35%;word-break:break-word;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td::before{color:#b5b9be}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead tr{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th.column-primary{display:block;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th:not(.column-primary){display:none !important}}th:not(.sorter-false) .tablesorter-header-inner{color:#0074ab}th:not(.sorter-false) .tablesorter-header-inner::after{content:'';font-family:'dashicons';font-size:20px;line-height:20px;height:20px;width:20px;display:inline-block;vertical-align:bottom}th.tablesorter-header.tablesorter-headerAsc,th.tablesorter-header.tablesorter-headerDesc{font-weight:500;border-bottom-color:#0272aa}th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{content:"\f140"}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after{content:"\f142"}th.tablesorter-header:focus{outline:0;box-shadow:0 0 3px rgba(0,116,171,0.78)}th.tablesorter-header:focus:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after{content:"\f142";opacity:.5}.tablesorter.hasFilters tr.filtered{display:none}
|
2 |
/*# sourceMappingURL=wp-optimize-admin.min.css.map */
|
css/wp-optimize-admin.min.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["css/wp-optimize-admin.scss","css/admin.css","css/scss/_layout.scss","css/scss/_common.scss","css/scss/_menu-and-tabs.scss","css/scss/_image-list.scss","css/scss/_plugin-family-tab.scss","css/scss/_table-sorter.scss"],"names":[],"mappings":"AAAA,YAAY;;AAcZ,gBAAgB;;ACdhB;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED,gBAAgB;;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf;;CAED;EACC,mBAAmB;EACnB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CA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","file":"wp-optimize-admin.min.css","sourcesContent":["/* COLORS */\n$wp-blue: #0272AA;\n$wp-gray-dark: #555d66;\n$wp-gray-darker: #191e23;\n$wp-secondary-gray: #72777C;\n$wp-secondary-gray-light: #82868B;\n$wp-light-gray: #B5B9BE;\n$wp-lighter-gray: #EDEFF0;\n$success: #009B24;\n$error: #9B3600;\n$red: #E07575;\n$brand: #E46B1F;\n$spacing: 20px; \n\n/* OTHER VARS */\n$breakpoint-small: 782px;\n\n@import \"admin.css\";\n\n@import \"scss/layout\";\n\n@import \"scss/common\";\n\n@import \"scss/menu-and-tabs\";\n\n@import \"scss/image-list\";\n\n@import \"scss/plugin-family-tab\";\n\n@import \"scss/table-sorter\";\n",".wpo_hidden {\n\tdisplay: none;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n.nav-tab-wrapper {\n\tmargin: 14px 0px;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 250% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tdisplay: none;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n}\n\n#wpo_browser_cache_error_message,\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}","#wp-optimize-wrap {\n\tposition: relative;\n\tpadding-top: 100px;\n\n\t@media (min-width: 820px) {\n\t\tpadding-top: 120px;\n\t}\n\n\t@media(max-width: $breakpoint-small) {\n\t\tmargin-right: 0;\n\t}\n\n}\n\n/* DASHBOARD */\n\n.wpo-main-header {\n\n height: 77px;\n position: fixed;\n top: 32px;\n left: 160px;\n background: #FFF;\n right: 0;\n z-index: 9980;\n\n\t@media (min-width: 820px) {\n\t\theight: 105px;\n\t}\t\n\n\t.wpo-logo__container {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\theight: 100%;\n\t\tline-height: 1;\n\t\tfont-size: 1rem;\n\t\tpadding-left: 50px;\n\t\tmargin-left: 10px;\n\t}\n\n\t.wpo-logo {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 50px;\n\t}\n\n\t.wpo-subheader {\n\t\tmargin: 0;\n\t\tfont-weight: 300;\n\t\tcolor: $wp-secondary-gray;\n\t\tline-height: 1.3;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links {\n\t\tmargin: 0;\n\t\tfont-size: 0.7rem;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tpadding: 6px 15px;\n\t\tbackground: #EDEEEF;\n\t\tborder-bottom-left-radius: 5px;\n\t\tz-index: 1;\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t\tposition: absolute;\n\t\t\tright: 100%;\n\t\t\twidth: 110px;\n\t\t\ttext-align: right;\n\t\t\tpadding-right: 10px;\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links__mobile {\n\t\tpadding: 10px;\n\t\tbackground: #EDEEEF;\n\t\tmargin-bottom: 0;\n\t\t@media (min-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: .8rem;\n\t\t}\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t}\n\n\t}\n\n\t@media (max-width: 600px) {\n\t\t\n\t\t.wpo-logo__container strong {\n\t\t\twidth: 140px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n\tbody.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tleft: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tleft: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 0;\n\t\t}\t\t\n\t}\n\n\tbody.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tleft: 36px;\n\t\t}\n\t}\n\tbody.is-scrolled & {\n\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t}\n}\n\n.wpo-page {\n\t@media (min-width: 769px) {\n\t\tpadding-right: 15px;\n\t}\n\n\t&:not(.active) {\n\t\tdisplay: none;\n\t}\n}\n\n/* Columns */\n@media (min-width: 1200px) {\n\n\t.wpo-tab-postbox.right-col {\n\t\twidth: 350px;\n\t\tfloat: right;\n\t\tbox-sizing: border-box;\n\t\tmargin-top: 3.1rem;\n\t}\n\n\t.right-col + .wpo-main {\n\t\tfloat: left;\n\t\tbox-sizing: border-box;\n\t\twidth: calc(100% - 380px);\n\t}\n\n}\n","/* Common BLOCKS */\n\n\n/* Buttons */\n\n#wp-optimize-wrap {\n\n\t.button-large {\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.red {\n\t\tcolor: $red;\n\t}\n\n\tdiv[id*=\"_notice\"] div.updated {\n\t\tmargin-left: 0;\n\t}\n}\n\n.button.button-block {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: center;\n}\n\n.wpo-refresh-button {\n\tfloat: right;\n}\n\n.wpo-refresh-button:hover {\n\tcursor: pointer;\n}\n\n.wpo-refresh-button .dashicons {\n\ttext-decoration: none;\n line-height: inherit;\n font-size: inherit;\n}\n\n/* Helper classes */\n\n*[class*=\"wpo-badge\"] {\n\tdisplay: inline-block;\n\tfont-size: .8em;\n\ttext-transform: uppercase;\n\tbackground: $wp-lighter-gray;\n\tpadding: 3px 5px;\n\tline-height: 1;\n\tborder-radius: 3px;\n}\n\n.wpo-badge__new {\n\tbackground: #DBE3E6;\n\tcolor: #00689a;\n}\n\n.wpo-text__dim {\n\tcolor: $wp-light-gray;\n}\n\n.wpo-fieldgroup .wpo-text__dim {\n\tcolor: $wp-secondary-gray-light;\n}\n\n.wpo-first-child {\n\tmargin-top: 0;\n}\n\n#save_done, .save-done {\n\tcolor: $success;\n\tfont-size: 250%;\n}\n\np.wpo-take-a-backup {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tline-height: 1;\n\tpadding-top: 8px;\n\t@media (min-width: $breakpoint-small) {\n\t\tmargin-left: 20px;\n\t}\n}\n\n/* Postbox */\n\n#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents > .postbox {\n border: none;\n\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n\n}\n\n.wpo-p25,\n.postbox.wpo-tab-postbox {\n\tpadding: 25px;\n}\n\n.wpo-tab-postbox {\n\t\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n}\n\n/* Field group */\n\n.wpo-fieldgroup {\n background: $wp-lighter-gray;\n border-radius: 8px;\n\tpadding: 20px;\n\n\t&:not(:last-child) {\n\t\tmargin-bottom: 2em;\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 0;\n\t}\n\t\n\t> *:last-child {\n\t\tmargin-bottom: 0;\n\t}\n}\n\n.wpo-fieldgroup__subgroup {\n\t&:not(:last-of-type) {\n\t\tmargin-bottom: 20px;\n\t}\n}","/* TABS */\n\nh2#wp-optimize-nav-tab-wrapper {\n margin-bottom: 0;\n\tborder-bottom: none;\n\tposition: relative;\n\t\n\t.nav-tab,\n\t.nav-tab:hover,\n\t.nav-tab:focus,\n\t.nav-tab:focus:active {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tmargin: 0;\n\t\tborder-top: 3px solid transparent;\n\t\tpadding: 7px 15px;\n\t\tcolor: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\tcolor: $wp-secondary-gray;\n\t\t\tfont-size: 30px;\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t}\n\t\n\t.nav-tab-active,\n\t.nav-tab-active:hover,\n\t.nav-tab-active:focus,\n\t.nav-tab-active:focus:active {\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 0 1px rgba(0, 0, 0, 0.04);\n\t\tborder-top-color: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tcolor: $wp-blue;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\ta:not(.nav-tab-active) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t\n\ta[role=\"toggle-menu\"] {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\n\ta.nav-tab.wp-optimize-nav-tab__back {\n\t\t&, &:focus:active {\t\n\n\t\t\ttext-align: right;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: auto;\n\t\t\t\tline-height: inherit;\n\t\t\t\twidth: 20px;\n\t\t\t}\n\n\t\t\t@media (min-width: $breakpoint-small) {\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 14px;\n\t\t\t\tright: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: 400;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0;\n\t\t\t\n\t\t\t\t.dashicons {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t}\n\t\n\t}\n}\n\n.wpo-mobile-menu-opened {\n\n\t.wpo-main .wpo-tab-postbox {\n\t\tdisplay: none;\n\t}\n\t\n\th2#wp-optimize-nav-tab-wrapper a {\n\t\tdisplay: block;\n\t\tfloat: none;\n\n\t\t&.nav-tab-active,\n\t\t&.nav-tab-active:focus {\n\t\t\tborder-top: none;\n\t\t\tborder-left: 3px solid;\n\t\t}\n\t\t\n\t\t&.nav-tab-active,\n\t\t&.nav-tab-active:focus,\n\t\t&:focus,\n\t\t&:hover,\n\t\t& {\n\t\t\t.dashicons {\n\t\t\t\tdisplay: inline-block; \n\t\t\t\tline-height: inherit;\n\t\t\t}\n\t\t}\n\n\t\t&[role=\"toggle-menu\"] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n}\n\n\n/* Pages MENU */\n\n.wpo-pages-menu {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 0;\n\tdisplay: none;\n\n\t@media (max-width: 820px) {\n\t\t.opened + & {\n\t\t\tdisplay: block;\n\t\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t\t}\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: flex;\n\t\theight: 77px;\n\t}\n\n\t> a {\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t\tcolor: inherit;\n\t\ttext-align: center;\n\t\tbox-sizing: border-box;\n\t\tdisplay: block;\n\t\tcolor: $wp-gray-dark;\n\n\t\t@media (min-width: 821px) {\n\t\t\tpadding: 0 8px;\n\t\t\theight: 77px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\n\t\t\t> span {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tpadding: 15px;\n\t\t\tfont-size: 1.2em;\n\t\t}\n\n\t\t&.active {\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 3px;\n\t\t\t\tbackground: $brand;\n\t\t\t\tcolor: $wp-gray-darker;\n\n\t\t\t\t@media (max-width: 820px) {\n\t\t\t\t\twidth: 3px;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t@media (max-width: 820px) {\n\t\t\t\tcolor: $brand;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: #F9F9F9;\n\t\t\tcolor: $wp-gray-darker;\n\t\t}\n\t}\n\n\tspan.separator {\n\t\tdisplay: block;\n\t\twidth: 2px;\n\t\tbackground: #EFEFEF;\n\t\tmargin-top: 18px;\n\t\tmargin-bottom: 18px;\n\t\tmargin-right: 5px;\n\t\tmargin-left: 5px;\n\t\t@media (max-width: 820px) {\n\t\t\twidth: 80%;\n\t\t\theight: 2px;\n\t\t\tmargin: 10px 10%;\n\t\t}\n\t}\n\n\t@media (max-width: 820px) {\n\t\ttext-align: center;\n\t\ttop: 100%;\n\t\twidth: 100%;\n\t\tbottom: auto;\n\t\tbackground: #FFF;\t\t\n\n\t}\n\n}\n\n#wp-optimize-nav-page-menu {\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\theight: 77px;\n flex-direction: column;\n padding: 0 20px;\n align-items: center;\n justify-content: center;\n\ttext-decoration: none;\n\n\t&:not(.opened) .dashicons-no-alt {\n\t\tdisplay: none;\n\t}\n\n\t&.opened .dashicons-menu {\n\t\tdisplay: none;\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: none;\n\t}\n}\n\n/* DASHBOARD Menu */\n\n/* Calculate column width with a $spacing gutter */\n.wpo-dashboard-pages-menu {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t/* Same size for 1 to 3 items */\n\t&[data-itemscount=\"1\"],\n\t&[data-itemscount=\"2\"],\n\t&[data-itemscount=\"3\"] {\n\t\t.wpo-dashboard-pages-menu__item {\n\t\t\twidth: calc(33.333% - 40px / 3);\n\t\t}\n\t}\n\n\t/* above 3 items, change sizes */\n\t@for $count from 4 to 6 {\n\t\t&[data-itemscount=\"$count\"] {\n\t\t\t.wpo-dashboard-pages-menu__item {\n\t\t\t\twidth: calc(100% / $count - $spacing * ($count - 1) / $count);\n\t\t\t}\n\t\t}\n\t}\n\n\t.postbox.wpo-dashboard-pages-menu__item {\n\t\tpadding: $spacing;\n\t\tmargin-right: $spacing;\n\t\tbox-sizing: border-box;\n\t\tpadding-bottom: 60px;\n\t\tmin-width: 0;\n\t\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\n\t\th3 {\n\t\t\tmargin-top: 0;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-secondary-gray;\n\t\t\t\tline-height: 1;\n\t\t\t\theight: 18px;\n\t\t\t\tmargin-top: -2px;\n\t\t\t\tmargin-right: 10px\n\t\t\t}\n\n\t\t}\n\n\t\ta {\n\t\t\tposition: absolute;\n\t\t\tbottom: $spacing;\n\t\t\tleft: $spacing;\n\t\t\twidth: calc(100% - $spacing * 2) !important;\n\t\t}\n\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\twidth: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tpadding-bottom: 20px;\n\n\t\t\ta.button.button-large {\n\t\t\t\twidth: auto !important;\n\t\t\t\tleft: auto;\n\t\t\t\tbottom: auto;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: $spacing;\n\t\t\t}\n\n\t\t\th3 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t}\n\t\n\t}\n\n}\n\n/* Admin bar separator */\n\n#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item {\n height: 2px;\n line-height: 2px;\n background: #ffffff17;\n margin: 5px 10px;\n width: auto;\n min-width: 0;\n}","/* Unused images / wpo_smush_image / image grid*/\n\n.wpo_unused_image, .wpo_smush_image {\n\tposition: relative;\n\tmargin: 4px;\n\twidth: calc(50% - 8px);\n\ttext-align: center;\n\n\t@media (min-width: 500px) {\n\t\twidth: calc(25% - 8px);\n\t}\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: calc(16.6666% - 8px);\n\t}\n\n\t@media (min-width: 1100px) {\n\t\twidth: calc(12.5% - 8px);\n\t}\n\n\t.wpo_unused_image__input {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\tvisibility: hidden;\n\t}\n\t\n\tlabel {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tpadding: 1px;\n\t\tborder: 3px solid $wp-lighter-gray;\n\t\tbox-sizing: border-box;\n\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: block;\n\t\t\tpadding-top: 100%;\n\t\t}\n\n\t\t.thumbnail {\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\twidth: calc(100% - 2px);\n\t\t\theight: calc(100% - 2px);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: 50% 50%;\n\t\t\toverflow: hidden;\n\t\t\tbackground: rgba(220, 220, 220, 0.2);\n\n\t\t\timg {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0;\n\t\t\t\tmax-height: 100%;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translate(-50%,-50%);\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\t\n\t.wpo_unused_image__input:checked + label {\n\t\tborder-color: $wp-blue;\n\t}\n\n\ta, a.button, a.button:active {\n\t\tposition: absolute;\n\t\tz-index: 2;\n\t\tbottom: 13px;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tdisplay: none;\n\t}\n\n\t&:hover {\n\n\t\ta, a.button, a.button:active {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\twidth: calc(100% + 8px);\n margin-left: -4px;\n margin-right: -4px;\n\tmax-height: 500px;\n\toverflow-y: auto;\n display: flex;\n\tflex-wrap: wrap;\n\n\t.wpo-fieldgroup {\n\t\twidth: 100%;\n\t}\n\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}","/* More Plugins page */\n\n/* Plugins family / Premium */\n\np.wpo-plugin-installed {\n color: $success;\n}\n\n/* Settings repeater */\n\n.wpo-repeater__add {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n\n/* Plugin familly tab */\n\n.wpo-plugin-family__premium h2 {\n margin: 0;\n padding: 25px;\n}\n\n.wpo-plugin-family__plugins {\n display: flex;\n flex-wrap: wrap;\n\tpadding-left: 1px;\n\tpadding-bottom: 1px;\n}\n\n.wpo-plugin-family__plugin {\n flex: auto;\n width: 100%;\n padding: 30px;\n box-sizing: border-box;\n border: 1px solid #E3E4E7;\n\tmargin-left: -1px;\n\tmargin-bottom: -1px;\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: 50%;\n\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t@media (max-width: 1080px) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 50%;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n}\n\ndiv#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox {\n padding: 0;\n}\n\n/* Added for WPO Premium Features tab */\n.wpo_feature_cont {\n\twidth: 64.5%;\n}\n\n.wpo_plugin_family_cont {\n\twidth: 34.5%;\n}\n\n@media (max-width: 1080px) {\n\n\t.wpo_feature_cont,\n\t.wpo_plugin_family_cont {\n\t\twidth: 100%;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t}\n\n}\n\n.wpo_feature_cont,\n.wpo_plugin_family_cont {\n\n\theader {\n\t\tpadding: 20px;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tpadding: 40px;\t\t\n\t\t}\n\n\t\th2 {\n\t\t\tmargin: 0;\n\t\t}\n\t\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t}\n\n}\n\n.wpo_feat_table, .wpo_feat_th, .wpo_feat_table td {\n\tborder: none;\n\tborder-collapse: collapse;\n\tbackground-color: white;\n\tfont-size: 120%;\n\ttext-align: center;\n}\n\n.wpo_feat_table {\n\ttd {\n\t\tborder: 1px solid #F1F1F1;\n\t\tborder-bottom-width: 4px;\n\t\tpadding: 15px;\n\t}\n\n\ttd:nth-child(2), td:nth-child(3) {\n\t\tbackground: rgba(241, 241, 241, 0.38);\n\t}\n\n\tp {\n\t\tpadding: 0px 10px;\n\t\tmargin: 5px 0px;\n\t\tfont-size: 13px;\n\t}\n\n\th4 {\n\t\tmargin: 5px 0px;\n\t}\n\n\t.dashicons {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tfont-size: 25px;\n\t\tline-height: 1;\n\t}\n\n\t.dashicons-yes, .updraft-yes {\n\t\tcolor: green;\n\t}\n\t\n\t.dashicons-no-alt, .updraft-no {\n\t\tcolor: red;\n\t}\n\n}\n\n\n\n.wpo-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t#wpoptimize_table_list_filter {\n\t\twidth: 40%;\n\t}\n\n\t.wpo-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding: 16px 18px;\n\t\twidth: 30px;\n\t\theight: auto;\n\t}\n\n}\n\n@media screen and (min-width: 1220px) {\n\n\t.wpo_feat_table td:nth-child(2), .wpo_feat_table td:nth-child(3) {\n\t\twidth: 110px;\n\t}\n\n}\n\n.other-plugin-title {\n\ttext-decoration: none;\n}\n\n@media screen and (max-width: $breakpoint-small) {\n\n\ttable.wpo_feat_table {\n\n\t\tdisplay: block;\n\n\t\ttr {\n\t\t\tdisplay: flex;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\ttd {\n\t\t\tdisplay: block;\n\n\t\t\t&:first-child {\n\t\t\t\twidth: 100%;\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\n\t\t\t&:not(:first-child) {\n\t\t\t\twidth: 50%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:first-child:empty {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t&[data-colname]::before {\n\t\t\t\tcontent: attr(data-colname);\n\t\t\t\tfont-size: 0.8rem;\n\t\t\t\tcolor: #CCC;\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t}\n\t}\n\n}","\n/* tablesorter */\n\n#wp-optimize-wrap {\n\n\t.wp-list-table {\n\t\t\n\t\ttd {\n\t\t\tword-break: break-all; \n\t\t}\n\n\t}\n\n\t@media screen and (max-width: $breakpoint-small ) {\n\n\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\n\t\t\t&, tr, th, td {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tpadding: 3px 8px 3px 35%;\n\t\t\t\tword-break: break-word;\n\t\t\t\tbox-sizing: border-box; \n\n\t\t\t\t&::before {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\t\t\n\n\t\t.wp-list-table.wp-list-table-mobile-labels thead {\n\n\t\t\t&, tr {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tth.column-primary {\n\t\t\t\tdisplay: block;\n\t\t\t\tbox-sizing: border-box; \n\t\t\t}\n\n\t\t\tth:not(.column-primary) {\n\t\t\t\tdisplay: none !important; \n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nth:not(.sorter-false) .tablesorter-header-inner {\n\n\tcolor: #0074ab;\n\n\t&::after {\n\t\tcontent: '';\n\t\tfont-family: 'dashicons';\n\t\tfont-size: 20px;\n\t\tline-height: 20px;\n\t\theight: 20px;\n\t\twidth: 20px;\n\t\tdisplay: inline-block;\n\t\tvertical-align: bottom;\n\t}\n\n}\n\nth.tablesorter-header.tablesorter-headerAsc,\nth.tablesorter-header.tablesorter-headerDesc {\n font-weight: 500;\n border-bottom-color: $wp-blue;\n}\n\nth.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after {\n content: \"\\f140\";\n}\n\nth.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after {\n content: \"\\f142\";\n}\n\nth.tablesorter-header:focus {\n outline: none;\n\tbox-shadow: 0 0 3px rgba(0, 116, 171, 0.78);\n\n\t&:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after {\n\t\tcontent: \"\\f142\";\n\t\topacity: 0.5;\n\t}\n\n}\n\n.tablesorter.hasFilters tr.filtered {\n display: none;\n}\n"]}
|
1 |
+
{"version":3,"sources":["css/wp-optimize-admin.scss","css/admin.css","css/scss/_layout.scss","css/scss/_common.scss","css/scss/_menu-and-tabs.scss","css/scss/_image-list.scss","css/scss/_plugin-family-tab.scss","css/scss/_table-sorter.scss"],"names":[],"mappings":"AAAA,YAAY;;AAcZ,gBAAgB;;ACdhB;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED,gBAAgB;;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf;;CAED;EACC,mBAAmB;EACnB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,oBAAoB;;AACpB;CACC,kBAAkB;CAClB,2BAA2B;CAC3B,8BAA8B;CAC9B,eAAe;CACf,UAAU;CACV;;AAED;CACC,iCAAiC;CACjC,eAAe;CACf;;AAED;;;;;;;;CAQC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,UAAU;CACV;;AAED;;CAEC,UAAU;CACV;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,0BAA0B;CAC1B,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;;CAEC,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB;;AAED;;;CAGC,eAAe;CACf;;AAED;;CAEC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;ACpgBD;CACC,mBAAmB;CACnB,mBAAmB;;CAUnB;;AARA;;CAJD;EAKE,mBAAmB;EAOpB;CANC;;AAED;;CARD;EASE,gBAAgB;EAGjB;CAFC;;AAIF,eAAe;;AAEf;;IAEI,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,YAAY;IACZ,iBAAiB;IACjB,SAAS;IACT,cAAc;CAqHjB;;AAnHA;;CAVD;EAWE,cAAc;EAkHf;CAjHC;;AAED;EACC,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EACxB,mBAAmB;EACnB,aAAa;EACb,eAAe;EACf,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;CAClB;;AAED;EACC,mBAAmB;EACnB,QAAQ;EACR,SAAS;EACT,4BAA4B;EAC5B,YAAY;CACZ;;AAED;EACC,UAAU;EACV,iBAAiB;EACjB,eAA0B;EAC1B,iBAAiB;CAKjB;;AAHA;;CAND;EAOE,cAAc;EAEf;CADC;;AAGF;EACC,UAAU;EACV,kBAAkB;EAClB,mBAAmB;EACnB,SAAS;EACT,kBAAkB;EAClB,oBAAoB;EACpB,+BAA+B;EAC/B,WAAW;CAkBX;;AAhBA;GACC,sBAAsB;GACtB;;AAED;GACC,eAAgC;GAChC,mBAAmB;GACnB,YAAY;GACZ,aAAa;GACb,kBAAkB;GAClB,oBAAoB;GACpB;;AAED;;CAvBD;EAwBE,cAAc;EAEf;CADC;;AAGF;EACC,cAAc;EACd,oBAAoB;EACpB,iBAAiB;CAcjB;;AAbA;;CAJD;EAKE,cAAc;EAYf;CAXC;;AAED;GACC,sBAAsB;GACtB,aAAa;GACb,iBAAiB;CACjB;;AACD;GACC,eAAgC;CAChC;;AAIF;;CAEC;GACC,aAAa;GACb,sBAAsB;EACtB;CAED;;AAGA;;CADD;EAEE,WAAW;EAYZ;CAXC;;AACD;;CAJD;EAKE,QAAQ;EACR,UAAU;EAQX;CAPC;;AACD;;CARD;EASE,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,OAAO;EAER;CADC;;AAID;;CADD;EAEE,WAAW;EAEZ;CADC;;AAEF;EACC,2CAA2C;CAC3C;;AAID;;CADD;EAEE,oBAAoB;EAMrB;CALC;;AAED;CACC,cAAc;CACd;;AAGF,aAAa;;AACb;;CAEC;EACC,aAAa;EACb,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB;;CAED;EACC,YAAY;EACZ,uBAAuB;EACvB,0BAA0B;EAC1B;;CAED;;ACzKD,mBAAmB;;AAGnB,aAAa;;AAKX;;CADD;EAEE,eAAe;EACf,YAAY;EAEb;CADC;;AAGF;EACC,eAAY;CACZ;;AAED;EACC,eAAe;CACf;;AAGF;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;IACnB,qBAAqB;IACrB,mBAAmB;CACtB;;AAED,oBAAoB;;AAEpB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,0BAA0B;CAC1B,oBAA6B;CAC7B,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,eAAe;CACf;;AAED;CACC,eAAsB;CACtB;;AAED;CACC,eAAgC;CAChC;;AAED;CACC,cAAc;CACd;;AAED;CACC,eAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,UAAU;CACV,eAAe;CACf,iBAAiB;CAIjB;;AAHA;;CALD;EAME,kBAAkB;EAEnB;CADC;;AAGF,aAAa;;AAEb;IACI,aAAa;;CAMhB;;AAJA;EACC,cAAc;EACd;;AAIF;;CAEC,cAAc;CACd;;AAIA;EACC,cAAc;EACd;;AAGF,iBAAiB;;AAEjB;IACI,oBAA6B;IAC7B,mBAAmB;CACtB,aAAc;CAad;;AAXA;CACC,mBAAmB;CACnB;;AAED;EACC,cAAc;CACd;;AAED;EACC,iBAAiB;CACjB;;AAID;CACC,oBAAoB;CACpB;;ACrIF,UAAU;;AAEV;IACI,iBAAiB;CACpB,oBAAoB;CACpB,mBAAmB;CAuFnB;;AArFA;;;;EAIC,aAAa;EACb,wBAAwB;EACxB,UAAU;EACV,kCAAkC;EAClC,kBAAkB;EAClB,eAAgB;EAUhB;;AARA;GACC,eAAe;GACf,eAAe;GACf,eAA0B;GAC1B,gBAAgB;GAChB,YAAY;GACZ,aAAa;GACb;;AAGF;;;;EAIC,iBAAiB;EACjB,wCAAwC;EACxC,0BAA2B;EAK3B;;AAHA;GACC,eAAgB;GAChB;;AAGF;;CACC;GACC,cAAc;EACd;CACD;;AAED;EACC,eAAe;EACf,aAAa;CAIb;;AAHA;;CAHD;EAIE,cAAc;EAEf;CADC;;AAKD;CAEC,kBAAkB;CA8BlB;;AA5BA;IACC,eAAsB;IACtB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,qBAAqB;IACrB,YAAY;CACZ;;AAED;;CAbD;EAcE,mBAAmB;EACnB,aAAa;EACb,SAAS;EACT,gBAAgB;EAChB,iBAAiB;EACjB,sBAAsB;EACtB,WAAW;EAYZ;;CAVC;KACC,eAAsB;KACtB,gBAAgB;KAChB,sBAAsB;KACtB,aAAa;KACb,qBAAqB;KACrB,YAAY;EACZ;CACD;;AASH;EACC,cAAc;EACd;;AAED;EACC,eAAe;EACf,WAAY;EAsBZ;;AApBA;;CAEC,iBAAiB;CACjB,uBAAuB;CACvB;;AAOA;IACC,sBAAsB;IACtB,qBAAqB;CACrB;;AAGF;CACC,cAAc;CACd;;AAMH,gBAAgB;;AAEhB;CACC,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,cAAc;;CA8Fd;;AA5FA;;CACC;GACC,eAAe;GACf,2CAA2C;EAC3C;CACD;;AAED;;CAbD;EAcE,qBAAc;EAAd,cAAc;EACd,aAAa;EAmFd;CAlFC;;AAED;EACC,sBAAsB;EACtB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,eAAqB;CA+CrB;;AA7CA;;CATD;EAUE,eAAe;EACf,aAAa;EACb,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EAwCzB;;CAtCC;IACC,eAAe;IACf,eAAe;EACf;CACD;;AAED;;CAtBD;EAuBE,cAAc;EACd,iBAAiB;EA8BlB;CA7BC;;AAGA;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,UAAU;CACV,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,oBAAmB;CACnB,eAAuB;CAOvB;;AALA;;CAXD;EAYE,WAAW;EACX,aAAa;EAGd;CAFC;;AAGF;;CAlBD;EAmBE,eAAc;EAEf;CADC;;AAGF;CACC,oBAAoB;CACpB,eAAuB;CACvB;;AAGF;EACC,eAAe;EACf,WAAW;EACX,oBAAoB;EACpB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;EAClB,iBAAiB;CAMjB;;AALA;;CARD;EASE,WAAW;EACX,YAAY;EACZ,iBAAiB;EAElB;CADC;;AAGF;;CAzFD;EA0FE,mBAAmB;EACnB,UAAU;EACV,YAAY;EACZ,aAAa;EACb,iBAAiB;EAIlB;CAFC;;AAIF;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV,qBAAc;CAAd,cAAc;CACd,aAAa;IACV,2BAAuB;QAAvB,uBAAuB;IACvB,gBAAgB;IAChB,uBAAoB;QAApB,oBAAoB;IACpB,sBAAwB;QAAxB,wBAAwB;CAC3B,qBAAsB;CAatB;;AAXA;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;;CApBD;EAqBE,cAAc;EAEf;CADC;;AAGF,oBAAoB;;AAEpB,mDAAmD;;AACnD;CACC,qBAAc;CAAd,cAAc;CACd,oBAAgB;KAAhB,eAAgB;;CAEhB,gCAAgC;;CA2EhC;;AAvEC;GACC,kCAAgC;CAChC;;AAVH,2BAaC,iCAAiC;CAkEjC;;AA/DE;IACC,wBAA8D;CAC9D;;AAFD;IACC,wBAA8D;CAC9D;;AAFD;IACC,oCAA8D;CAC9D;;AAIH;EACC,cAAkB;EAClB,mBAAuB;EACvB,uBAAuB;EACvB,qBAAqB;EACrB,aAAa;CAkDb;;AAhDA;CACC,gBAAgB;CAChB;;AAED;GACC,cAAc;CAUd;;AARA;IACC,eAA0B;IAC1B,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB;;AAIF;GACC,mBAAmB;GACnB,aAAiB;GACjB,WAAe;GACf,oCAA4C;CAC5C;;AAED;;CA/BD;EAgCE,YAAY;EACZ,gBAAgB;EAChB,qBAAqB;EAqBtB;;CAnBC;IACC,uBAAuB;IACvB,WAAW;IACX,aAAa;IACb,SAAS;IACT,4BAA4B;IAC5B,YAAgB;EAChB;;CAED;IACC,UAAU;EACV;;CAED;IACC,cAAc;EACd;CAED;;AAMH,yBAAyB;;AAEzB;IACI,YAAY;IACZ,iBAAiB;IACjB,wCAAsB;IACtB,iBAAiB;IACjB,YAAY;IACZ,aAAa;CAChB;;AC7VD,iDAAiD;;AAEjD;CACC,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,mBAAmB;;CAmFnB;;AAjFA;;CAND;EAOE,uBAAuB;EAgFxB;CA/EC;;AAED;;CAVD;EAWE,4BAA4B;EA4E7B;CA3EC;;AAED;;CAdD;EAeE,yBAAyB;EAwE1B;CAvEC;;AAED;EACC,mBAAmB;EACnB,UAAU;EACV,mBAAmB;CACnB;;AAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,aAAa;EACb,0BAAmC;EACnC,uBAAuB;CAiCvB;;AA/BA;CACC,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB;;AAED;GACC,mBAAmB;GACnB,SAAS;GACT,UAAU;GACV,wBAAwB;GACxB,yBAAyB;GACzB,6BAA6B;GAC7B,uBAAuB;GACvB,6BAA6B;GAC7B,iBAAiB;GACjB,qCAAqC;CAarC;;AAXA;IACC,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,UAAU;IACV,gCAAgC;IAChC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB;;AAMH;;;;EAEC,sBAAuB;CACvB;;AAED;EACC,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,UAAU;EACV,4BAA4B;EAC5B,cAAc;CACd;;AAIA;GACC,sBAAsB;CACtB;;AAMH;CACC,wBAAwB;IACrB,kBAAkB;IAClB,mBAAmB;CACtB,kBAAkB;CAClB,iBAAiB;IACd,qBAAc;IAAd,cAAc;CACjB,oBAAgB;KAAhB,gBAAgB;;CAMhB;;AAJA;EACC,YAAY;EACZ;;AAIF;CACC,cAAc;CACd;;AC5GD,uBAAuB;;AAEvB,8BAA8B;;AAE9B;IACI,eAAgB;CACnB;;AAED,uBAAuB;;AAEvB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,sBAAsB;CACtB;;AAGD,wBAAwB;;AAExB;IACI,UAAU;IACV,cAAc;CACjB;;AAED;IACI,qBAAc;IAAd,cAAc;IACd,oBAAgB;QAAhB,gBAAgB;CACnB,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;IACI,eAAW;QAAX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,uBAAuB;IACvB,0BAA0B;CAC7B,kBAAkB;CAClB,oBAAoB;;CAsBpB;;AApBA;;CATD;EAUE,WAAW;EAmBZ;;CAjBC;GACC,YAAY;EACZ;CACD;;AAED;;CACC;GACC,WAAW;EACX;CACD;;AAED;;CACC;GACC,YAAY;EACZ;CACD;;AAIF;IACI,WAAW;CACd;;AAED,wCAAwC;;AACxC;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;;CAEC;;EAEC,YAAY;EACZ,YAAY;EACZ,UAAU;EACV;;CAED;;AAKA;EACC,cAAc;;EAcd;;AAZA;;CAHD;EAIE,cAAc;EAWf;CAVC;;AAED;GACC,UAAU;CACV;;AAED;GACC,iBAAiB;CACjB;;AAMH;CACC,aAAa;CACb,0BAA0B;CAC1B,wBAAwB;CACxB,gBAAgB;CAChB,mBAAmB;CACnB;;AAGA;EACC,0BAA0B;EAC1B,yBAAyB;EACzB,cAAc;EACd;;AAED;EACC,sCAAsC;EACtC;;AAED;EACC,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB;;AAED;EACC,gBAAgB;EAChB;;AAED;EACC,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,eAAe;EACf;;AAED;EACC,aAAa;EACb;;AAED;EACC,WAAW;EACX;;AAMF;CACC,cAAc;CACd;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC;;EAEC,eAAe;EA+Bf;;EA7BA;GACC,qBAAc;GAAd,cAAc;GACd,oBAAgB;OAAhB,gBAAgB;GAChB;;EAED;GACC,cAAe;GAsBf;;EApBA;EACC,YAAY;EACZ,oBAAoB;EACpB;;EAED;EACC,WAAW;EACX,uBAAuB;EACvB;;EAED;EACC,cAAc;EACd;;EAED;EACC,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;EACZ,eAAe;EACf;;CAIH;;ACjOD,iBAAiB;;AAMf;GACC,sBAAsB;GACtB;;AAIF;;GAIE;IACC,eAAe;IACf;;GAED;IACC,yBAAyB;IACzB,uBAAuB;IACvB,sBAAuB;;IAMvB;;GAJA;EACC,eAAsB;EACtB;;GAQF;IACC,eAAe;IACf;;GAED;IACC,eAAe;IACf,uBAAuB;IACvB;;GAED;IACC,yBAAyB;IACzB;CAIF;;AAIF;;CAEC,cAAe;;CAaf;;AAXA;CACC,YAAY;CACZ,yBAAyB;CACzB,gBAAgB;CAChB,kBAAkB;CAClB,aAAa;CACb,YAAY;CACZ,sBAAsB;CACtB,uBAAuB;CACvB;;AAIF;;IAEI,iBAAiB;IACjB,6BAA8B;CACjC;;AAED;IACI,iBAAiB;CACpB;;AAED;IACI,iBAAiB;CACpB;;AAED;IACI,cAAc;CACjB,2CAA4C;;CAO5C;;AALA;CACC,iBAAiB;CACjB,aAAa;CACb;;AAIF;IACI,cAAc;CACjB","file":"wp-optimize-admin.min.css","sourcesContent":["/* COLORS */\n$wp-blue: #0272AA;\n$wp-gray-dark: #555d66;\n$wp-gray-darker: #191e23;\n$wp-secondary-gray: #72777C;\n$wp-secondary-gray-light: #82868B;\n$wp-light-gray: #B5B9BE;\n$wp-lighter-gray: #EDEFF0;\n$success: #009B24;\n$error: #9B3600;\n$red: #E07575;\n$brand: #E46B1F;\n$spacing: 20px; \n\n/* OTHER VARS */\n$breakpoint-small: 782px;\n\n@import \"admin.css\";\n\n@import \"scss/layout\";\n\n@import \"scss/common\";\n\n@import \"scss/menu-and-tabs\";\n\n@import \"scss/image-list\";\n\n@import \"scss/plugin-family-tab\";\n\n@import \"scss/table-sorter\";\n",".wpo_hidden {\n\tdisplay: none;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n.nav-tab-wrapper {\n\tmargin: 14px 0px;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 250% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tdisplay: none;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n}\n\n#wpo_browser_cache_error_message,\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}","#wp-optimize-wrap {\n\tposition: relative;\n\tpadding-top: 100px;\n\n\t@media (min-width: 820px) {\n\t\tpadding-top: 120px;\n\t}\n\n\t@media(max-width: $breakpoint-small) {\n\t\tmargin-right: 0;\n\t}\n\n}\n\n/* DASHBOARD */\n\n.wpo-main-header {\n\n height: 77px;\n position: fixed;\n top: 32px;\n left: 160px;\n background: #FFF;\n right: 0;\n z-index: 9980;\n\n\t@media (min-width: 820px) {\n\t\theight: 105px;\n\t}\t\n\n\t.wpo-logo__container {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\theight: 100%;\n\t\tline-height: 1;\n\t\tfont-size: 1rem;\n\t\tpadding-left: 50px;\n\t\tmargin-left: 10px;\n\t}\n\n\t.wpo-logo {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 50px;\n\t}\n\n\t.wpo-subheader {\n\t\tmargin: 0;\n\t\tfont-weight: 300;\n\t\tcolor: $wp-secondary-gray;\n\t\tline-height: 1.3;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links {\n\t\tmargin: 0;\n\t\tfont-size: 0.7rem;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tpadding: 6px 15px;\n\t\tbackground: #EDEEEF;\n\t\tborder-bottom-left-radius: 5px;\n\t\tz-index: 1;\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t\tposition: absolute;\n\t\t\tright: 100%;\n\t\t\twidth: 110px;\n\t\t\ttext-align: right;\n\t\t\tpadding-right: 10px;\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links__mobile {\n\t\tpadding: 10px;\n\t\tbackground: #EDEEEF;\n\t\tmargin-bottom: 0;\n\t\t@media (min-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: .8rem;\n\t\t}\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t}\n\n\t}\n\n\t@media (max-width: 600px) {\n\t\t\n\t\t.wpo-logo__container strong {\n\t\t\twidth: 140px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n\tbody.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tleft: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tleft: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 0;\n\t\t}\t\t\n\t}\n\n\tbody.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tleft: 36px;\n\t\t}\n\t}\n\tbody.is-scrolled & {\n\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t}\n}\n\n.wpo-page {\n\t@media (min-width: 769px) {\n\t\tpadding-right: 15px;\n\t}\n\n\t&:not(.active) {\n\t\tdisplay: none;\n\t}\n}\n\n/* Columns */\n@media (min-width: 1200px) {\n\n\t.wpo-tab-postbox.right-col {\n\t\twidth: 350px;\n\t\tfloat: right;\n\t\tbox-sizing: border-box;\n\t\tmargin-top: 3.1rem;\n\t}\n\n\t.right-col + .wpo-main {\n\t\tfloat: left;\n\t\tbox-sizing: border-box;\n\t\twidth: calc(100% - 380px);\n\t}\n\n}\n","/* Common BLOCKS */\n\n\n/* Buttons */\n\n#wp-optimize-wrap {\n\n\t.button-large {\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.red {\n\t\tcolor: $red;\n\t}\n\n\tdiv[id*=\"_notice\"] div.updated {\n\t\tmargin-left: 0;\n\t}\n}\n\n.button.button-block {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: center;\n}\n\n.wpo-refresh-button {\n\tfloat: right;\n}\n\n.wpo-refresh-button:hover {\n\tcursor: pointer;\n}\n\n.wpo-refresh-button .dashicons {\n\ttext-decoration: none;\n line-height: inherit;\n font-size: inherit;\n}\n\n/* Helper classes */\n\n*[class*=\"wpo-badge\"] {\n\tdisplay: inline-block;\n\tfont-size: .8em;\n\ttext-transform: uppercase;\n\tbackground: $wp-lighter-gray;\n\tpadding: 3px 5px;\n\tline-height: 1;\n\tborder-radius: 3px;\n}\n\n.wpo-badge__new {\n\tbackground: #DBE3E6;\n\tcolor: #00689a;\n}\n\n.wpo-text__dim {\n\tcolor: $wp-light-gray;\n}\n\n.wpo-fieldgroup .wpo-text__dim {\n\tcolor: $wp-secondary-gray-light;\n}\n\n.wpo-first-child {\n\tmargin-top: 0;\n}\n\n#save_done, .save-done {\n\tcolor: $success;\n\tfont-size: 250%;\n}\n\np.wpo-take-a-backup {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tline-height: 1;\n\tpadding-top: 8px;\n\t@media (min-width: $breakpoint-small) {\n\t\tmargin-left: 20px;\n\t}\n}\n\n/* Postbox */\n\n#wp-optimize-nav-tab-wrapper ~ .wp-optimize-nav-tab-contents > .postbox {\n border: none;\n\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n\n}\n\n.wpo-p25,\n.postbox.wpo-tab-postbox {\n\tpadding: 25px;\n}\n\n.wpo-tab-postbox {\n\t\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n}\n\n/* Field group */\n\n.wpo-fieldgroup {\n background: $wp-lighter-gray;\n border-radius: 8px;\n\tpadding: 20px;\n\n\t&:not(:last-child) {\n\t\tmargin-bottom: 2em;\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 0;\n\t}\n\t\n\t> *:last-child {\n\t\tmargin-bottom: 0;\n\t}\n}\n\n.wpo-fieldgroup__subgroup {\n\t&:not(:last-of-type) {\n\t\tmargin-bottom: 20px;\n\t}\n}","/* TABS */\n\nh2#wp-optimize-nav-tab-wrapper {\n margin-bottom: 0;\n\tborder-bottom: none;\n\tposition: relative;\n\t\n\t.nav-tab,\n\t.nav-tab:hover,\n\t.nav-tab:focus,\n\t.nav-tab:focus:active {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tmargin: 0;\n\t\tborder-top: 3px solid transparent;\n\t\tpadding: 7px 15px;\n\t\tcolor: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\tcolor: $wp-secondary-gray;\n\t\t\tfont-size: 30px;\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t}\n\t\n\t.nav-tab-active,\n\t.nav-tab-active:hover,\n\t.nav-tab-active:focus,\n\t.nav-tab-active:focus:active {\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 0 1px rgba(0, 0, 0, 0.04);\n\t\tborder-top-color: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tcolor: $wp-blue;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\ta:not(.nav-tab-active) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t\n\ta[role=\"toggle-menu\"] {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\n\ta.nav-tab.wp-optimize-nav-tab__back {\n\t\t&, &:focus:active {\t\n\n\t\t\ttext-align: right;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: auto;\n\t\t\t\tline-height: inherit;\n\t\t\t\twidth: 20px;\n\t\t\t}\n\n\t\t\t@media (min-width: $breakpoint-small) {\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 14px;\n\t\t\t\tright: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: 400;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0;\n\t\t\t\n\t\t\t\t.dashicons {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t}\n\t\n\t}\n}\n\n.wpo-mobile-menu-opened {\n\n\t.wpo-main .wpo-tab-postbox {\n\t\tdisplay: none;\n\t}\n\t\n\th2#wp-optimize-nav-tab-wrapper a {\n\t\tdisplay: block;\n\t\tfloat: none;\n\n\t\t&.nav-tab-active,\n\t\t&.nav-tab-active:focus {\n\t\t\tborder-top: none;\n\t\t\tborder-left: 3px solid;\n\t\t}\n\t\t\n\t\t&.nav-tab-active,\n\t\t&.nav-tab-active:focus,\n\t\t&:focus,\n\t\t&:hover,\n\t\t& {\n\t\t\t.dashicons {\n\t\t\t\tdisplay: inline-block; \n\t\t\t\tline-height: inherit;\n\t\t\t}\n\t\t}\n\n\t\t&[role=\"toggle-menu\"] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n}\n\n\n/* Pages MENU */\n\n.wpo-pages-menu {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 0;\n\tdisplay: none;\n\n\t@media (max-width: 820px) {\n\t\t.opened + & {\n\t\t\tdisplay: block;\n\t\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t\t}\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: flex;\n\t\theight: 77px;\n\t}\n\n\t> a {\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t\tcolor: inherit;\n\t\ttext-align: center;\n\t\tbox-sizing: border-box;\n\t\tdisplay: block;\n\t\tcolor: $wp-gray-dark;\n\n\t\t@media (min-width: 821px) {\n\t\t\tpadding: 0 8px;\n\t\t\theight: 77px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\n\t\t\t> span {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tpadding: 15px;\n\t\t\tfont-size: 1.2em;\n\t\t}\n\n\t\t&.active {\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 3px;\n\t\t\t\tbackground: $brand;\n\t\t\t\tcolor: $wp-gray-darker;\n\n\t\t\t\t@media (max-width: 820px) {\n\t\t\t\t\twidth: 3px;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t@media (max-width: 820px) {\n\t\t\t\tcolor: $brand;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: #F9F9F9;\n\t\t\tcolor: $wp-gray-darker;\n\t\t}\n\t}\n\n\tspan.separator {\n\t\tdisplay: block;\n\t\twidth: 2px;\n\t\tbackground: #EFEFEF;\n\t\tmargin-top: 18px;\n\t\tmargin-bottom: 18px;\n\t\tmargin-right: 5px;\n\t\tmargin-left: 5px;\n\t\t@media (max-width: 820px) {\n\t\t\twidth: 80%;\n\t\t\theight: 2px;\n\t\t\tmargin: 10px 10%;\n\t\t}\n\t}\n\n\t@media (max-width: 820px) {\n\t\ttext-align: center;\n\t\ttop: 100%;\n\t\twidth: 100%;\n\t\tbottom: auto;\n\t\tbackground: #FFF;\t\t\n\n\t}\n\n}\n\n#wp-optimize-nav-page-menu {\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\theight: 77px;\n flex-direction: column;\n padding: 0 20px;\n align-items: center;\n justify-content: center;\n\ttext-decoration: none;\n\n\t&:not(.opened) .dashicons-no-alt {\n\t\tdisplay: none;\n\t}\n\n\t&.opened .dashicons-menu {\n\t\tdisplay: none;\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: none;\n\t}\n}\n\n/* DASHBOARD Menu */\n\n/* Calculate column width with a $spacing gutter */\n.wpo-dashboard-pages-menu {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t/* Same size for 1 to 3 items */\n\t&[data-itemscount=\"1\"],\n\t&[data-itemscount=\"2\"],\n\t&[data-itemscount=\"3\"] {\n\t\t.wpo-dashboard-pages-menu__item {\n\t\t\twidth: calc(33.333% - 40px / 3);\n\t\t}\n\t}\n\n\t/* above 3 items, change sizes */\n\t@for $count from 4 to 6 {\n\t\t&[data-itemscount=\"$count\"] {\n\t\t\t.wpo-dashboard-pages-menu__item {\n\t\t\t\twidth: calc(100% / $count - $spacing * ($count - 1) / $count);\n\t\t\t}\n\t\t}\n\t}\n\n\t.postbox.wpo-dashboard-pages-menu__item {\n\t\tpadding: $spacing;\n\t\tmargin-right: $spacing;\n\t\tbox-sizing: border-box;\n\t\tpadding-bottom: 60px;\n\t\tmin-width: 0;\n\t\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\n\t\th3 {\n\t\t\tmargin-top: 0;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-secondary-gray;\n\t\t\t\tline-height: 1;\n\t\t\t\theight: 18px;\n\t\t\t\tmargin-top: -2px;\n\t\t\t\tmargin-right: 10px\n\t\t\t}\n\n\t\t}\n\n\t\ta {\n\t\t\tposition: absolute;\n\t\t\tbottom: $spacing;\n\t\t\tleft: $spacing;\n\t\t\twidth: calc(100% - $spacing * 2) !important;\n\t\t}\n\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\twidth: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tpadding-bottom: 20px;\n\n\t\t\ta.button.button-large {\n\t\t\t\twidth: auto !important;\n\t\t\t\tleft: auto;\n\t\t\t\tbottom: auto;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: $spacing;\n\t\t\t}\n\n\t\t\th3 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t}\n\t\n\t}\n\n}\n\n/* Admin bar separator */\n\n#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item {\n height: 2px;\n line-height: 2px;\n background: #ffffff17;\n margin: 5px 10px;\n width: auto;\n min-width: 0;\n}","/* Unused images / wpo_smush_image / image grid*/\n\n.wpo_unused_image, .wpo_smush_image {\n\tposition: relative;\n\tmargin: 4px;\n\twidth: calc(50% - 8px);\n\ttext-align: center;\n\n\t@media (min-width: 500px) {\n\t\twidth: calc(25% - 8px);\n\t}\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: calc(16.6666% - 8px);\n\t}\n\n\t@media (min-width: 1100px) {\n\t\twidth: calc(12.5% - 8px);\n\t}\n\n\t.wpo_unused_image__input {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\tvisibility: hidden;\n\t}\n\t\n\tlabel {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tpadding: 1px;\n\t\tborder: 3px solid $wp-lighter-gray;\n\t\tbox-sizing: border-box;\n\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: block;\n\t\t\tpadding-top: 100%;\n\t\t}\n\n\t\t.thumbnail {\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\twidth: calc(100% - 2px);\n\t\t\theight: calc(100% - 2px);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: 50% 50%;\n\t\t\toverflow: hidden;\n\t\t\tbackground: rgba(220, 220, 220, 0.2);\n\n\t\t\timg {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0;\n\t\t\t\tmax-height: 100%;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translate(-50%,-50%);\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\t\n\t.wpo_unused_image__input:checked + label,\n\t&.checked label {\n\t\tborder-color: $wp-blue;\n\t}\n\n\ta, a.button, a.button:active {\n\t\tposition: absolute;\n\t\tz-index: 2;\n\t\tbottom: 13px;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tdisplay: none;\n\t}\n\n\t&:hover {\n\n\t\ta, a.button, a.button:active {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\twidth: calc(100% + 8px);\n margin-left: -4px;\n margin-right: -4px;\n\tmax-height: 500px;\n\toverflow-y: auto;\n display: flex;\n\tflex-wrap: wrap;\n\n\t.wpo-fieldgroup {\n\t\twidth: 100%;\n\t}\n\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}","/* More Plugins page */\n\n/* Plugins family / Premium */\n\np.wpo-plugin-installed {\n color: $success;\n}\n\n/* Settings repeater */\n\n.wpo-repeater__add {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n\n/* Plugin familly tab */\n\n.wpo-plugin-family__premium h2 {\n margin: 0;\n padding: 25px;\n}\n\n.wpo-plugin-family__plugins {\n display: flex;\n flex-wrap: wrap;\n\tpadding-left: 1px;\n\tpadding-bottom: 1px;\n}\n\n.wpo-plugin-family__plugin {\n flex: auto;\n width: 100%;\n padding: 30px;\n box-sizing: border-box;\n border: 1px solid #E3E4E7;\n\tmargin-left: -1px;\n\tmargin-bottom: -1px;\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: 50%;\n\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t@media (max-width: 1080px) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 50%;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n}\n\ndiv#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox {\n padding: 0;\n}\n\n/* Added for WPO Premium Features tab */\n.wpo_feature_cont {\n\twidth: 64.5%;\n}\n\n.wpo_plugin_family_cont {\n\twidth: 34.5%;\n}\n\n@media (max-width: 1080px) {\n\n\t.wpo_feature_cont,\n\t.wpo_plugin_family_cont {\n\t\twidth: 100%;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t}\n\n}\n\n.wpo_feature_cont,\n.wpo_plugin_family_cont {\n\n\theader {\n\t\tpadding: 20px;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tpadding: 40px;\t\t\n\t\t}\n\n\t\th2 {\n\t\t\tmargin: 0;\n\t\t}\n\t\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t}\n\n}\n\n.wpo_feat_table, .wpo_feat_th, .wpo_feat_table td {\n\tborder: none;\n\tborder-collapse: collapse;\n\tbackground-color: white;\n\tfont-size: 120%;\n\ttext-align: center;\n}\n\n.wpo_feat_table {\n\ttd {\n\t\tborder: 1px solid #F1F1F1;\n\t\tborder-bottom-width: 4px;\n\t\tpadding: 15px;\n\t}\n\n\ttd:nth-child(2), td:nth-child(3) {\n\t\tbackground: rgba(241, 241, 241, 0.38);\n\t}\n\n\tp {\n\t\tpadding: 0px 10px;\n\t\tmargin: 5px 0px;\n\t\tfont-size: 13px;\n\t}\n\n\th4 {\n\t\tmargin: 5px 0px;\n\t}\n\n\t.dashicons {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tfont-size: 25px;\n\t\tline-height: 1;\n\t}\n\n\t.dashicons-yes, .updraft-yes {\n\t\tcolor: green;\n\t}\n\t\n\t.dashicons-no-alt, .updraft-no {\n\t\tcolor: red;\n\t}\n\n}\n\n\n\n.wpo-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t#wpoptimize_table_list_filter {\n\t\twidth: 40%;\n\t}\n\n\t.wpo-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding: 16px 18px;\n\t\twidth: 30px;\n\t\theight: auto;\n\t}\n\n}\n\n@media screen and (min-width: 1220px) {\n\n\t.wpo_feat_table td:nth-child(2), .wpo_feat_table td:nth-child(3) {\n\t\twidth: 110px;\n\t}\n\n}\n\n.other-plugin-title {\n\ttext-decoration: none;\n}\n\n@media screen and (max-width: $breakpoint-small) {\n\n\ttable.wpo_feat_table {\n\n\t\tdisplay: block;\n\n\t\ttr {\n\t\t\tdisplay: flex;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\ttd {\n\t\t\tdisplay: block;\n\n\t\t\t&:first-child {\n\t\t\t\twidth: 100%;\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\n\t\t\t&:not(:first-child) {\n\t\t\t\twidth: 50%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:first-child:empty {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t&[data-colname]::before {\n\t\t\t\tcontent: attr(data-colname);\n\t\t\t\tfont-size: 0.8rem;\n\t\t\t\tcolor: #CCC;\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t}\n\t}\n\n}","\n/* tablesorter */\n\n#wp-optimize-wrap {\n\n\t.wp-list-table {\n\t\t\n\t\ttd {\n\t\t\tword-break: break-all; \n\t\t}\n\n\t}\n\n\t@media screen and (max-width: $breakpoint-small ) {\n\n\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\n\t\t\t&, tr, th, td {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tpadding: 3px 8px 3px 35%;\n\t\t\t\tword-break: break-word;\n\t\t\t\tbox-sizing: border-box; \n\n\t\t\t\t&::before {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\t\t\n\n\t\t.wp-list-table.wp-list-table-mobile-labels thead {\n\n\t\t\t&, tr {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tth.column-primary {\n\t\t\t\tdisplay: block;\n\t\t\t\tbox-sizing: border-box; \n\t\t\t}\n\n\t\t\tth:not(.column-primary) {\n\t\t\t\tdisplay: none !important; \n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nth:not(.sorter-false) .tablesorter-header-inner {\n\n\tcolor: #0074ab;\n\n\t&::after {\n\t\tcontent: '';\n\t\tfont-family: 'dashicons';\n\t\tfont-size: 20px;\n\t\tline-height: 20px;\n\t\theight: 20px;\n\t\twidth: 20px;\n\t\tdisplay: inline-block;\n\t\tvertical-align: bottom;\n\t}\n\n}\n\nth.tablesorter-header.tablesorter-headerAsc,\nth.tablesorter-header.tablesorter-headerDesc {\n font-weight: 500;\n border-bottom-color: $wp-blue;\n}\n\nth.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after {\n content: \"\\f140\";\n}\n\nth.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after {\n content: \"\\f142\";\n}\n\nth.tablesorter-header:focus {\n outline: none;\n\tbox-shadow: 0 0 3px rgba(0, 116, 171, 0.78);\n\n\t&:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after {\n\t\tcontent: \"\\f142\";\n\t\topacity: 0.5;\n\t}\n\n}\n\n.tablesorter.hasFilters tr.filtered {\n display: none;\n}\n"]}
|
includes/class-wp-optimize-options.php
CHANGED
@@ -228,8 +228,11 @@ class WP_Optimize_Options {
|
|
228 |
}
|
229 |
|
230 |
/** Save logging options */
|
231 |
-
$
|
232 |
-
$
|
|
|
|
|
|
|
233 |
|
234 |
// Save selected optimization settings.
|
235 |
$this->save_sent_manual_run_optimization_options($settings, true, false);
|
228 |
}
|
229 |
|
230 |
/** Save logging options */
|
231 |
+
$logger_type = isset($settings['wpo-logger-type']) ? $settings['wpo-logger-type'] : '';
|
232 |
+
$logger_options = isset($settings['wpo-logger-options']) ? $settings['wpo-logger-options'] : '';
|
233 |
+
|
234 |
+
$this->update_option('logging', $logger_type);
|
235 |
+
$this->update_option('logging-additional', $logger_options);
|
236 |
|
237 |
// Save selected optimization settings.
|
238 |
$this->save_sent_manual_run_optimization_options($settings, true, false);
|
includes/class-wp-optimizer.php
CHANGED
@@ -309,22 +309,27 @@ class WP_Optimizer {
|
|
309 |
/**
|
310 |
* Returns information about single table by table name.
|
311 |
*
|
312 |
-
* @param
|
313 |
-
* @return
|
314 |
*/
|
315 |
public function get_table($table_name) {
|
316 |
-
|
|
|
|
|
|
|
|
|
|
|
317 |
|
318 |
-
$table->is_optimizable =
|
319 |
-
$table->is_type_supported =
|
320 |
-
$table->is_needing_repair =
|
321 |
|
322 |
// add information about using table by any of installed plugins.
|
323 |
-
$table->plugin =
|
324 |
-
$table->is_using =
|
325 |
// if table belongs to any plugin then add plugins status.
|
326 |
if ($table->plugin) {
|
327 |
-
$table->plugin_status =
|
328 |
}
|
329 |
|
330 |
$table = apply_filters('wp_optimize_get_table', $table);
|
@@ -336,7 +341,7 @@ class WP_Optimizer {
|
|
336 |
* and information regarding each table and returns
|
337 |
* the results to optimizations-table.php and optimizationstable.php
|
338 |
*
|
339 |
-
* @return
|
340 |
*/
|
341 |
public function get_table_information() {
|
342 |
// Get table information.
|
@@ -385,7 +390,7 @@ class WP_Optimizer {
|
|
385 |
|
386 |
$wpdb = $GLOBALS['wpdb'];
|
387 |
|
388 |
-
$new_status =
|
389 |
|
390 |
switch ($type) {
|
391 |
case "trackbacks":
|
309 |
/**
|
310 |
* Returns information about single table by table name.
|
311 |
*
|
312 |
+
* @param String $table_name table name
|
313 |
+
* @return Object|Boolean table information object.
|
314 |
*/
|
315 |
public function get_table($table_name) {
|
316 |
+
|
317 |
+
$db_info = WP_Optimize()->get_db_info();
|
318 |
+
|
319 |
+
$table = $db_info->get_table_status($table_name);
|
320 |
+
|
321 |
+
if (false === $table) return false;
|
322 |
|
323 |
+
$table->is_optimizable = $db_info->is_table_optimizable($table_name);
|
324 |
+
$table->is_type_supported = $db_info->is_table_type_optimize_supported($table_name);
|
325 |
+
$table->is_needing_repair = $db_info->is_table_needing_repair($table_name);
|
326 |
|
327 |
// add information about using table by any of installed plugins.
|
328 |
+
$table->plugin = $db_info->get_table_plugin($table_name);
|
329 |
+
$table->is_using = $db_info->is_table_using_by_plugin($table_name);
|
330 |
// if table belongs to any plugin then add plugins status.
|
331 |
if ($table->plugin) {
|
332 |
+
$table->plugin_status = $db_info->get_plugin_status($table->plugin);
|
333 |
}
|
334 |
|
335 |
$table = apply_filters('wp_optimize_get_table', $table);
|
341 |
* and information regarding each table and returns
|
342 |
* the results to optimizations-table.php and optimizationstable.php
|
343 |
*
|
344 |
+
* @return Array - an array of data such as table list, innodb info and data free
|
345 |
*/
|
346 |
public function get_table_information() {
|
347 |
// Get table information.
|
390 |
|
391 |
$wpdb = $GLOBALS['wpdb'];
|
392 |
|
393 |
+
$new_status = $enable ? 'open' : 'closed';
|
394 |
|
395 |
switch ($type) {
|
396 |
case "trackbacks":
|
includes/wp-optimize-database-information.php
CHANGED
@@ -494,6 +494,9 @@ class WP_Optimize_Database_Information {
|
|
494 |
if (is_array($installed_plugins)) return $installed_plugins;
|
495 |
|
496 |
$installed_plugins = array();
|
|
|
|
|
|
|
497 |
$plugins = get_plugins();
|
498 |
|
499 |
foreach ($plugins as $plugin_file => $plugin_data) {
|
494 |
if (is_array($installed_plugins)) return $installed_plugins;
|
495 |
|
496 |
$installed_plugins = array();
|
497 |
+
|
498 |
+
if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
|
499 |
+
|
500 |
$plugins = get_plugins();
|
501 |
|
502 |
foreach ($plugins as $plugin_file => $plugin_data) {
|
languages/wp-optimize.pot
CHANGED
@@ -201,7 +201,7 @@ msgstr ""
|
|
201 |
msgid "Auto backup option updated."
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: src/includes/class-wp-optimize-options.php:
|
205 |
msgid "Settings updated."
|
206 |
msgstr ""
|
207 |
|
@@ -209,19 +209,19 @@ msgstr ""
|
|
209 |
msgid "No such optimization"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: src/includes/class-wp-optimizer.php:
|
213 |
msgid "Comments have now been disabled on all current and previously published posts."
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: src/includes/class-wp-optimizer.php:
|
217 |
msgid "Comments have now been enabled on all current and previously published posts."
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: src/includes/class-wp-optimizer.php:
|
221 |
msgid "Trackbacks have now been disabled on all current and previously published posts."
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: src/includes/class-wp-optimizer.php:
|
225 |
msgid "Trackbacks have now been enabled on all current and previously published posts."
|
226 |
msgstr ""
|
227 |
|
@@ -319,7 +319,7 @@ msgid_plural "%s orphaned attachments deleted"
|
|
319 |
msgstr[0] ""
|
320 |
msgstr[1] ""
|
321 |
|
322 |
-
#: src/optimizations/attachments.php:33, src/optimizations/attachments.php:73, src/optimizations/autodraft.php:85, src/optimizations/autodraft.php:130, src/optimizations/commentmeta.php:
|
323 |
msgid "across %s site"
|
324 |
msgid_plural "across %s sites"
|
325 |
msgstr[0] ""
|
@@ -339,11 +339,11 @@ msgstr ""
|
|
339 |
msgid "Remove orphaned attachments"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: src/optimizations/autodraft.php:54, src/optimizations/commentmeta.php:
|
343 |
msgid "no title"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: src/optimizations/autodraft.php:66, src/optimizations/commentmeta.php:
|
347 |
msgid "ID"
|
348 |
msgstr ""
|
349 |
|
@@ -383,51 +383,51 @@ msgstr ""
|
|
383 |
msgid "Remove auto-draft posts"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: src/optimizations/commentmeta.php:
|
387 |
msgid "Comment ID"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: src/optimizations/commentmeta.php:
|
391 |
msgid "Meta Key"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: src/optimizations/commentmeta.php:
|
395 |
msgid "Meta Value"
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: src/optimizations/commentmeta.php:
|
399 |
msgid "No orphaned comment meta data in your database"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: src/optimizations/commentmeta.php:
|
403 |
msgid "%s unused comment metadata item removed"
|
404 |
msgid_plural "%s unused comment metadata items removed"
|
405 |
msgstr[0] ""
|
406 |
msgstr[1] ""
|
407 |
|
408 |
-
#: src/optimizations/commentmeta.php:
|
409 |
msgid "%s unused akismet comment metadata item removed"
|
410 |
msgid_plural "%s unused akismet comment metadata items removed"
|
411 |
msgstr[0] ""
|
412 |
msgstr[1] ""
|
413 |
|
414 |
-
#: src/optimizations/commentmeta.php:
|
415 |
msgid "%s orphaned comment meta data in your database"
|
416 |
msgid_plural "%s orphaned comment meta data in your database"
|
417 |
msgstr[0] ""
|
418 |
msgstr[1] ""
|
419 |
|
420 |
-
#: src/optimizations/commentmeta.php:
|
421 |
msgid "%s unused Akismet comment meta rows in your database"
|
422 |
msgid_plural "%s unused Akismet meta rows in your database"
|
423 |
msgstr[0] ""
|
424 |
msgstr[1] ""
|
425 |
|
426 |
-
#: src/optimizations/commentmeta.php:
|
427 |
msgid "No Akismet comment meta rows in your database"
|
428 |
msgstr ""
|
429 |
|
430 |
-
#: src/optimizations/commentmeta.php:
|
431 |
msgid "Clean comment meta data"
|
432 |
msgstr ""
|
433 |
|
@@ -463,23 +463,23 @@ msgstr ""
|
|
463 |
msgid "Optimize database tables"
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: src/optimizations/orphandata.php:
|
467 |
msgid "%s orphaned meta data deleted"
|
468 |
msgid_plural "%s orphaned meta data deleted"
|
469 |
msgstr[0] ""
|
470 |
msgstr[1] ""
|
471 |
|
472 |
-
#: src/optimizations/orphandata.php:
|
473 |
msgid "%s orphaned relationship data in your database"
|
474 |
msgid_plural "%s orphaned relationship data in your database"
|
475 |
msgstr[0] ""
|
476 |
msgstr[1] ""
|
477 |
|
478 |
-
#: src/optimizations/orphandata.php:
|
479 |
msgid "No orphaned relationship data in your database"
|
480 |
msgstr ""
|
481 |
|
482 |
-
#: src/optimizations/orphandata.php:
|
483 |
msgid "Clean orphaned relationship data"
|
484 |
msgstr ""
|
485 |
|
@@ -491,59 +491,59 @@ msgstr ""
|
|
491 |
msgid "Delete orphaned database tables"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: src/optimizations/pingbacks.php:
|
495 |
msgid "Author"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: src/optimizations/pingbacks.php:
|
499 |
msgid "Comment"
|
500 |
msgstr ""
|
501 |
|
502 |
-
#: src/optimizations/pingbacks.php:
|
503 |
msgid "No pingbacks found"
|
504 |
msgstr ""
|
505 |
|
506 |
-
#: src/optimizations/pingbacks.php:
|
507 |
msgid "%s pingback deleted"
|
508 |
msgid_plural "%s pingbacks deleted"
|
509 |
msgstr[0] ""
|
510 |
msgstr[1] ""
|
511 |
|
512 |
-
#: src/optimizations/pingbacks.php:
|
513 |
msgid "%s pingback found"
|
514 |
msgid_plural "%s pingbacks found"
|
515 |
msgstr[0] ""
|
516 |
msgstr[1] ""
|
517 |
|
518 |
-
#: src/optimizations/pingbacks.php:
|
519 |
msgid "Remove pingbacks"
|
520 |
msgstr ""
|
521 |
|
522 |
-
#: src/optimizations/postmeta.php:
|
523 |
msgid "Post ID"
|
524 |
msgstr ""
|
525 |
|
526 |
-
#: src/optimizations/postmeta.php:
|
527 |
msgid "No orphaned post meta data in your database"
|
528 |
msgstr ""
|
529 |
|
530 |
-
#: src/optimizations/postmeta.php:
|
531 |
msgid "%s orphaned post meta data deleted"
|
532 |
msgid_plural "%s orphaned post meta data deleted"
|
533 |
msgstr[0] ""
|
534 |
msgstr[1] ""
|
535 |
|
536 |
-
#: src/optimizations/postmeta.php:
|
537 |
msgid "%s orphaned post meta data in your database"
|
538 |
msgid_plural "%s orphaned post meta data in your database"
|
539 |
msgstr[0] ""
|
540 |
msgstr[1] ""
|
541 |
|
542 |
-
#: src/optimizations/postmeta.php:
|
543 |
msgid "Clean post meta data"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: src/optimizations/postmeta.php:
|
547 |
msgid "Remove orphaned post meta"
|
548 |
msgstr ""
|
549 |
|
@@ -627,77 +627,77 @@ msgstr ""
|
|
627 |
msgid "Remove spam and trashed comments"
|
628 |
msgstr ""
|
629 |
|
630 |
-
#: src/optimizations/trackbacks.php:
|
631 |
msgid "No trackbacks found"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: src/optimizations/trackbacks.php:
|
635 |
msgid "%s trackback deleted"
|
636 |
msgid_plural "%s trackbacks deleted"
|
637 |
msgstr[0] ""
|
638 |
msgstr[1] ""
|
639 |
|
640 |
-
#: src/optimizations/trackbacks.php:
|
641 |
msgid "%s Trackback found"
|
642 |
msgid_plural "%s Trackbacks found"
|
643 |
msgstr[0] ""
|
644 |
msgstr[1] ""
|
645 |
|
646 |
-
#: src/optimizations/trackbacks.php:
|
647 |
msgid "Remove trackbacks"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: src/optimizations/transient.php:
|
651 |
msgid "Name"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: src/optimizations/transient.php:
|
655 |
msgid "Value"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: src/optimizations/transient.php:
|
659 |
msgid "No transient options found"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: src/optimizations/transient.php:
|
663 |
msgid "%s transient option deleted"
|
664 |
msgid_plural "%s transient options deleted"
|
665 |
msgstr[0] ""
|
666 |
msgstr[1] ""
|
667 |
|
668 |
-
#: src/optimizations/transient.php:
|
669 |
msgid "%s network-wide transient option deleted"
|
670 |
msgid_plural "%s network-wide transient options deleted"
|
671 |
msgstr[0] ""
|
672 |
msgstr[1] ""
|
673 |
|
674 |
-
#: src/optimizations/transient.php:
|
675 |
msgid "%1$d of %2$d transient option expired"
|
676 |
msgid_plural "%1$d of %2$d transient options expired"
|
677 |
msgstr[0] ""
|
678 |
msgstr[1] ""
|
679 |
|
680 |
-
#: src/optimizations/transient.php:
|
681 |
msgid "across %d site"
|
682 |
msgid_plural "across %d sites"
|
683 |
msgstr[0] ""
|
684 |
msgstr[1] ""
|
685 |
|
686 |
-
#: src/optimizations/transient.php:
|
687 |
msgid "%1$d of %2$d network-wide transient option found"
|
688 |
msgid_plural "%1$d of %2$d network-wide transient options found"
|
689 |
msgstr[0] ""
|
690 |
msgstr[1] ""
|
691 |
|
692 |
-
#: src/optimizations/transient.php:
|
693 |
msgid "No site-wide transient options found"
|
694 |
msgstr ""
|
695 |
|
696 |
-
#: src/optimizations/transient.php:
|
697 |
msgid "Remove all transient options (not only expired)"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: src/optimizations/transient.php:
|
701 |
msgid "Remove expired transient options"
|
702 |
msgstr ""
|
703 |
|
@@ -1723,18 +1723,18 @@ msgstr ""
|
|
1723 |
msgid "bytes"
|
1724 |
msgstr ""
|
1725 |
|
1726 |
-
#: src/wp-optimize.php:
|
1727 |
msgid "You have no permissions to run optimizations."
|
1728 |
msgstr ""
|
1729 |
|
1730 |
-
#: src/wp-optimize.php:
|
1731 |
msgid "You have no permissions to manage WP-Optimize settings."
|
1732 |
msgstr ""
|
1733 |
|
1734 |
-
#: src/wp-optimize.php:
|
1735 |
msgid "Only Network Administrator can activate WP-Optimize plugin."
|
1736 |
msgstr ""
|
1737 |
|
1738 |
-
#: src/wp-optimize.php:
|
1739 |
msgid "go back"
|
1740 |
msgstr ""
|
201 |
msgid "Auto backup option updated."
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: src/includes/class-wp-optimize-options.php:251
|
205 |
msgid "Settings updated."
|
206 |
msgstr ""
|
207 |
|
209 |
msgid "No such optimization"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: src/includes/class-wp-optimizer.php:475
|
213 |
msgid "Comments have now been disabled on all current and previously published posts."
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: src/includes/class-wp-optimizer.php:478
|
217 |
msgid "Comments have now been enabled on all current and previously published posts."
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: src/includes/class-wp-optimizer.php:485
|
221 |
msgid "Trackbacks have now been disabled on all current and previously published posts."
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: src/includes/class-wp-optimizer.php:488
|
225 |
msgid "Trackbacks have now been enabled on all current and previously published posts."
|
226 |
msgstr ""
|
227 |
|
319 |
msgstr[0] ""
|
320 |
msgstr[1] ""
|
321 |
|
322 |
+
#: src/optimizations/attachments.php:33, src/optimizations/attachments.php:73, src/optimizations/autodraft.php:85, src/optimizations/autodraft.php:130, src/optimizations/commentmeta.php:103, src/optimizations/commentmeta.php:172, src/optimizations/orphandata.php:20, src/optimizations/orphandata.php:48, src/optimizations/pingbacks.php:70, src/optimizations/pingbacks.php:109, src/optimizations/postmeta.php:65, src/optimizations/postmeta.php:100, src/optimizations/revisions.php:81, src/optimizations/revisions.php:125, src/optimizations/spam.php:111, src/optimizations/spam.php:198, src/optimizations/trackbacks.php:71, src/optimizations/trackbacks.php:111, src/optimizations/transient.php:180, src/optimizations/trash.php:96, src/optimizations/trash.php:169, src/optimizations/unapproved.php:84, src/optimizations/unapproved.php:130
|
323 |
msgid "across %s site"
|
324 |
msgid_plural "across %s sites"
|
325 |
msgstr[0] ""
|
339 |
msgid "Remove orphaned attachments"
|
340 |
msgstr ""
|
341 |
|
342 |
+
#: src/optimizations/autodraft.php:54, src/optimizations/commentmeta.php:51, src/optimizations/pingbacks.php:37, src/optimizations/revisions.php:50, src/optimizations/spam.php:68, src/optimizations/trackbacks.php:38, src/optimizations/trash.php:58, src/optimizations/unapproved.php:51
|
343 |
msgid "no title"
|
344 |
msgstr ""
|
345 |
|
346 |
+
#: src/optimizations/autodraft.php:66, src/optimizations/commentmeta.php:74, src/optimizations/pingbacks.php:51, src/optimizations/postmeta.php:45, src/optimizations/revisions.php:62, src/optimizations/spam.php:82, src/optimizations/trackbacks.php:52, src/optimizations/transient.php:142, src/optimizations/transient.php:148, src/optimizations/trash.php:77, src/optimizations/unapproved.php:65
|
347 |
msgid "ID"
|
348 |
msgstr ""
|
349 |
|
383 |
msgid "Remove auto-draft posts"
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: src/optimizations/commentmeta.php:75
|
387 |
msgid "Comment ID"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: src/optimizations/commentmeta.php:76, src/optimizations/postmeta.php:47
|
391 |
msgid "Meta Key"
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: src/optimizations/commentmeta.php:77, src/optimizations/postmeta.php:48
|
395 |
msgid "Meta Value"
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: src/optimizations/commentmeta.php:83, src/optimizations/commentmeta.php:162
|
399 |
msgid "No orphaned comment meta data in your database"
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: src/optimizations/commentmeta.php:99
|
403 |
msgid "%s unused comment metadata item removed"
|
404 |
msgid_plural "%s unused comment metadata items removed"
|
405 |
msgstr[0] ""
|
406 |
msgstr[1] ""
|
407 |
|
408 |
+
#: src/optimizations/commentmeta.php:100
|
409 |
msgid "%s unused akismet comment metadata item removed"
|
410 |
msgid_plural "%s unused akismet comment metadata items removed"
|
411 |
msgstr[0] ""
|
412 |
msgstr[1] ""
|
413 |
|
414 |
+
#: src/optimizations/commentmeta.php:160
|
415 |
msgid "%s orphaned comment meta data in your database"
|
416 |
msgid_plural "%s orphaned comment meta data in your database"
|
417 |
msgstr[0] ""
|
418 |
msgstr[1] ""
|
419 |
|
420 |
+
#: src/optimizations/commentmeta.php:166
|
421 |
msgid "%s unused Akismet comment meta rows in your database"
|
422 |
msgid_plural "%s unused Akismet meta rows in your database"
|
423 |
msgstr[0] ""
|
424 |
msgstr[1] ""
|
425 |
|
426 |
+
#: src/optimizations/commentmeta.php:168
|
427 |
msgid "No Akismet comment meta rows in your database"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: src/optimizations/commentmeta.php:206, src/optimizations/commentmeta.php:210
|
431 |
msgid "Clean comment meta data"
|
432 |
msgstr ""
|
433 |
|
463 |
msgid "Optimize database tables"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: src/optimizations/orphandata.php:17
|
467 |
msgid "%s orphaned meta data deleted"
|
468 |
msgid_plural "%s orphaned meta data deleted"
|
469 |
msgstr[0] ""
|
470 |
msgstr[1] ""
|
471 |
|
472 |
+
#: src/optimizations/orphandata.php:42
|
473 |
msgid "%s orphaned relationship data in your database"
|
474 |
msgid_plural "%s orphaned relationship data in your database"
|
475 |
msgstr[0] ""
|
476 |
msgstr[1] ""
|
477 |
|
478 |
+
#: src/optimizations/orphandata.php:44
|
479 |
msgid "No orphaned relationship data in your database"
|
480 |
msgstr ""
|
481 |
|
482 |
+
#: src/optimizations/orphandata.php:65
|
483 |
msgid "Clean orphaned relationship data"
|
484 |
msgstr ""
|
485 |
|
491 |
msgid "Delete orphaned database tables"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: src/optimizations/pingbacks.php:52, src/optimizations/spam.php:83, src/optimizations/trackbacks.php:53, src/optimizations/unapproved.php:66
|
495 |
msgid "Author"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: src/optimizations/pingbacks.php:53, src/optimizations/spam.php:84, src/optimizations/trackbacks.php:54
|
499 |
msgid "Comment"
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: src/optimizations/pingbacks.php:59, src/optimizations/pingbacks.php:105
|
503 |
msgid "No pingbacks found"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: src/optimizations/pingbacks.php:67
|
507 |
msgid "%s pingback deleted"
|
508 |
msgid_plural "%s pingbacks deleted"
|
509 |
msgstr[0] ""
|
510 |
msgstr[1] ""
|
511 |
|
512 |
+
#: src/optimizations/pingbacks.php:103
|
513 |
msgid "%s pingback found"
|
514 |
msgid_plural "%s pingbacks found"
|
515 |
msgstr[0] ""
|
516 |
msgstr[1] ""
|
517 |
|
518 |
+
#: src/optimizations/pingbacks.php:131
|
519 |
msgid "Remove pingbacks"
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: src/optimizations/postmeta.php:46
|
523 |
msgid "Post ID"
|
524 |
msgstr ""
|
525 |
|
526 |
+
#: src/optimizations/postmeta.php:54, src/optimizations/postmeta.php:96
|
527 |
msgid "No orphaned post meta data in your database"
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: src/optimizations/postmeta.php:62
|
531 |
msgid "%s orphaned post meta data deleted"
|
532 |
msgid_plural "%s orphaned post meta data deleted"
|
533 |
msgstr[0] ""
|
534 |
msgstr[1] ""
|
535 |
|
536 |
+
#: src/optimizations/postmeta.php:94
|
537 |
msgid "%s orphaned post meta data in your database"
|
538 |
msgid_plural "%s orphaned post meta data in your database"
|
539 |
msgstr[0] ""
|
540 |
msgstr[1] ""
|
541 |
|
542 |
+
#: src/optimizations/postmeta.php:122
|
543 |
msgid "Clean post meta data"
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: src/optimizations/postmeta.php:131
|
547 |
msgid "Remove orphaned post meta"
|
548 |
msgstr ""
|
549 |
|
627 |
msgid "Remove spam and trashed comments"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: src/optimizations/trackbacks.php:60, src/optimizations/trackbacks.php:107
|
631 |
msgid "No trackbacks found"
|
632 |
msgstr ""
|
633 |
|
634 |
+
#: src/optimizations/trackbacks.php:68
|
635 |
msgid "%s trackback deleted"
|
636 |
msgid_plural "%s trackbacks deleted"
|
637 |
msgstr[0] ""
|
638 |
msgstr[1] ""
|
639 |
|
640 |
+
#: src/optimizations/trackbacks.php:105
|
641 |
msgid "%s Trackback found"
|
642 |
msgid_plural "%s Trackbacks found"
|
643 |
msgstr[0] ""
|
644 |
msgstr[1] ""
|
645 |
|
646 |
+
#: src/optimizations/trackbacks.php:125
|
647 |
msgid "Remove trackbacks"
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: src/optimizations/transient.php:143, src/optimizations/transient.php:149
|
651 |
msgid "Name"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: src/optimizations/transient.php:144, src/optimizations/transient.php:150
|
655 |
msgid "Value"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: src/optimizations/transient.php:161, src/optimizations/transient.php:388
|
659 |
msgid "No transient options found"
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: src/optimizations/transient.php:177
|
663 |
msgid "%s transient option deleted"
|
664 |
msgid_plural "%s transient options deleted"
|
665 |
msgstr[0] ""
|
666 |
msgstr[1] ""
|
667 |
|
668 |
+
#: src/optimizations/transient.php:254
|
669 |
msgid "%s network-wide transient option deleted"
|
670 |
msgid_plural "%s network-wide transient options deleted"
|
671 |
msgstr[0] ""
|
672 |
msgstr[1] ""
|
673 |
|
674 |
+
#: src/optimizations/transient.php:386
|
675 |
msgid "%1$d of %2$d transient option expired"
|
676 |
msgid_plural "%1$d of %2$d transient options expired"
|
677 |
msgstr[0] ""
|
678 |
msgstr[1] ""
|
679 |
|
680 |
+
#: src/optimizations/transient.php:392
|
681 |
msgid "across %d site"
|
682 |
msgid_plural "across %d sites"
|
683 |
msgstr[0] ""
|
684 |
msgstr[1] ""
|
685 |
|
686 |
+
#: src/optimizations/transient.php:404
|
687 |
msgid "%1$d of %2$d network-wide transient option found"
|
688 |
msgid_plural "%1$d of %2$d network-wide transient options found"
|
689 |
msgstr[0] ""
|
690 |
msgstr[1] ""
|
691 |
|
692 |
+
#: src/optimizations/transient.php:407
|
693 |
msgid "No site-wide transient options found"
|
694 |
msgstr ""
|
695 |
|
696 |
+
#: src/optimizations/transient.php:416
|
697 |
msgid "Remove all transient options (not only expired)"
|
698 |
msgstr ""
|
699 |
|
700 |
+
#: src/optimizations/transient.php:465, src/optimizations/transient.php:469
|
701 |
msgid "Remove expired transient options"
|
702 |
msgstr ""
|
703 |
|
1723 |
msgid "bytes"
|
1724 |
msgstr ""
|
1725 |
|
1726 |
+
#: src/wp-optimize.php:1553
|
1727 |
msgid "You have no permissions to run optimizations."
|
1728 |
msgstr ""
|
1729 |
|
1730 |
+
#: src/wp-optimize.php:1560
|
1731 |
msgid "You have no permissions to manage WP-Optimize settings."
|
1732 |
msgstr ""
|
1733 |
|
1734 |
+
#: src/wp-optimize.php:1710
|
1735 |
msgid "Only Network Administrator can activate WP-Optimize plugin."
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: src/wp-optimize.php:1711
|
1739 |
msgid "go back"
|
1740 |
msgstr ""
|
optimizations/commentmeta.php
CHANGED
@@ -6,6 +6,8 @@ class WP_Optimization_commentmeta extends WP_Optimization {
|
|
6 |
|
7 |
public $ui_sort_order = 9000;
|
8 |
|
|
|
|
|
9 |
private $processed_trash_count;
|
10 |
|
11 |
private $processed_akismet_count;
|
6 |
|
7 |
public $ui_sort_order = 9000;
|
8 |
|
9 |
+
public $available_for_saving = true;
|
10 |
+
|
11 |
private $processed_trash_count;
|
12 |
|
13 |
private $processed_akismet_count;
|
optimizations/optimizetables.php
CHANGED
@@ -37,7 +37,7 @@ class WP_Optimization_optimizetables extends WP_Optimization {
|
|
37 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
38 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
39 |
|
40 |
-
$this->optimize_table($table, $force);
|
41 |
} else {
|
42 |
$tables = $this->optimizer->get_tables();
|
43 |
|
37 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
38 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
39 |
|
40 |
+
if (false !== $table) $this->optimize_table($table, $force);
|
41 |
} else {
|
42 |
$tables = $this->optimizer->get_tables();
|
43 |
|
optimizations/orphandata.php
CHANGED
@@ -6,6 +6,8 @@ class WP_Optimization_orphandata extends WP_Optimization {
|
|
6 |
|
7 |
public $ui_sort_order = 10000;
|
8 |
|
|
|
|
|
9 |
public $support_preview = false;
|
10 |
|
11 |
/**
|
6 |
|
7 |
public $ui_sort_order = 10000;
|
8 |
|
9 |
+
public $available_for_saving = true;
|
10 |
+
|
11 |
public $support_preview = false;
|
12 |
|
13 |
/**
|
optimizations/orphanedtables.php
CHANGED
@@ -29,7 +29,7 @@ class WP_Optimization_orphanedtables extends WP_Optimization {
|
|
29 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
30 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
31 |
|
32 |
-
$result = $this->delete_table($table);
|
33 |
|
34 |
$this->register_meta('success', $result);
|
35 |
} else {
|
29 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
30 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
31 |
|
32 |
+
$result = (false === $table) ? false : $this->delete_table($table);
|
33 |
|
34 |
$this->register_meta('success', $result);
|
35 |
} else {
|
optimizations/pingbacks.php
CHANGED
@@ -6,6 +6,8 @@ class WP_Optimization_pingbacks extends WP_Optimization {
|
|
6 |
|
7 |
public $ui_sort_order = 6000;
|
8 |
|
|
|
|
|
9 |
/**
|
10 |
* Prepare data for preview widget.
|
11 |
*
|
6 |
|
7 |
public $ui_sort_order = 6000;
|
8 |
|
9 |
+
public $available_for_saving = true;
|
10 |
+
|
11 |
/**
|
12 |
* Prepare data for preview widget.
|
13 |
*
|
optimizations/postmeta.php
CHANGED
@@ -8,6 +8,8 @@ class WP_Optimization_postmeta extends WP_Optimization {
|
|
8 |
|
9 |
public $available_for_auto = false;
|
10 |
|
|
|
|
|
11 |
public $auto_default = false;
|
12 |
|
13 |
/**
|
8 |
|
9 |
public $available_for_auto = false;
|
10 |
|
11 |
+
public $available_for_saving = true;
|
12 |
+
|
13 |
public $auto_default = false;
|
14 |
|
15 |
/**
|
optimizations/repairtables.php
CHANGED
@@ -31,7 +31,7 @@ class WP_Optimization_repairtables extends WP_Optimization {
|
|
31 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
32 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
33 |
|
34 |
-
$result = $this->repair_table($table);
|
35 |
|
36 |
if ($result) {
|
37 |
$wp_optimize = WP_Optimize();
|
31 |
if (isset($this->data['optimization_table']) && '' != $this->data['optimization_table']) {
|
32 |
$table = $this->optimizer->get_table($this->data['optimization_table']);
|
33 |
|
34 |
+
$result = (false === $table) ? false : $this->repair_table($table);
|
35 |
|
36 |
if ($result) {
|
37 |
$wp_optimize = WP_Optimize();
|
optimizations/trackbacks.php
CHANGED
@@ -6,6 +6,8 @@ class WP_Optimization_trackbacks extends WP_Optimization {
|
|
6 |
|
7 |
public $ui_sort_order = 7000;
|
8 |
|
|
|
|
|
9 |
/**
|
10 |
* Prepare data for preview widget.
|
11 |
*
|
6 |
|
7 |
public $ui_sort_order = 7000;
|
8 |
|
9 |
+
public $available_for_saving = true;
|
10 |
+
|
11 |
/**
|
12 |
* Prepare data for preview widget.
|
13 |
*
|
optimizations/transient.php
CHANGED
@@ -6,6 +6,8 @@ class WP_Optimization_transient extends WP_Optimization {
|
|
6 |
|
7 |
public $available_for_auto = true;
|
8 |
|
|
|
|
|
9 |
public $auto_default = false;
|
10 |
|
11 |
public $ui_sort_order = 5000;
|
6 |
|
7 |
public $available_for_auto = true;
|
8 |
|
9 |
+
public $available_for_saving = true;
|
10 |
+
|
11 |
public $auto_default = false;
|
12 |
|
13 |
public $ui_sort_order = 5000;
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://david.dw-perspective.org.uk/donate
|
|
4 |
Tags: comments, spam, optimize, database, revisions, users, posts, trash, schedule, automatic, clean, phpmyadmin, meta, postmeta, responsive, mobile
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 5.0
|
7 |
-
Stable tag: 2.2.
|
8 |
License: GPLv2+
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -143,6 +143,14 @@ Please check your database for corrupted tables. That can happen, usually your w
|
|
143 |
|
144 |
== Changelog ==
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
= 2.2.9 - 03/Jan/2019 =
|
147 |
|
148 |
* FIX: Change a newly-introduced fragment that was not compatible with PHP 5.2
|
@@ -151,6 +159,7 @@ Please check your database for corrupted tables. That can happen, usually your w
|
|
151 |
= 2.2.7 - 31/December/2018 =
|
152 |
|
153 |
* RE-FACTOR: Refactoring and reorganisation of the UI
|
|
|
154 |
* TWEAK: Fix sorting sizes columns in Tables information to take into account textual modifiers
|
155 |
* FIX: MetaSlider images detected as unused
|
156 |
* FIX: Preview for Trashed posts optimization doesn't work
|
@@ -452,4 +461,4 @@ Please check your database for corrupted tables. That can happen, usually your w
|
|
452 |
* Fix Interface
|
453 |
|
454 |
== Upgrade Notice ==
|
455 |
-
* 2.2.
|
4 |
Tags: comments, spam, optimize, database, revisions, users, posts, trash, schedule, automatic, clean, phpmyadmin, meta, postmeta, responsive, mobile
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 5.0
|
7 |
+
Stable tag: 2.2.10
|
8 |
License: GPLv2+
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
143 |
|
144 |
== Changelog ==
|
145 |
|
146 |
+
= 2.2.10 - 11/Jan/2019 =
|
147 |
+
|
148 |
+
* FEATURE: Added the ability to download unused images list (Premium version) as a CSV file
|
149 |
+
* FIX: Load scripts and styles only on WP-Optimize pages
|
150 |
+
* FIX: Fix a possible fatal error due to missing get_plugins() function
|
151 |
+
* TWEAK: Remember selected optimizations on Database page
|
152 |
+
* TWEAK: Prevent PHP notices when saving settings or optimizing in some circumstances
|
153 |
+
|
154 |
= 2.2.9 - 03/Jan/2019 =
|
155 |
|
156 |
* FIX: Change a newly-introduced fragment that was not compatible with PHP 5.2
|
159 |
= 2.2.7 - 31/December/2018 =
|
160 |
|
161 |
* RE-FACTOR: Refactoring and reorganisation of the UI
|
162 |
+
* TWEAK: Added feature to view unused images as list
|
163 |
* TWEAK: Fix sorting sizes columns in Tables information to take into account textual modifiers
|
164 |
* FIX: MetaSlider images detected as unused
|
165 |
* FIX: Preview for Trashed posts optimization doesn't work
|
461 |
* Fix Interface
|
462 |
|
463 |
== Upgrade Notice ==
|
464 |
+
* 2.2.10 : Fix a few annoyances/errors on some installs. A recommended update for all.
|
wp-optimize.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: WP-Optimize
|
4 |
Plugin URI: https://getwpo.com
|
5 |
Description: WP-Optimize is WordPress's #1 most installed optimization plugin. With it, you can clean up your database easily and safely, without manual queries.
|
6 |
-
Version: 2.2.
|
7 |
Author: David Anderson, Ruhani Rabin, Team Updraft
|
8 |
Author URI: https://updraftplus.com
|
9 |
Text Domain: wp-optimize
|
@@ -15,7 +15,7 @@ if (!defined('ABSPATH')) die('No direct access allowed');
|
|
15 |
|
16 |
// Check to make sure if WP_Optimize is already call and returns.
|
17 |
if (!class_exists('WP_Optimize')) :
|
18 |
-
define('WPO_VERSION', '2.2.
|
19 |
define('WPO_PLUGIN_URL', plugin_dir_url(__FILE__));
|
20 |
define('WPO_PLUGIN_MAIN_PATH', plugin_dir_path(__FILE__));
|
21 |
define('WPO_PREMIUM_NOTIFICATION', false);
|
@@ -1381,8 +1381,10 @@ class WP_Optimize {
|
|
1381 |
$loggers_classes_by_id[strtolower($logger_class)] = $logger_class;
|
1382 |
}
|
1383 |
|
1384 |
-
$
|
1385 |
-
|
|
|
|
|
1386 |
|
1387 |
// create loggers classes instances.
|
1388 |
if (!empty($saved_loggers)) {
|
3 |
Plugin Name: WP-Optimize
|
4 |
Plugin URI: https://getwpo.com
|
5 |
Description: WP-Optimize is WordPress's #1 most installed optimization plugin. With it, you can clean up your database easily and safely, without manual queries.
|
6 |
+
Version: 2.2.10
|
7 |
Author: David Anderson, Ruhani Rabin, Team Updraft
|
8 |
Author URI: https://updraftplus.com
|
9 |
Text Domain: wp-optimize
|
15 |
|
16 |
// Check to make sure if WP_Optimize is already call and returns.
|
17 |
if (!class_exists('WP_Optimize')) :
|
18 |
+
define('WPO_VERSION', '2.2.10');
|
19 |
define('WPO_PLUGIN_URL', plugin_dir_url(__FILE__));
|
20 |
define('WPO_PLUGIN_MAIN_PATH', plugin_dir_path(__FILE__));
|
21 |
define('WPO_PREMIUM_NOTIFICATION', false);
|
1381 |
$loggers_classes_by_id[strtolower($logger_class)] = $logger_class;
|
1382 |
}
|
1383 |
|
1384 |
+
$options = $this->get_options();
|
1385 |
+
|
1386 |
+
$saved_loggers = $options->get_option('logging');
|
1387 |
+
$logger_additional_options = $options->get_option('logging-additional');
|
1388 |
|
1389 |
// create loggers classes instances.
|
1390 |
if (!empty($saved_loggers)) {
|