Version Description
- Bulk optimization feature
Download this release
Release Info
Developer | keycdn |
Plugin | Optimus – WordPress Image Optimizer |
Version | 1.3.8 |
Comparing to | |
See all releases |
Code changes from version 1.3.7 to 1.3.8
- css/styles.css +42 -1
- inc/optimus.class.php +53 -11
- inc/optimus_hq.class.php +6 -6
- inc/optimus_management.class.php +115 -0
- inc/optimus_media.class.php +1 -22
- inc/optimus_request.class.php +63 -1
- inc/optimus_settings.class.php +17 -17
- js/scripts.js +87 -0
- lang/optimus-de_DE.mo +0 -0
- lang/optimus-de_DE.po +323 -0
- optimus.php +29 -3
- readme.txt +57 -43
css/styles.css
CHANGED
@@ -58,4 +58,45 @@
|
|
58 |
border-color: #7ad03a;
|
59 |
}
|
60 |
|
61 |
-
/* @end group */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
border-color: #7ad03a;
|
59 |
}
|
60 |
|
61 |
+
/* @end group */
|
62 |
+
|
63 |
+
/* @group Management */
|
64 |
+
|
65 |
+
#optimus-bulk-optimizer #media-items .bar.success {
|
66 |
+
background-color: #7ad03a;
|
67 |
+
}
|
68 |
+
|
69 |
+
#optimus-bulk-optimizer #media-items .bar.partial {
|
70 |
+
background-color: #3a91d0;
|
71 |
+
}
|
72 |
+
|
73 |
+
#optimus-bulk-optimizer #media-items .bar.info {
|
74 |
+
background-color: #999;
|
75 |
+
}
|
76 |
+
|
77 |
+
#optimus-bulk-optimizer #media-items .bar.err {
|
78 |
+
background-color: #d4352e;
|
79 |
+
}
|
80 |
+
|
81 |
+
#optimus-bulk-optimizer .media-item {
|
82 |
+
box-shadow: 0px 1px 0px #DFDFDF;
|
83 |
+
min-height: 36px;
|
84 |
+
margin-bottom: 1px;
|
85 |
+
position: relative;
|
86 |
+
width: 100%;
|
87 |
+
background: none repeat scroll 0% 0% #FFF;
|
88 |
+
}
|
89 |
+
|
90 |
+
#optimus-bulk-optimizer .progress~.percent {
|
91 |
+
float: right;
|
92 |
+
line-height: 36px;
|
93 |
+
margin-right: 20px;
|
94 |
+
}
|
95 |
+
|
96 |
+
#optimus-progress span, #optimus-status span {
|
97 |
+
background: #eaeaea;
|
98 |
+
background: rgba(0,0,0,.07);
|
99 |
+
padding: 5px;
|
100 |
+
}
|
101 |
+
|
102 |
+
/* @end group */
|
inc/optimus.class.php
CHANGED
@@ -67,10 +67,10 @@ class Optimus
|
|
67 |
|
68 |
/* Hooks */
|
69 |
add_action(
|
70 |
-
'
|
71 |
array(
|
72 |
-
|
73 |
-
'
|
74 |
)
|
75 |
);
|
76 |
add_filter(
|
@@ -89,7 +89,6 @@ class Optimus
|
|
89 |
10,
|
90 |
2
|
91 |
);
|
92 |
-
|
93 |
add_filter(
|
94 |
'plugin_row_meta',
|
95 |
array(
|
@@ -127,6 +126,7 @@ class Optimus
|
|
127 |
'register_settings'
|
128 |
)
|
129 |
);
|
|
|
130 |
add_action(
|
131 |
'admin_menu',
|
132 |
array(
|
@@ -134,6 +134,13 @@ class Optimus
|
|
134 |
'add_page'
|
135 |
)
|
136 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
/* Admin notices */
|
139 |
add_action(
|
@@ -150,9 +157,11 @@ class Optimus
|
|
150 |
'optimus_hq_notice'
|
151 |
)
|
152 |
);
|
|
|
153 |
}
|
154 |
|
155 |
|
|
|
156 |
/**
|
157 |
* Hinzufügen der Action-Links
|
158 |
*
|
@@ -181,7 +190,7 @@ class Optimus
|
|
181 |
),
|
182 |
admin_url('options-general.php')
|
183 |
),
|
184 |
-
__(
|
185 |
)
|
186 |
)
|
187 |
);
|
@@ -223,7 +232,7 @@ class Optimus
|
|
223 |
),
|
224 |
network_admin_url('plugins.php#_optimus_key')
|
225 |
),
|
226 |
-
( Optimus_HQ::get_key() ?
|
227 |
)
|
228 |
)
|
229 |
);
|
@@ -234,7 +243,7 @@ class Optimus
|
|
234 |
$rows,
|
235 |
array(
|
236 |
sprintf(
|
237 |
-
|
238 |
date( 'd.m.Y', Optimus_HQ::best_before() )
|
239 |
)
|
240 |
)
|
@@ -290,7 +299,7 @@ class Optimus
|
|
290 |
sprintf(
|
291 |
'<div class="error"><p>%s</p></div>',
|
292 |
sprintf(
|
293 |
-
|
294 |
OPTIMUS_MIN_WP
|
295 |
)
|
296 |
)
|
@@ -303,8 +312,8 @@ class Optimus
|
|
303 |
sprintf(
|
304 |
'<div class="error"><p>%s</p></div>',
|
305 |
sprintf(
|
306 |
-
|
307 |
-
'https://php.net/manual/
|
308 |
)
|
309 |
)
|
310 |
);
|
@@ -333,4 +342,37 @@ class Optimus
|
|
333 |
)
|
334 |
);
|
335 |
}
|
336 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
/* Hooks */
|
69 |
add_action(
|
70 |
+
'admin_enqueue_scripts',
|
71 |
array(
|
72 |
+
__CLASS__,
|
73 |
+
'add_js_css'
|
74 |
)
|
75 |
);
|
76 |
add_filter(
|
89 |
10,
|
90 |
2
|
91 |
);
|
|
|
92 |
add_filter(
|
93 |
'plugin_row_meta',
|
94 |
array(
|
126 |
'register_settings'
|
127 |
)
|
128 |
);
|
129 |
+
|
130 |
add_action(
|
131 |
'admin_menu',
|
132 |
array(
|
134 |
'add_page'
|
135 |
)
|
136 |
);
|
137 |
+
add_action(
|
138 |
+
'admin_menu',
|
139 |
+
array(
|
140 |
+
'Optimus_Management',
|
141 |
+
'add_bulk_optimizer_page'
|
142 |
+
)
|
143 |
+
);
|
144 |
|
145 |
/* Admin notices */
|
146 |
add_action(
|
157 |
'optimus_hq_notice'
|
158 |
)
|
159 |
);
|
160 |
+
|
161 |
}
|
162 |
|
163 |
|
164 |
+
|
165 |
/**
|
166 |
* Hinzufügen der Action-Links
|
167 |
*
|
190 |
),
|
191 |
admin_url('options-general.php')
|
192 |
),
|
193 |
+
__("Settings")
|
194 |
)
|
195 |
)
|
196 |
);
|
232 |
),
|
233 |
network_admin_url('plugins.php#_optimus_key')
|
234 |
),
|
235 |
+
( Optimus_HQ::get_key() ? __("Enter a different Optimus HQ license key", "optimus") : '<span style="color:#006505">'.__("Activate Optimus HQ", "optimus").'</span>' )
|
236 |
)
|
237 |
)
|
238 |
);
|
243 |
$rows,
|
244 |
array(
|
245 |
sprintf(
|
246 |
+
__("Optimus HQ expiry date: %s", "optimus"),
|
247 |
date( 'd.m.Y', Optimus_HQ::best_before() )
|
248 |
)
|
249 |
)
|
299 |
sprintf(
|
300 |
'<div class="error"><p>%s</p></div>',
|
301 |
sprintf(
|
302 |
+
__("Optimus is optimized for WordPress %s. Please disable the plugin or upgrade your WordPress installation (recommended).", "optimus"),
|
303 |
OPTIMUS_MIN_WP
|
304 |
)
|
305 |
)
|
312 |
sprintf(
|
313 |
'<div class="error"><p>%s</p></div>',
|
314 |
sprintf(
|
315 |
+
__("Optimus requires the <a href=\"%s\" target=\"_blank\">cURL-Library</a>. Please contact your hosting provider to get cURL installed.", "optimus"),
|
316 |
+
'https://php.net/manual/en/intro.curl.php'
|
317 |
)
|
318 |
)
|
319 |
);
|
342 |
)
|
343 |
);
|
344 |
}
|
345 |
+
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Hinzufügen von JavaScript und Styles
|
349 |
+
*
|
350 |
+
* @since 1.3.8
|
351 |
+
* @change 1.3.8
|
352 |
+
*/
|
353 |
+
public static function add_js_css()
|
354 |
+
{
|
355 |
+
wp_register_style(
|
356 |
+
'optimus-styles',
|
357 |
+
plugins_url(
|
358 |
+
'css/styles.css',
|
359 |
+
OPTIMUS_FILE
|
360 |
+
)
|
361 |
+
);
|
362 |
+
wp_enqueue_style('optimus-styles');
|
363 |
+
|
364 |
+
$handle = 'optimus-scripts';
|
365 |
+
|
366 |
+
wp_register_script( $handle, plugins_url('js/scripts.js', OPTIMUS_FILE), array('jquery'), TRUE );
|
367 |
+
wp_localize_script($handle, 'optimusOptimize', array(
|
368 |
+
'nonce' => wp_create_nonce('optimus-optimize'),
|
369 |
+
'bulkDone' => __("All images have been optimized.", "optimus"),
|
370 |
+
'bulkAction' => __("Optimize images", "optimus"),
|
371 |
+
'optimizing' => __("Optimizing", "optimus"),
|
372 |
+
'optimized' => __("optimized", "optimus"),
|
373 |
+
'internalError' => __("Internal error", "optimus"),
|
374 |
+
'waiting' => __("Waiting", "optimus"),
|
375 |
+
));
|
376 |
+
wp_enqueue_script($handle);
|
377 |
+
}
|
378 |
+
}
|
inc/optimus_hq.class.php
CHANGED
@@ -256,8 +256,8 @@ class Optimus_HQ
|
|
256 |
<input type="text" name="_optimus_key" id="_optimus_key" maxlength="17" pattern="[A-Z0-9]{17}" />
|
257 |
</label>
|
258 |
|
259 |
-
<input type="submit" name="submit" value="
|
260 |
-
<a href="<?php echo network_admin_url('plugins.php') ?>" class="button"
|
261 |
</form>
|
262 |
</div>
|
263 |
</td>
|
@@ -370,17 +370,17 @@ class Optimus_HQ
|
|
370 |
/* Matching */
|
371 |
switch( $type ) {
|
372 |
case 'unlocked':
|
373 |
-
$msg =
|
374 |
$class = 'updated';
|
375 |
break;
|
376 |
|
377 |
case 'locked':
|
378 |
-
$msg =
|
379 |
$class = 'error';
|
380 |
break;
|
381 |
|
382 |
case 'expired':
|
383 |
-
$msg =
|
384 |
$class = 'error';
|
385 |
break;
|
386 |
|
@@ -397,4 +397,4 @@ class Optimus_HQ
|
|
397 |
)
|
398 |
);
|
399 |
}
|
400 |
-
}
|
256 |
<input type="text" name="_optimus_key" id="_optimus_key" maxlength="17" pattern="[A-Z0-9]{17}" />
|
257 |
</label>
|
258 |
|
259 |
+
<input type="submit" name="submit" value="<?php _e("Activate", "optimus"); ?>" class="button button-primary regular" />
|
260 |
+
<a href="<?php echo network_admin_url('plugins.php') ?>" class="button"><?php _e("Cancel", "optimus"); ?></a>
|
261 |
</form>
|
262 |
</div>
|
263 |
</td>
|
370 |
/* Matching */
|
371 |
switch( $type ) {
|
372 |
case 'unlocked':
|
373 |
+
$msg = __("<p>Thank you for using <strong>Optimus HQ</strong>. Follow us on <a href=\"https://twitter.com/optimusHQ\" target=\"_blank\">Twitter</a> to get the latest news and updates.</p>", "optimus");
|
374 |
$class = 'updated';
|
375 |
break;
|
376 |
|
377 |
case 'locked':
|
378 |
+
$msg = __("<p><strong>Optimus</strong> is free of charge, the functionality is limited to the essential features.</p><p><strong>Optimus HQ</strong> (Premium) on the other hand can handle several image formats, compress larger files and connects through HTTPS. <span class=\"no-break\">More details on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /><br /><em>This information is displayed for 60 seconds and will not appear again.</em></p>", "optimus");
|
379 |
$class = 'error';
|
380 |
break;
|
381 |
|
382 |
case 'expired':
|
383 |
+
$msg = __("<p><strong>Optimus HQ license key</strong> has expired. Get a new Optimus HQ license key on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a>. Thank you!", "optimus");
|
384 |
$class = 'error';
|
385 |
break;
|
386 |
|
397 |
)
|
398 |
);
|
399 |
}
|
400 |
+
}
|
inc/optimus_management.class.php
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
/* Quit */
|
5 |
+
defined('ABSPATH') OR exit;
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Optimus_Management
|
10 |
+
*
|
11 |
+
* @since 1.3.8
|
12 |
+
*/
|
13 |
+
|
14 |
+
class Optimus_Management
|
15 |
+
{
|
16 |
+
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Bulk optimizer media
|
20 |
+
*
|
21 |
+
* @since 1.3.8
|
22 |
+
* @change 1.3.8
|
23 |
+
*/
|
24 |
+
|
25 |
+
public function bulk_optimizer_media() {
|
26 |
+
check_admin_referer('bulk-media');
|
27 |
+
|
28 |
+
if (empty($_GET['media']) || !is_array( $_GET['media'])) {
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
|
32 |
+
$ids = implode('-', array_map('intval', $_GET['media']));
|
33 |
+
wp_redirect(add_query_arg(
|
34 |
+
'_wpnonce',
|
35 |
+
wp_create_nonce('optimus-bulk-optimizer'),
|
36 |
+
admin_url("tools.php?page=optimus-bulk-optimizer&ids=$ids")
|
37 |
+
));
|
38 |
+
exit();
|
39 |
+
}
|
40 |
+
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Add bulk optimizer page
|
44 |
+
*
|
45 |
+
* @since 1.3.8
|
46 |
+
* @change 1.3.8
|
47 |
+
*/
|
48 |
+
|
49 |
+
public static function add_bulk_optimizer_page()
|
50 |
+
{
|
51 |
+
/* Management page */
|
52 |
+
add_management_page(
|
53 |
+
__("Optimus Bulk Optimizer", "optimus"),
|
54 |
+
__("Optimize all images", "optimus"),
|
55 |
+
'upload_files',
|
56 |
+
'optimus-bulk-optimizer',
|
57 |
+
array(
|
58 |
+
__CLASS__,
|
59 |
+
'bulk_optimizer_page'
|
60 |
+
)
|
61 |
+
);
|
62 |
+
}
|
63 |
+
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Bulk optimizer page
|
67 |
+
*
|
68 |
+
* @since 1.3.8
|
69 |
+
* @change 1.3.8
|
70 |
+
*
|
71 |
+
*/
|
72 |
+
|
73 |
+
public static function bulk_optimizer_page() {
|
74 |
+
global $wpdb;
|
75 |
+
|
76 |
+
if (!empty($_GET['ids'])) {
|
77 |
+
$ids = implode(',', array_map('intval', explode('-', $_GET['ids'])));
|
78 |
+
$condition = "AND ID IN($ids)";
|
79 |
+
} else {
|
80 |
+
$condition = "";
|
81 |
+
}
|
82 |
+
|
83 |
+
$query = "SELECT ID, post_title, post_mime_type FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' $condition ORDER BY ID DESC";
|
84 |
+
$assets = $wpdb->get_results($query, ARRAY_A);
|
85 |
+
$count = count($assets);
|
86 |
+
|
87 |
+
echo '<div class="wrap" id="optimus-bulk-optimizer">';
|
88 |
+
echo '<h2>' . __("Optimus Bulk Optimizer", "optimus") . '</h2>';
|
89 |
+
if (empty($_POST['optimus-bulk-optimizer']) && empty($_GET['ids'])) {
|
90 |
+
echo '<p>' . __("The Optimus bulk optimizer compresses all images that have not yet been compressed in your WordPress media library.", "optimus") . '</p>';
|
91 |
+
|
92 |
+
if ( Optimus_HQ::is_locked() ) {
|
93 |
+
echo '<p>' . __("It is recommended to run the bulk image optimization with an Optimus HQ activated version due to the size limitation of the free version.", "optimus") . '</p>';
|
94 |
+
}
|
95 |
+
|
96 |
+
echo '<p><em>' . sprintf(__("Optimus found <strong>%d images</strong> in your WordPress media library.", "optimus"), $count) . '</em></p>';
|
97 |
+
echo '<form method="POST" action="?page=optimus-bulk-optimizer">';
|
98 |
+
echo '<input type="hidden" name="_wpnonce" value="' . wp_create_nonce('optimus-bulk-optimizer') . '">';
|
99 |
+
echo '<input type="hidden" name="optimus-bulk-optimizer" value="1">';
|
100 |
+
echo '<p><input type="submit" name="submit" id="submit" class="button button-primary" value="'.__("Optimize all images", "optimus").'"></p>';
|
101 |
+
echo '</form>';
|
102 |
+
} else {
|
103 |
+
check_admin_referer('optimus-bulk-optimizer');
|
104 |
+
echo '<p>' . __("It might take a while until all images are optimized. This depends on the amount and size of the images.", "optimus") . '</p>';
|
105 |
+
echo '<p><em>' . __("Note: Do not close this tab during the optimization process.", "optimus") . '</em></p>';
|
106 |
+
|
107 |
+
echo '<div id="optimus-progress"><p>' . __("Completed", "optimus") . ' <span>0</span> / ' . sprintf(' %d </p></div>', $count);
|
108 |
+
echo '<div id="media-items"></div>';
|
109 |
+
|
110 |
+
echo '<script type="text/javascript">jQuery(function() { optimusBulkOptimizer('. json_encode($assets) . ')})</script>';
|
111 |
+
}
|
112 |
+
|
113 |
+
echo '</div>';
|
114 |
+
}
|
115 |
+
}
|
inc/optimus_media.class.php
CHANGED
@@ -15,27 +15,6 @@ class Optimus_Media
|
|
15 |
{
|
16 |
|
17 |
|
18 |
-
/**
|
19 |
-
* Add media column css
|
20 |
-
*
|
21 |
-
* @since 0.0.2
|
22 |
-
* @change 1.3.0
|
23 |
-
*/
|
24 |
-
|
25 |
-
public static function add_css()
|
26 |
-
{
|
27 |
-
wp_register_style(
|
28 |
-
'optimus-media',
|
29 |
-
plugins_url(
|
30 |
-
'css/styles.min.css',
|
31 |
-
OPTIMUS_FILE
|
32 |
-
)
|
33 |
-
);
|
34 |
-
|
35 |
-
wp_enqueue_style('optimus-media');
|
36 |
-
}
|
37 |
-
|
38 |
-
|
39 |
/**
|
40 |
* Media column output
|
41 |
*
|
@@ -148,4 +127,4 @@ class Optimus_Media
|
|
148 |
return 'three';
|
149 |
}
|
150 |
}
|
151 |
-
}
|
15 |
{
|
16 |
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
* Media column output
|
20 |
*
|
127 |
return 'three';
|
128 |
}
|
129 |
}
|
130 |
+
}
|
inc/optimus_request.class.php
CHANGED
@@ -9,6 +9,7 @@ defined('ABSPATH') OR exit;
|
|
9 |
* Optimus_Request
|
10 |
*
|
11 |
* @since 1.1.7
|
|
|
12 |
*/
|
13 |
|
14 |
class Optimus_Request
|
@@ -16,7 +17,7 @@ class Optimus_Request
|
|
16 |
|
17 |
|
18 |
/**
|
19 |
-
*
|
20 |
*
|
21 |
* @var string
|
22 |
*/
|
@@ -24,6 +25,67 @@ class Optimus_Request
|
|
24 |
private static $_remote_scheme = 'http';
|
25 |
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
/**
|
28 |
* Build optimization for a upload image including previews
|
29 |
*
|
9 |
* Optimus_Request
|
10 |
*
|
11 |
* @since 1.1.7
|
12 |
+
* @change 1.3.8
|
13 |
*/
|
14 |
|
15 |
class Optimus_Request
|
17 |
|
18 |
|
19 |
/**
|
20 |
+
* Optimize image
|
21 |
*
|
22 |
* @var string
|
23 |
*/
|
25 |
private static $_remote_scheme = 'http';
|
26 |
|
27 |
|
28 |
+
/**
|
29 |
+
* Image optimization post process (ajax)
|
30 |
+
*
|
31 |
+
* @since 1.3.8
|
32 |
+
* @change 1.3.8
|
33 |
+
*
|
34 |
+
* @return json $metadata Update metadata information
|
35 |
+
*/
|
36 |
+
|
37 |
+
public static function optimize_image() {
|
38 |
+
if (!check_ajax_referer('optimus-optimize', '_nonce', false)) {
|
39 |
+
exit();
|
40 |
+
}
|
41 |
+
|
42 |
+
/* check if valid request */
|
43 |
+
if (empty($_POST['id'])) {
|
44 |
+
$message = __("Invalid request", "optimus");
|
45 |
+
echo json_encode(array('error' => $message));
|
46 |
+
exit();
|
47 |
+
}
|
48 |
+
$id = intval($_POST['id']);
|
49 |
+
|
50 |
+
/* check user permission */
|
51 |
+
if (!current_user_can('upload_files')) {
|
52 |
+
$message = __("Permission missing (upload_files)", "optimus");
|
53 |
+
echo json_encode(array('error' => $message));
|
54 |
+
exit();
|
55 |
+
}
|
56 |
+
|
57 |
+
/* get metadata */
|
58 |
+
$metadata = wp_get_attachment_metadata($id);
|
59 |
+
if (!is_array($metadata)) {
|
60 |
+
$message = __("Metadata missing", "optimus");
|
61 |
+
echo json_encode(array('error' => $message));
|
62 |
+
exit;
|
63 |
+
}
|
64 |
+
|
65 |
+
/* check if already optimized */
|
66 |
+
if (isset($metadata['optimus'])) {
|
67 |
+
$message = __("Already optimized", "optimus");
|
68 |
+
echo json_encode(array('info' => $message));
|
69 |
+
exit;
|
70 |
+
}
|
71 |
+
|
72 |
+
/* optimize image */
|
73 |
+
$optimus_metadata = self::optimize_upload_images($metadata, $id);
|
74 |
+
|
75 |
+
if (!isset($optimus_metadata['optimus'])) {
|
76 |
+
$message = __("Optimus HQ required", "optimus");
|
77 |
+
echo json_encode(array('error' => $message));
|
78 |
+
exit;
|
79 |
+
}
|
80 |
+
|
81 |
+
/* update metadata */
|
82 |
+
update_post_meta($id, '_wp_attachment_metadata', $optimus_metadata);
|
83 |
+
|
84 |
+
echo json_encode($optimus_metadata);
|
85 |
+
exit;
|
86 |
+
}
|
87 |
+
|
88 |
+
|
89 |
/**
|
90 |
* Build optimization for a upload image including previews
|
91 |
*
|
inc/optimus_settings.class.php
CHANGED
@@ -91,7 +91,7 @@ class Optimus_Settings
|
|
91 |
{ ?>
|
92 |
<div class="wrap">
|
93 |
<h2>
|
94 |
-
Optimus
|
95 |
</h2>
|
96 |
|
97 |
<form method="post" action="options.php">
|
@@ -103,7 +103,7 @@ class Optimus_Settings
|
|
103 |
<?php if ( $sizes = get_intermediate_image_sizes() ) { ?>
|
104 |
<tr valign="top">
|
105 |
<th scope="row">
|
106 |
-
|
107 |
</th>
|
108 |
<td>
|
109 |
<p>
|
@@ -111,11 +111,11 @@ class Optimus_Settings
|
|
111 |
</p>
|
112 |
|
113 |
<p class="description">
|
114 |
-
|
115 |
</p>
|
116 |
<br>
|
117 |
<p class="description">
|
118 |
-
|
119 |
</p>
|
120 |
</td>
|
121 |
</tr>
|
@@ -123,17 +123,17 @@ class Optimus_Settings
|
|
123 |
|
124 |
<tr valign="top">
|
125 |
<th scope="row">
|
126 |
-
|
127 |
</th>
|
128 |
<td>
|
129 |
<fieldset>
|
130 |
<label for="optimus_keep_original">
|
131 |
<input type="checkbox" name="optimus[keep_original]" id="optimus_keep_original" value="1" <?php checked(1, $options['keep_original']) ?> />
|
132 |
-
|
133 |
</label>
|
134 |
|
135 |
<p class="description">
|
136 |
-
Optimus
|
137 |
</p>
|
138 |
</fieldset>
|
139 |
</td>
|
@@ -141,17 +141,17 @@ class Optimus_Settings
|
|
141 |
|
142 |
<tr valign="top">
|
143 |
<th scope="row">
|
144 |
-
|
145 |
</th>
|
146 |
<td>
|
147 |
<fieldset>
|
148 |
<label for="optimus_copy_markers">
|
149 |
<input type="checkbox" name="optimus[copy_markers]" id="optimus_copy_markers" value="1" <?php checked(1, $options['copy_markers']) ?> />
|
150 |
-
|
151 |
</label>
|
152 |
|
153 |
<p class="description">
|
154 |
-
|
155 |
</p>
|
156 |
</fieldset>
|
157 |
</td>
|
@@ -159,17 +159,17 @@ class Optimus_Settings
|
|
159 |
|
160 |
<tr valign="top">
|
161 |
<th scope="row">
|
162 |
-
WebP
|
163 |
</th>
|
164 |
<td>
|
165 |
<fieldset>
|
166 |
<label for="optimus_webp_convert">
|
167 |
-
<input type="checkbox" name="optimus[webp_convert]" id="optimus_webp_convert" value="1" <?php checked(1, $options['webp_convert']) ?> onclick='if ( this.checked ) return confirm("
|
168 |
-
|
169 |
</label>
|
170 |
|
171 |
<p class="description">
|
172 |
-
|
173 |
</p>
|
174 |
</fieldset>
|
175 |
</td>
|
@@ -177,17 +177,17 @@ class Optimus_Settings
|
|
177 |
|
178 |
<tr valign="top">
|
179 |
<th scope="row">
|
180 |
-
HTTPS
|
181 |
</th>
|
182 |
<td>
|
183 |
<fieldset>
|
184 |
<label for="optimus_secure_transport">
|
185 |
<input type="checkbox" name="optimus[secure_transport]" id="optimus_secure_transport" value="1" <?php checked(1, $options['secure_transport']) ?> />
|
186 |
-
|
187 |
</label>
|
188 |
|
189 |
<p class="description">
|
190 |
-
|
191 |
</p>
|
192 |
</fieldset>
|
193 |
</td>
|
91 |
{ ?>
|
92 |
<div class="wrap">
|
93 |
<h2>
|
94 |
+
<?php _e("Optimus Settings", "optimus"); ?>
|
95 |
</h2>
|
96 |
|
97 |
<form method="post" action="options.php">
|
103 |
<?php if ( $sizes = get_intermediate_image_sizes() ) { ?>
|
104 |
<tr valign="top">
|
105 |
<th scope="row">
|
106 |
+
<?php _e("Image sizes", "optimus"); ?>
|
107 |
</th>
|
108 |
<td>
|
109 |
<p>
|
111 |
</p>
|
112 |
|
113 |
<p class="description">
|
114 |
+
<?php _e("In addition to the original image, Optimus compresses the registered image sizes in WordPress. [<a href=\"https://optimus.io/support/compression-of-thumbnail-images-in-wordpress/\" target=\"_blank\">Details</a>]", "optimus"); ?>
|
115 |
</p>
|
116 |
<br>
|
117 |
<p class="description">
|
118 |
+
<?php if ( Optimus_HQ::is_locked() ) { _e("The size limit of the free version of Optimus is <strong>100 KB</strong>. Do you want to compress larger images? Get a license for <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>.", "optimus"); } ?>
|
119 |
</p>
|
120 |
</td>
|
121 |
</tr>
|
123 |
|
124 |
<tr valign="top">
|
125 |
<th scope="row">
|
126 |
+
<?php _e("Original images", "optimus"); ?>
|
127 |
</th>
|
128 |
<td>
|
129 |
<fieldset>
|
130 |
<label for="optimus_keep_original">
|
131 |
<input type="checkbox" name="optimus[keep_original]" id="optimus_keep_original" value="1" <?php checked(1, $options['keep_original']) ?> />
|
132 |
+
<?php _e("No optimization of original images", "optimus"); ?>
|
133 |
</label>
|
134 |
|
135 |
<p class="description">
|
136 |
+
<?php _e("Optimus only compresses preview images (Thumbnails). Original images uploaded to WordPress are not affected. [<a href=\"https://optimus.io/support/optimization-of-original-images/\" target=\"_blank\">Details</a>]", "optimus"); ?>
|
137 |
</p>
|
138 |
</fieldset>
|
139 |
</td>
|
141 |
|
142 |
<tr valign="top">
|
143 |
<th scope="row">
|
144 |
+
<?php _e("Image metadata", "optimus"); ?>
|
145 |
</th>
|
146 |
<td>
|
147 |
<fieldset>
|
148 |
<label for="optimus_copy_markers">
|
149 |
<input type="checkbox" name="optimus[copy_markers]" id="optimus_copy_markers" value="1" <?php checked(1, $options['copy_markers']) ?> />
|
150 |
+
<?php _e("No deletion of image metadata", "optimus"); ?>
|
151 |
</label>
|
152 |
|
153 |
<p class="description">
|
154 |
+
<?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Active option keeps EXIF-, copyright and photo creation information in images. Size reduction is less significant. [<a href=\"https://optimus.io/support/remove-metadata-from-images/\" target=\"_blank\">Details</a>]", "optimus"); ?>
|
155 |
</p>
|
156 |
</fieldset>
|
157 |
</td>
|
159 |
|
160 |
<tr valign="top">
|
161 |
<th scope="row">
|
162 |
+
<?php _e("WebP files", "optimus"); ?>
|
163 |
</th>
|
164 |
<td>
|
165 |
<fieldset>
|
166 |
<label for="optimus_webp_convert">
|
167 |
+
<input type="checkbox" name="optimus[webp_convert]" id="optimus_webp_convert" value="1" <?php checked(1, $options['webp_convert']) ?> onclick='if ( this.checked ) return confirm("<?php _e("Only for experienced users. Modification of your web server configuration required.\\n\\nActivate option?", "optimus"); ?>")' />
|
168 |
+
<?php _e("Creation of WebP files", "optimus"); ?>
|
169 |
</label>
|
170 |
|
171 |
<p class="description">
|
172 |
+
<?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Modification of the server configuration file and verification of output required. Slows down the optimization process. [<a href=\"https://optimus.io/support/convert-jpeg-and-png-to-webp-image-format/\" target=\"_blank\">Details</a>]", "optimus"); ?>
|
173 |
</p>
|
174 |
</fieldset>
|
175 |
</td>
|
177 |
|
178 |
<tr valign="top">
|
179 |
<th scope="row">
|
180 |
+
<?php _e("HTTPS connection", "optimus"); ?>
|
181 |
</th>
|
182 |
<td>
|
183 |
<fieldset>
|
184 |
<label for="optimus_secure_transport">
|
185 |
<input type="checkbox" name="optimus[secure_transport]" id="optimus_secure_transport" value="1" <?php checked(1, $options['secure_transport']) ?> />
|
186 |
+
<?php _e("Transfer images using TLS encryption", "optimus"); ?>
|
187 |
</label>
|
188 |
|
189 |
<p class="description">
|
190 |
+
<?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Communication with the Optimus server is conducted through an HTTPS connection. Slightly slows down the optimization process.", "optimus"); ?>
|
191 |
</p>
|
192 |
</fieldset>
|
193 |
</td>
|
js/scripts.js
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function() {
|
2 |
+
|
3 |
+
function bulk_optimize_callback(error, data, assets, i) {
|
4 |
+
var row = jQuery(jQuery('#media-items').children("div")[i])
|
5 |
+
var status
|
6 |
+
|
7 |
+
status = row.find('.bar')
|
8 |
+
|
9 |
+
if (error) {
|
10 |
+
status.addClass('err')
|
11 |
+
row.find('.bar').css('width', '100%')
|
12 |
+
row.find('.percent').html(optimusOptimize.internalError)
|
13 |
+
row.find('.progress').attr("title", error.toString())
|
14 |
+
} else if (data.error) {
|
15 |
+
status.addClass('err')
|
16 |
+
row.find('.bar').css('width', '100%')
|
17 |
+
row.find('.percent').html(data.error)
|
18 |
+
row.find('.progress').attr("title", data.error)
|
19 |
+
} else if (data.info) {
|
20 |
+
status.addClass('info')
|
21 |
+
row.find('.bar').css('width', '100%')
|
22 |
+
row.find('.percent').html(data.info)
|
23 |
+
row.find('.progress').attr("title", data.info)
|
24 |
+
} else if (data.optimus.quantity < 100) {
|
25 |
+
status.addClass('partial')
|
26 |
+
row.find('.bar').css('width', data.optimus.quantity + '%')
|
27 |
+
row.find('.percent').html(data.optimus.quantity + "% " + optimusOptimize.optimized)
|
28 |
+
row.find('.progress').attr("title", data.message)
|
29 |
+
} else {
|
30 |
+
status.addClass('success')
|
31 |
+
row.find('.bar').css('width', '100%')
|
32 |
+
row.find('.percent').html(data.optimus.quantity + "% " + optimusOptimize.optimized)
|
33 |
+
}
|
34 |
+
|
35 |
+
if (assets[++i]) {
|
36 |
+
bulk_optimize_asset(assets, i)
|
37 |
+
} else {
|
38 |
+
var message = jQuery('<div class="updated"><p></p></div>');
|
39 |
+
message.find('p').html(optimusOptimize.bulkDone)
|
40 |
+
message.insertAfter(jQuery("#optimus-bulk-optimizer h2"))
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
function bulk_optimize_asset(assets, i) {
|
45 |
+
var asset = assets[i]
|
46 |
+
var row = jQuery(jQuery('#media-items').children("div")[i])
|
47 |
+
row.find('.percent').html(optimusOptimize.optimizing)
|
48 |
+
jQuery.ajax({
|
49 |
+
url: ajaxurl,
|
50 |
+
type: "POST",
|
51 |
+
dataType: "json",
|
52 |
+
data: {
|
53 |
+
_nonce: optimusOptimize.nonce,
|
54 |
+
action: 'optimus_optimize_image',
|
55 |
+
id: assets[i].ID
|
56 |
+
},
|
57 |
+
success: function(data) {
|
58 |
+
bulk_optimize_callback(null, data, assets, i)
|
59 |
+
},
|
60 |
+
error: function(xhr, textStatus, errorThrown) {
|
61 |
+
bulk_optimize_callback(errorThrown, {}, assets, i)
|
62 |
+
}
|
63 |
+
})
|
64 |
+
jQuery('#optimus-progress span').html(i + 1)
|
65 |
+
}
|
66 |
+
|
67 |
+
function bulk_optimize(assets) {
|
68 |
+
var list = jQuery('#media-items')
|
69 |
+
var row
|
70 |
+
for (var i = 0; i < assets.length; i++) {
|
71 |
+
row = jQuery('<div class="media-item"><div class="progress"><div class="percent"></div><div class="bar"></div></div><div class="filename"></div></div>')
|
72 |
+
|
73 |
+
row.find('.percent').html(optimusOptimize.waiting)
|
74 |
+
row.find('.filename').html(assets[i].post_title + ' <small>' + assets[i].post_mime_type + '</small>')
|
75 |
+
list.append(row)
|
76 |
+
}
|
77 |
+
bulk_optimize_asset(assets, 0)
|
78 |
+
}
|
79 |
+
window.optimusBulkOptimizer = bulk_optimize
|
80 |
+
}).call()
|
81 |
+
|
82 |
+
jQuery(document).ready(function() {
|
83 |
+
if (adminpage === "upload-php") {
|
84 |
+
jQuery('<option>').val('optimus_bulk_optimizer').text(optimusOptimize.bulkAction).appendTo('select[name="action"]')
|
85 |
+
jQuery('<option>').val('optimus_bulk_optimizer').text(optimusOptimize.bulkAction).appendTo('select[name="action2"]')
|
86 |
+
}
|
87 |
+
});
|
lang/optimus-de_DE.mo
ADDED
Binary file
|
lang/optimus-de_DE.po
ADDED
@@ -0,0 +1,323 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Optimus\n"
|
4 |
+
"Report-Msgid-Bugs-To: KeyCDN\n"
|
5 |
+
"POT-Creation-Date: 2015-06-16 19:46+0100\n"
|
6 |
+
"PO-Revision-Date: 2015-06-29 14:23+0100\n"
|
7 |
+
"Last-Translator: KeyCDN <optimus@keycdn.com>\n"
|
8 |
+
"Language-Team: KeyCDN\n"
|
9 |
+
"Language: de_DE\n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Poedit-KeywordsList: __;gettext;gettext_noop;_e\n"
|
14 |
+
"X-Generator: Poedit 1.6.4\n"
|
15 |
+
|
16 |
+
#: description
|
17 |
+
msgid ""
|
18 |
+
"Lossless compression and optimization of uploaded images in WordPress. "
|
19 |
+
"Automatic, reliable, effective."
|
20 |
+
msgstr ""
|
21 |
+
"Verlustfreie Komprimierung der Upload-Bilder in WordPress. Automatisch, "
|
22 |
+
"zuverlässig, wirkungsvoll."
|
23 |
+
|
24 |
+
#: branches/1.3.0/inc/optimus.class.php:183 inc/optimus.class.php:186
|
25 |
+
#: tags/1.3.1/inc/optimus.class.php:198 tags/1.3.3/inc/optimus.class.php:184
|
26 |
+
#: tags/1.3.5/inc/optimus.class.php:184 tags/1.3.6/inc/optimus.class.php:184
|
27 |
+
#: tags/1.3.7/inc/optimus.class.php:184 trunk/inc/optimus.class.php:184
|
28 |
+
msgid "Settings"
|
29 |
+
msgstr "Einstellungen"
|
30 |
+
|
31 |
+
#: branches/1.3.0/inc/optimus_settings.class.php:156
|
32 |
+
msgid "Save Changes"
|
33 |
+
msgstr "Änderungen speichern"
|
34 |
+
|
35 |
+
#: inc/optimus.class.php:228
|
36 |
+
msgid "Enter a different Optimus HQ license key"
|
37 |
+
msgstr "Anderen Optimus HQ Key eingeben"
|
38 |
+
|
39 |
+
#: inc/optimus.class.php:228
|
40 |
+
msgid "Activate Optimus HQ"
|
41 |
+
msgstr "Optimus HQ aktivieren"
|
42 |
+
|
43 |
+
#: inc/optimus.class.php:239
|
44 |
+
msgid "Optimus HQ expiry date: %s"
|
45 |
+
msgstr "Optimus HQ Ablaufdatum: %s"
|
46 |
+
|
47 |
+
#: inc/optimus.class.php:295
|
48 |
+
msgid ""
|
49 |
+
"Optimus is optimized for WordPress %s. Please disable the plugin or upgrade "
|
50 |
+
"your WordPress installation (recommended)."
|
51 |
+
msgstr ""
|
52 |
+
"Optimus ist für WordPress %s optimiert. Bitte das Plugin deaktivieren oder "
|
53 |
+
"WordPress aktualisieren (empfohlen)."
|
54 |
+
|
55 |
+
#: inc/optimus.class.php:308
|
56 |
+
msgid ""
|
57 |
+
"Optimus requires the <a href=\"%s\" target=\"_blank\">cURL-Library</a>. "
|
58 |
+
"Please contact your hosting provider to get cURL installed."
|
59 |
+
msgstr ""
|
60 |
+
"Optimus setzt <a href=\"%s\" target=\"_blank\">cURL-Bibliothek</a> voraus "
|
61 |
+
"(sollte auf keinem Server fehlen). Bitte beim Hoster anfragen."
|
62 |
+
|
63 |
+
#: inc/optimus_settings.class.php:94
|
64 |
+
msgid "Optimus Settings"
|
65 |
+
msgstr "Optimus Einstellungen"
|
66 |
+
|
67 |
+
#: inc/optimus_settings.class.php:xx
|
68 |
+
msgid "Image size"
|
69 |
+
msgstr "Bildgrößen"
|
70 |
+
|
71 |
+
#: inc/optimus_settings.class.php:xx
|
72 |
+
msgid "Image sizes"
|
73 |
+
msgstr "Bildgrößen"
|
74 |
+
|
75 |
+
#: inc/optimus_settings.class.php:xx
|
76 |
+
msgid ""
|
77 |
+
"In addition to the original image, Optimus compresses the registered image "
|
78 |
+
"sizes in WordPress. [<a href=\"https://optimus.io/support/compression-of-"
|
79 |
+
"thumbnail-images-in-wordpress/\" target=\"_blank\">Details</a>]"
|
80 |
+
msgstr ""
|
81 |
+
"Zusätzlich zum Originalbild verkleinert Optimus die in WordPress "
|
82 |
+
"registrierten Bildgrößen. [<a href=\"https://plus.google.com/"
|
83 |
+
"b/114450218898660299759/114450218898660299759/posts/jZVfeac5eHW\" target="
|
84 |
+
"\"_blank\">Details</a>]"
|
85 |
+
|
86 |
+
#: inc/optimus_settings.class.php:xx
|
87 |
+
msgid ""
|
88 |
+
"The size limit of the free version of Optimus is <strong>100 KB</strong>. Do "
|
89 |
+
"you want to compress larger images? Get a license for <a href=\"https://"
|
90 |
+
"optimus.io\" target=\"_blank\">Optimus HQ</a>."
|
91 |
+
msgstr ""
|
92 |
+
"Größenlimitierung der kostenlosen Version von Optimus ist <strong>100 KB</"
|
93 |
+
"strong>. Sollen größere Bilder auch optimiert werden? <a href=\"https://"
|
94 |
+
"optimus.io\" target=\"_blank\">Optimus HQ</a> ist die Lösung."
|
95 |
+
|
96 |
+
#: inc/optimus_settings.class.php:xx
|
97 |
+
msgid "Original images"
|
98 |
+
msgstr "Originalbilder"
|
99 |
+
|
100 |
+
#: inc/optimus_settings.class.php:xx
|
101 |
+
msgid "No optimization of original images"
|
102 |
+
msgstr "Keine Optimierung der Originalbilder"
|
103 |
+
|
104 |
+
#: inc/optimus_settings.class.php:xx
|
105 |
+
msgid ""
|
106 |
+
"Optimus only compresses preview images (Thumbnails). Original images "
|
107 |
+
"uploaded to WordPress are not affected. [<a href=\"https://optimus.io/"
|
108 |
+
"support/optimization-of-original-images/\" target=\"_blank\">Details</a>]"
|
109 |
+
msgstr ""
|
110 |
+
"Optimus komprimiert ausschließlich Vorschaubilder (Thumbnails). In WordPress "
|
111 |
+
"hochgeladene Originalbilder bleiben unangetastet. [<a href=\"https://plus."
|
112 |
+
"google.com/114450218898660299759/posts/eNQFbeh9wqk\" target=\"_blank"
|
113 |
+
"\">Details</a>]"
|
114 |
+
|
115 |
+
#: inc/optimus_settings.class.php:xx
|
116 |
+
msgid "Image metadata"
|
117 |
+
msgstr "Bild-Metadaten"
|
118 |
+
|
119 |
+
#: inc/optimus_settings.class.php:xx
|
120 |
+
msgid "No deletion of image metadata"
|
121 |
+
msgstr "Keine Löschung der Bild-Metadaten"
|
122 |
+
|
123 |
+
#: inc/optimus_settings.class.php:xx
|
124 |
+
msgid ""
|
125 |
+
"Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Active "
|
126 |
+
"option keeps EXIF-, copyright and photo creation information in images. Size "
|
127 |
+
"reduction is less significant. [<a href=\"https://optimus.io/support/remove-"
|
128 |
+
"metadata-from-images/\" target=\"_blank\">Details</a>]"
|
129 |
+
msgstr ""
|
130 |
+
"Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Aktive "
|
131 |
+
"Option behält EXIF-, Copyright- und Fotoaufnahme-Informationen in Bildern. "
|
132 |
+
"Die Größenreduzierung fällt geringer aus. [<a href=\"https://plus.google.com/"
|
133 |
+
"b/114450218898660299759/114450218898660299759/posts/Wwz7uFHBzFF\" target="
|
134 |
+
"\"_blank\">Details</a>]"
|
135 |
+
|
136 |
+
#: inc/optimus_settings.class.php:xx
|
137 |
+
msgid "WebP files"
|
138 |
+
msgstr "WebP-Dateien"
|
139 |
+
|
140 |
+
#: inc/optimus_settings.class.php:xx
|
141 |
+
msgid ""
|
142 |
+
"Only for experienced users. Modification of your web server configuration "
|
143 |
+
"required.\\n\\nActivate option?"
|
144 |
+
msgstr ""
|
145 |
+
"Nur für erfahrene Nutzer, da Anpassung der Server-Konfigurationsdatei und "
|
146 |
+
"Qualitätskontrolle notwendig.\\n\\nOption aktivieren?"
|
147 |
+
|
148 |
+
#: inc/optimus_settings.class.php:xx
|
149 |
+
msgid "Creation of WebP files"
|
150 |
+
msgstr "Anfertigung der WebP-Dateien"
|
151 |
+
|
152 |
+
#: inc/optimus_settings.class.php:xx
|
153 |
+
msgid ""
|
154 |
+
"Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
|
155 |
+
"Modification of the server configuration file and verification of output "
|
156 |
+
"required. Slows down the optimization process. [<a href=\"https://optimus.io/"
|
157 |
+
"support/convert-jpeg-and-png-to-webp-image-format/\" target=\"_blank"
|
158 |
+
"\">Details</a>]"
|
159 |
+
msgstr ""
|
160 |
+
"Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
|
161 |
+
"Modifizierung der Server-Konfigurationsdatei und Überprüfung der Ausgabe "
|
162 |
+
"erforderlich. Verlangsamt den Optimierungsprozess. [<a href=\"https://plus."
|
163 |
+
"google.com/114450218898660299759/posts/3emb7o4368X\" target=\"_blank"
|
164 |
+
"\">Details</a>]"
|
165 |
+
|
166 |
+
#: inc/optimus_settings.class.php:xx
|
167 |
+
msgid "HTTPS connection"
|
168 |
+
msgstr "HTTPS-Verbindung"
|
169 |
+
|
170 |
+
#: inc/optimus_settings.class.php:xx
|
171 |
+
msgid "Transfer images using TLS encryption"
|
172 |
+
msgstr "Bilder TLS-verschlüsselt übertragen"
|
173 |
+
|
174 |
+
#: inc/optimus_settings.class.php:xx
|
175 |
+
msgid ""
|
176 |
+
"Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
|
177 |
+
"Communication with the Optimus server is conducted through an HTTPS "
|
178 |
+
"connection. Slightly slows down the optimization process."
|
179 |
+
msgstr ""
|
180 |
+
"Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Die "
|
181 |
+
"Kommunikation zum Optimus-Server erfolgt über eine HTTPS-Verbindung. "
|
182 |
+
"Verlangsamt den Optimierungsprozess. [<a href=\"https://plus.google.com/"
|
183 |
+
"b/114450218898660299759/114450218898660299759/posts/5f2f9XKXb4F\" target="
|
184 |
+
"\"_blank\">Details</a>]"
|
185 |
+
|
186 |
+
#: inc/optimus_hq.class.php:xx
|
187 |
+
msgid "Activate"
|
188 |
+
msgstr "Aktivieren"
|
189 |
+
|
190 |
+
#: inc/optimus_hq.class.php:xx
|
191 |
+
msgid "Cancel"
|
192 |
+
msgstr "Abbrechen"
|
193 |
+
|
194 |
+
#: inc/optimus_hq.class.php:xx
|
195 |
+
msgid ""
|
196 |
+
"<p>Thank you for using <strong>Optimus HQ</strong>. Follow us on <a href="
|
197 |
+
"\"https://twitter.com/optimusHQ\" target=\"_blank\">Twitter</a> to get the "
|
198 |
+
"latest news and updates.</p>"
|
199 |
+
msgstr ""
|
200 |
+
"<p>Vielen Dank für die Nutzung von <strong>Optimus HQ</strong>. "
|
201 |
+
"Wissenswertes und Aktualisierungen rund um das Plugin auf <a href=\"https://"
|
202 |
+
"plus.google.com/b/114450218898660299759/114450218898660299759/posts\" target="
|
203 |
+
"\"_blank\">Google+</a> und <a href=\"https://twitter.com/optimusHQ\" target="
|
204 |
+
"\"_blank\">Twitter</a>.</p>"
|
205 |
+
|
206 |
+
#: inc/optimus_hq.class.php:xx
|
207 |
+
msgid ""
|
208 |
+
"<p><strong>Optimus</strong> is free of charge, the functionality is limited "
|
209 |
+
"to the essential features.</p><p><strong>Optimus HQ</strong> (Premium) on "
|
210 |
+
"the other hand can handle several image formats, compress larger files and "
|
211 |
+
"connects through HTTPS. <span class=\"no-break\">More details on <a href="
|
212 |
+
"\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /><br /"
|
213 |
+
"><em>This information is displayed for 60 seconds and will not appear again."
|
214 |
+
"</em></p>"
|
215 |
+
msgstr ""
|
216 |
+
"<p><strong>Optimus</strong> ist kostenlos, der Funktionsumfang ist auf "
|
217 |
+
"wesentliche Features reduziert.</p><p><strong>Optimus HQ</strong> (Premium) "
|
218 |
+
"beherrscht dagegen mehrere Bildformate, komprimiert größere Dateien und "
|
219 |
+
"verfügt über HTTPS-Verbindung. <span class=\"no-break\">Weitere Details auf "
|
220 |
+
"<a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /"
|
221 |
+
"><br /><em>Dieser Hinweis hat eine Lebensdauer von 60 Sekunden und erscheint "
|
222 |
+
"nicht erneut.</em></p>"
|
223 |
+
|
224 |
+
#: inc/optimus_hq.class.php:xx
|
225 |
+
msgid ""
|
226 |
+
"<p><strong>Optimus HQ license key</strong> has expired. Get a new Optimus HQ "
|
227 |
+
"license key on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</"
|
228 |
+
"a>. Thank you!</p>"
|
229 |
+
msgstr ""
|
230 |
+
"<p><strong>Optimus HQ Key</strong> ist abgelaufen. Ein neuer Optimus HQ Key "
|
231 |
+
"kann auf <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a> "
|
232 |
+
"erworben werden. Vielen Dank!</p>"
|
233 |
+
|
234 |
+
#: inc/optimus_management.class.php:xx
|
235 |
+
msgid "Optimus Bulk Optimizer"
|
236 |
+
msgstr "Alle Bilder mit Optimus optimieren"
|
237 |
+
|
238 |
+
#: inc/optimus_management.class.php:xx
|
239 |
+
msgid "Optimize all images"
|
240 |
+
msgstr "Bilder optimieren"
|
241 |
+
|
242 |
+
#: inc/optimus_management.class.php:xx
|
243 |
+
msgid ""
|
244 |
+
"The Optimus bulk optimizer compresses all images that have not yet been "
|
245 |
+
"compressed in your WordPress media library."
|
246 |
+
msgstr ""
|
247 |
+
"Mit diesem Werkzeug können alle Bilder in der WordPress Mediathek optimiert "
|
248 |
+
"werden. Bereits optimierte Bilder werden ignoriert."
|
249 |
+
|
250 |
+
#: inc/optimus_management.class.php:xx
|
251 |
+
msgid ""
|
252 |
+
"It is recommended to run the bulk image optimization with an Optimus HQ "
|
253 |
+
"activated version due to the size limitation of the free version."
|
254 |
+
msgstr ""
|
255 |
+
"Es ist empfohlen zuerst die Optimus HQ Version zu aktivieren wegen der "
|
256 |
+
"Grösseneinschränkung der kostenlosen Version."
|
257 |
+
|
258 |
+
#: inc/optimus_management.class.php:xx
|
259 |
+
msgid ""
|
260 |
+
"Optimus found <strong>%d images</strong> in your WordPress media library."
|
261 |
+
msgstr "Optimus hat <strong>%d Bilder</strong> in der Mediathek gefunden."
|
262 |
+
|
263 |
+
#: inc/optimus_management.class.php:xx
|
264 |
+
msgid ""
|
265 |
+
"It might take a while until all images are optimized. This depends on the "
|
266 |
+
"amount and size of the images."
|
267 |
+
msgstr ""
|
268 |
+
"Die Optimierung aller Bilder kann einige Zeit in Anspruch nehmen. Dies hängt "
|
269 |
+
"von der Anzahl und der Grösse der Bilder ab."
|
270 |
+
|
271 |
+
#: inc/optimus_management.class.php:xx
|
272 |
+
msgid "Note: Do not close this tab during the optimization process."
|
273 |
+
msgstr ""
|
274 |
+
"Achtung: Während des Optimierungsprozesses darf dieses Fenster nicht "
|
275 |
+
"geschlossen werden."
|
276 |
+
|
277 |
+
#: inc/optimus_management.class.php:xx
|
278 |
+
msgid "Completed"
|
279 |
+
msgstr "Erledigt"
|
280 |
+
|
281 |
+
#: inc/optimus.class.php:xx
|
282 |
+
msgid "All images have been optimized."
|
283 |
+
msgstr "Alle Bilder wurden optimiert."
|
284 |
+
|
285 |
+
#: inc/optimus.class.php:xx
|
286 |
+
msgid "Optimize images"
|
287 |
+
msgstr "Bilder optimieren"
|
288 |
+
|
289 |
+
#: inc/optimus.class.php:xx
|
290 |
+
msgid "Optimizing"
|
291 |
+
msgstr "Optimierung läuft"
|
292 |
+
|
293 |
+
#: inc/optimus.class.php:xx
|
294 |
+
msgid "optimized"
|
295 |
+
msgstr "optimiert"
|
296 |
+
|
297 |
+
#: inc/optimus.class.php:xx
|
298 |
+
msgid "Internal error"
|
299 |
+
msgstr "Interner Fehler"
|
300 |
+
|
301 |
+
#: inc/optimus.class.php:xx
|
302 |
+
msgid "Waiting"
|
303 |
+
msgstr "Ausstehend"
|
304 |
+
|
305 |
+
#: inc/optimus_request.class.php:xx
|
306 |
+
msgid "Invalid request"
|
307 |
+
msgstr "Ungültige Anfrage"
|
308 |
+
|
309 |
+
#: inc/optimus_request.class.php:xx
|
310 |
+
msgid "Permission missing (upload_files)"
|
311 |
+
msgstr "Berechtigung fehlt (upload_files)"
|
312 |
+
|
313 |
+
#: inc/optimus_request.class.php:xx
|
314 |
+
msgid "Metadata missing"
|
315 |
+
msgstr "Metadata nicht gefunden"
|
316 |
+
|
317 |
+
#: inc/optimus_request.class.php:xx
|
318 |
+
msgid "Already optimized"
|
319 |
+
msgstr "Bereits optimiert"
|
320 |
+
|
321 |
+
#: inc/optimus_request.class.php:xx
|
322 |
+
msgid "Optimus HQ required"
|
323 |
+
msgstr "Optimus HQ benötigt"
|
optimus.php
CHANGED
@@ -1,12 +1,13 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Optimus
|
4 |
-
|
|
|
5 |
Author: KeyCDN
|
6 |
Author URI: https://www.keycdn.com
|
7 |
Plugin URI: https://optimus.io
|
8 |
License: GPLv2 or later
|
9 |
-
Version: 1.3.
|
10 |
*/
|
11 |
|
12 |
/*
|
@@ -39,6 +40,31 @@ define('OPTIMUS_BASE', plugin_basename(__FILE__));
|
|
39 |
define('OPTIMUS_MIN_WP', '3.8');
|
40 |
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
/* Admin & XMLRPC only */
|
43 |
if ( is_admin() OR (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
|
44 |
add_action(
|
@@ -76,7 +102,7 @@ spl_autoload_register('optimus_autoload');
|
|
76 |
|
77 |
/* Autoload Funktion */
|
78 |
function optimus_autoload($class) {
|
79 |
-
if ( in_array($class, array('Optimus', 'Optimus_HQ', 'Optimus_Settings', 'Optimus_Media', 'Optimus_Request')) ) {
|
80 |
require_once(
|
81 |
sprintf(
|
82 |
'%s/inc/%s.class.php',
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Optimus
|
4 |
+
Text Domain: optimus
|
5 |
+
Description: Lossless compression and optimization of uploaded images in WordPress. Automatic, reliable, effective.
|
6 |
Author: KeyCDN
|
7 |
Author URI: https://www.keycdn.com
|
8 |
Plugin URI: https://optimus.io
|
9 |
License: GPLv2 or later
|
10 |
+
Version: 1.3.8
|
11 |
*/
|
12 |
|
13 |
/*
|
40 |
define('OPTIMUS_MIN_WP', '3.8');
|
41 |
|
42 |
|
43 |
+
/* Hook admin init */
|
44 |
+
add_action('init', 'admin_init');
|
45 |
+
function admin_init()
|
46 |
+
{
|
47 |
+
if (is_admin()) {
|
48 |
+
load_plugin_textdomain( 'optimus', false, dirname( plugin_basename(__FILE__) ) . '/lang/' );
|
49 |
+
|
50 |
+
add_action(
|
51 |
+
'wp_ajax_optimus_optimize_image',
|
52 |
+
array(
|
53 |
+
'Optimus_Request',
|
54 |
+
'optimize_image'
|
55 |
+
)
|
56 |
+
);
|
57 |
+
add_action(
|
58 |
+
'admin_action_optimus_bulk_optimizer',
|
59 |
+
array(
|
60 |
+
'Optimus_Management',
|
61 |
+
'bulk_optimizer_media'
|
62 |
+
)
|
63 |
+
);
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
|
68 |
/* Admin & XMLRPC only */
|
69 |
if ( is_admin() OR (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
|
70 |
add_action(
|
102 |
|
103 |
/* Autoload Funktion */
|
104 |
function optimus_autoload($class) {
|
105 |
+
if ( in_array($class, array('Optimus', 'Optimus_HQ', 'Optimus_Management', 'Optimus_Settings', 'Optimus_Media', 'Optimus_Request')) ) {
|
106 |
require_once(
|
107 |
sprintf(
|
108 |
'%s/inc/%s.class.php',
|
readme.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
=== Optimus ===
|
2 |
-
Contributors:
|
3 |
Tags: images, optimize, compress, progressive, performance, png, jpeg, webp
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.2.2
|
@@ -9,75 +9,87 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
9 |
|
10 |
|
11 |
|
12 |
-
|
13 |
|
14 |
|
15 |
|
16 |
== Description ==
|
17 |
|
18 |
= (Fast) Magie =
|
19 |
-
*Optimus* verkleinert die Dateigröße hochgeladener Medien. Abhängig vom Bild und Format ist eine Reduzierung der Größe um bis zu 70 Prozent möglich. Pro Bild lassen sich mehrere Kilobytes einsparen – diese Sparmaßnahme trägt der Blogseiten-Performance positiv bei. Das Beeindruckende an der Kompressionstechnologie: Die Qualität der Bilder bleibt garantiert erhalten.
|
20 |
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
>
|
27 |
-
>
|
28 |
|
29 |
|
30 |
-
=
|
31 |
-
|
32 |
|
33 |
-
|
34 |
|
35 |
-
|
36 |
|
37 |
-
|
38 |
|
39 |
|
40 |
= Features =
|
41 |
-
* [Progressive JPEGs](https://
|
42 |
-
*
|
43 |
-
*
|
44 |
-
*
|
45 |
-
*
|
46 |
-
*
|
47 |
-
*
|
48 |
-
*
|
49 |
-
*
|
50 |
-
*
|
51 |
-
*
|
52 |
-
* WordPress
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
|
55 |
-
=
|
56 |
-
*
|
57 |
-
*
|
58 |
|
59 |
|
60 |
-
=
|
61 |
-
*
|
62 |
-
*
|
63 |
|
|
|
64 |
|
65 |
-
= Systemanforderungen =
|
66 |
-
* PHP ab 5.2.4
|
67 |
-
* WordPress ab 3.8
|
68 |
-
* Ausgehende Serververbindung
|
69 |
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
*
|
|
|
74 |
|
75 |
|
76 |
= Website =
|
77 |
* [optimus.io](https://optimus.io)
|
78 |
|
79 |
|
80 |
-
=
|
81 |
* [Twitter](https://twitter.com/keycdn)
|
82 |
* [Google+](https://plus.google.com/+Keycdn "Google+")
|
83 |
* [KeyCDN](https://www.keycdn.com "KeyCDN")
|
@@ -86,6 +98,9 @@ NEU für Optimus HQ: Optionale [Konvertierung](https://plus.google.com/b/1144502
|
|
86 |
|
87 |
== Changelog ==
|
88 |
|
|
|
|
|
|
|
89 |
= 1.3.7 =
|
90 |
* Erhöhung der Limits für alle Formate
|
91 |
* [Limits auf optimus.io](https://optimus.io)
|
@@ -207,8 +222,7 @@ NEU für Optimus HQ: Optionale [Konvertierung](https://plus.google.com/b/1144502
|
|
207 |
* Init release
|
208 |
|
209 |
|
210 |
-
|
211 |
== Screenshots ==
|
212 |
|
213 |
-
1.
|
214 |
-
2.
|
1 |
+
=== Optimus Image Optimizer ===
|
2 |
+
Contributors: keycdn
|
3 |
Tags: images, optimize, compress, progressive, performance, png, jpeg, webp
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.2.2
|
9 |
|
10 |
|
11 |
|
12 |
+
Effective image compression and optimization during the upload process. Automatic and without loss of quality.
|
13 |
|
14 |
|
15 |
|
16 |
== Description ==
|
17 |
|
18 |
= (Fast) Magie =
|
19 |
+
*Optimus* verkleinert die Dateigröße hochgeladener Medien. Abhängig vom Bild und Format ist eine Reduzierung der Größe um bis zu 70 Prozent möglich. Pro Bild lassen sich mehrere Kilobytes einsparen – diese Sparmaßnahme trägt der Blogseiten-Performance positiv bei. Das Beeindruckende an der Kompressionstechnologie: Die Qualität der Bilder bleibt garantiert erhalten. Alle Details zum Funktionsumfang und den einzelnen Preismodellen auf [optimus.io](https://optimus.io)
|
20 |
|
21 |
|
22 |
+
= (Almost) Magic =
|
23 |
+
Optimus reduces the file size of uploaded media files. Depending on the image and format, reductions in size of up to 70% are possible. Several kilobytes can be saved per image—these savings contribute positively to the performance of the blog website. What’s most impressive about the compression technology: the quality of the images is maintained—guaranteed.
|
24 |
+
|
25 |
+
|
26 |
+
> #### There are three different versions of Optimus:
|
27 |
+
> 1. **Optimus** *(Free)* as base version with limitations (e.g. max of 100kb for JPEGs)
|
28 |
+
> 2. **Optimus HQ** *(Premium)* with expanded functionality for personal projects
|
29 |
+
> 3. **Optimus HQ PRO** *(Premium)* as professional solution for customer websites
|
30 |
>
|
31 |
+
> More details about the features and the pricing model on [optimus.io](https://optimus.io/en/)
|
32 |
|
33 |
|
34 |
+
= How does it work? =
|
35 |
+
During the uploading process of images to the media library, the *Optimus* plugin simultaneously sends the images to the *Optimus* server, where the incoming material is processed and sent back in optimized form. Afterwards, the *Optimus* plugin saves the image version with a reduced file size in the media library.
|
36 |
|
37 |
+
The optimization of images - *including thumbnails* - is conducted in the background and outside of the view of the user. The compression gains per file are displayed by Optimus within the media library in form of a percentage value, see [screenshot](https://wordpress.org/plugins/optimus/screenshots/).
|
38 |
|
39 |
+
Differently from common optimization tools, Optimus never alters the quality of images. Instead, superfluous information that is saved by image processing programs and is not even necessary for displaying the image is extracted from image files. This way, the quality of the graphics remains intact while the image size can be reduced significantly. If you wish, Optimus keeps all author, EXIF and copyright information contained within the photos — the compressional gains will be correspondingly lower.
|
40 |
|
41 |
+
Optimus optional support the conversion of images to the thrifty [*WebP* image format](https://www.keycdn.com/blog/convert-to-webp-the-successor-of-jpeg/).
|
42 |
|
43 |
|
44 |
= Features =
|
45 |
+
* [Progressive JPEGs](https://optimus.io/support/progressive-jpegs/)
|
46 |
+
* Reduction of file size *without loss in quality*
|
47 |
+
* Optimization of all preview images of a photo
|
48 |
+
* No adjustments to code necessary
|
49 |
+
* Optional: no removal of EXIF and IPTC metadata
|
50 |
+
* Optional: HTTPS connection for the image transfer (Optimus HQ)
|
51 |
+
* Optional: [conversion to the WebP](https://optimus.io/support/convert-jpeg-and-png-to-webp-image-format/) image format (Optimus HQ)
|
52 |
+
* Optimized for WordPress Mobile Apps and Windows Live Writer
|
53 |
+
* More advantageous PageSpeed, influencing the Ranking Factor
|
54 |
+
* Faster load times for blog pages
|
55 |
+
* Support for WooCommerce
|
56 |
+
* WordPress multisite-support
|
57 |
+
* Bulk optimization
|
58 |
+
|
59 |
+
|
60 |
+
= Privacy =
|
61 |
+
* After the optimization and transfer process, the *Optimus* server immediately deletes all the temporarily stored files. No files are stored!
|
62 |
+
* The Optimus servers are located in Germany.
|
63 |
|
64 |
|
65 |
+
= Tips =
|
66 |
+
* Photos should always be saved as JPEGs rather than PNGs. The PNG format works well for illustrations, JPEG on the other hand is the right choice for photographs. Another reason: the size reduction always works more quickly for JPEGs.
|
67 |
+
* Your images have been optimized using Desktop tools such as ImageOptim (Mac) or PNGGauntlet (Win) before you upload them? Optimus has the significant benefit of also minimizing the thumbnails (=preview images) created by WordPress. After all, themes almost always integrate thumbnails rather than original images.
|
68 |
|
69 |
|
70 |
+
= Translations =
|
71 |
+
* English (default)
|
72 |
+
* German
|
73 |
|
74 |
+
*Note:* Optimus is localized. Please contribute your language to the plugin to make it even more awesome.
|
75 |
|
|
|
|
|
|
|
|
|
76 |
|
77 |
+
= System Requirements =
|
78 |
+
* PHP >=5.2.4
|
79 |
+
* WordPress >=3.8
|
80 |
+
* Allow outbound connections
|
81 |
|
82 |
+
|
83 |
+
= Storage Utilization =
|
84 |
+
* Backend: ~ 0,19 MB
|
85 |
+
* Frontend: ~ 0,01 MB
|
86 |
|
87 |
|
88 |
= Website =
|
89 |
* [optimus.io](https://optimus.io)
|
90 |
|
91 |
|
92 |
+
= Author =
|
93 |
* [Twitter](https://twitter.com/keycdn)
|
94 |
* [Google+](https://plus.google.com/+Keycdn "Google+")
|
95 |
* [KeyCDN](https://www.keycdn.com "KeyCDN")
|
98 |
|
99 |
== Changelog ==
|
100 |
|
101 |
+
= 1.3.8 =
|
102 |
+
* Bulk optimization feature
|
103 |
+
|
104 |
= 1.3.7 =
|
105 |
* Erhöhung der Limits für alle Formate
|
106 |
* [Limits auf optimus.io](https://optimus.io)
|
222 |
* Init release
|
223 |
|
224 |
|
|
|
225 |
== Screenshots ==
|
226 |
|
227 |
+
1. Display of the compression rate and how many images have been optimized (circle)
|
228 |
+
2. Before and after: Original image incl. thumbnails without compression (above) and below with Optimus compressed/optimized
|