Enable Media Replace - Version 3.3.12

Version Description

Release date: 27th April 2020 * Fixed - When trying to upload over-limit file would show too many error messages; * Language 2 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted.

Download this release

Release Info

Developer petredobrescu
Plugin Icon 128x128 Enable Media Replace
Version 3.3.12
Comparing to
See all releases

Code changes from version 3.3.11 to 3.3.12

classes/emr-plugin.php CHANGED
@@ -78,7 +78,8 @@ class EnableMediaReplacePlugin
78
*/
79
public function menu()
80
{
81
- add_submenu_page(null, esc_html__("Replace media", "enable-media-replace"), esc_html__("Replace media", "enable-media-replace"), 'upload_files', 'enable-media-replace/enable-media-replace', array($this, 'route'));
82
}
83
84
/**
@@ -136,6 +137,11 @@ class EnableMediaReplacePlugin
136
137
}
138
139
/** register styles and scripts
140
*
141
* Nothing should ever by -enqueued- here, just registered.
78
*/
79
public function menu()
80
{
81
+ /* add_submenu_page(null, esc_html__("Replace media", "enable-media-replace"), esc_html__("Replace media", "enable-media-replace"), 'upload_files', 'enable-media-replace/enable-media-replace', array($this, 'route')); */
82
+ add_submenu_page(null, esc_html__("Replace media", "enable-media-replace"), esc_html__("Replace media", "enable-media-replace"), 'upload_files', 'enable-media-replace/enable-media-replace', array($this, 'route'));
83
}
84
85
/**
137
138
}
139
140
+ public function getPluginURL($path = '')
141
+ {
142
+ return plugins_url($path, EMR_ROOT_FILE);
143
+ }
144
+
145
/** register styles and scripts
146
*
147
* Nothing should ever by -enqueued- here, just registered.
css/admin.css CHANGED
@@ -759,8 +759,11 @@
759
.ui-corner-br {
760
border-bottom-right-radius: 3px; }
761
762
.emr_upload_form .wrapper {
763
- margin: 15px 0;
764
padding: 18px;
765
border: 1px solid #ccc; }
766
.emr_upload_form .wrapper .section-header {
@@ -776,6 +779,7 @@
776
position: relative;
777
display: inline-block;
778
margin-right: 25px;
779
border: 1px solid #ddd;
780
vertical-align: top;
781
max-height: 500px; }
@@ -816,7 +820,9 @@
816
margin: 10px 0;
817
display: none; }
818
.emr_upload_form .form-error p, .emr_upload_form .form-warning p {
819
- margin: 0; }
820
.emr_upload_form .form-warning {
821
border-left: 4px solid #ffb900; }
822
.emr_upload_form .option-flex-wrapper {
@@ -894,7 +900,46 @@
894
min-height: 270px;
895
border: 1px solid #ccc;
896
padding: 15px;
897
- margin: 0 0 10px;
898
- float: right; }
899
.emr_upload_form .shortpixel-notice h3 {
900
line-height: 1.3em; }
759
.ui-corner-br {
760
border-bottom-right-radius: 3px; }
761
762
+ .emr_upload_form form {
763
+ display: flex; }
764
+ .emr_upload_form form .upsell-wrapper {
765
+ margin-left: 10px; }
766
.emr_upload_form .wrapper {
767
padding: 18px;
768
border: 1px solid #ccc; }
769
.emr_upload_form .wrapper .section-header {
779
position: relative;
780
display: inline-block;
781
margin-right: 25px;
782
+ margin-bottom: 10px;
783
border: 1px solid #ddd;
784
vertical-align: top;
785
max-height: 500px; }
820
margin: 10px 0;
821
display: none; }
822
.emr_upload_form .form-error p, .emr_upload_form .form-warning p {
823
+ margin: 0;
824
+ font-size: 12px;
825
+ font-weight: 700; }
826
.emr_upload_form .form-warning {
827
border-left: 4px solid #ffb900; }
828
.emr_upload_form .option-flex-wrapper {
900
min-height: 270px;
901
border: 1px solid #ccc;
902
padding: 15px;
903
+ margin-bottom: 25px;
904
+ float: right;
905
+ clear: both; }
906
.emr_upload_form .shortpixel-notice h3 {
907
line-height: 1.3em; }
908
+ .emr_upload_form .shortpixel-notice.site-speed {
909
+ background-color: #dcfdff; }
910
+ .emr_upload_form .shortpixel-notice.site-speed .img-wrapper {
911
+ text-align: center;
912
+ margin: 0 0 25px 0; }
913
+ .emr_upload_form .shortpixel-notice.site-speed .img-wrapper img {
914
+ max-width: 140px;
915
+ max-height: 140px;
916
+ margin: 0; }
917
+ .emr_upload_form .shortpixel-notice.site-speed h3 {
918
+ color: #00d0e5;
919
+ font-size: 20px;
920
+ text-align: center;
921
+ margin: 0;
922
+ line-height: 1.3em; }
923
+ .emr_upload_form .shortpixel-notice.site-speed .button-wrapper {
924
+ text-align: center;
925
+ margin-top: 35px; }
926
+ .emr_upload_form .shortpixel-notice.site-speed .button-wrapper a {
927
+ background-color: #ff0000;
928
+ color: #fff;
929
+ display: inline-block;
930
+ padding: 8px;
931
+ text-decoration: none;
932
+ font-weight: 700;
933
+ font-size: 20px; }
934
+ .emr_upload_form .shortpixel-notice.site-speed .red {
935
+ color: #ff0000; }
936
+ @media (max-width: 1200px) {
937
+ .emr_upload_form .image_previews {
938
+ text-align: center; }
939
+ .emr_upload_form .option-flex-wrapper {
940
+ flex-direction: column; }
941
+ .emr_upload_form .option-flex-wrapper .options.wrapper {
942
+ margin-left: 0; } }
943
+ @media (max-width: 960px) {
944
+ .emr_upload_form .upsell-wrapper {
945
+ display: none; } }
enable-media-replace.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Enable Media Replace
4
Plugin URI: https://wordpress.org/plugins/enable-media-replace/
5
Description: Enable replacing media files by uploading a new file in the "Edit Media" section of the WordPress Media Library.
6
- Version: 3.3.11
7
Author: ShortPixel
8
Author URI: https://shortpixel.com
9
Text Domain: enable-media-replace
@@ -25,8 +25,7 @@ http://www.gnu.org/licenses/gpl.html
25
*/
26
27
namespace EnableMediaReplace;
28
-
29
- define('EMR_VERSION', '3.3.11');
30
31
if ( ! defined( 'ABSPATH' ) ) {
32
exit; // Exit if accessed directly.
3
Plugin Name: Enable Media Replace
4
Plugin URI: https://wordpress.org/plugins/enable-media-replace/
5
Description: Enable replacing media files by uploading a new file in the "Edit Media" section of the WordPress Media Library.
6
+ Version: 3.3.12
7
Author: ShortPixel
8
Author URI: https://shortpixel.com
9
Text Domain: enable-media-replace
25
*/
26
27
namespace EnableMediaReplace;
28
+ define('EMR_VERSION', '3.3.12');
29
30
if ( ! defined( 'ABSPATH' ) ) {
31
exit; // Exit if accessed directly.
js/emr_admin.js CHANGED
@@ -82,7 +82,7 @@
82
if ($('input[name="userfile"]').val().length > 0)
83
this.checkSubmit();
84
console.log('FileAPI not detected');
85
- return;
86
}
87
88
var status = this.checkUpload(file);
@@ -103,12 +103,17 @@
103
104
$(preview).find('img').remove();
105
$(preview).removeClass('is_image not_image is_document');
106
107
if (file !== null) /// file is null when empty, or error
108
{
109
target_is_image = (file.type.indexOf('image') >= 0) ? true : false;
110
target_type = file.type.trim();
111
}
112
// If image, load thumbnail and get dimensions.
113
if (file && target_is_image)
114
{
@@ -148,13 +153,13 @@
148
this.debug('Not image, media document');
149
}
150
151
- if (target_type != source_type)
152
{
153
this.debug(target_type + ' not ' + source_type);
154
this.warningFileType();
155
}
156
157
- if (emr_options.allowed_mime.indexOf(target_type) == -1)
158
{
159
this.debug(target_type + ' not ' + ' in allowed types ');
160
this.warningMimeType();
@@ -193,7 +198,7 @@
193
{
194
$('.form-error').fadeOut();
195
$('.form-warning').fadeOut();
196
- }
197
this.checkUpload = function(fileItem)
198
{
199
var maxsize = emr_options.maxfilesize;
82
if ($('input[name="userfile"]').val().length > 0)
83
this.checkSubmit();
84
console.log('FileAPI not detected');
85
+ return false;
86
}
87
88
var status = this.checkUpload(file);
103
104
$(preview).find('img').remove();
105
$(preview).removeClass('is_image not_image is_document');
106
+ var is_empty = false;
107
108
if (file !== null) /// file is null when empty, or error
109
{
110
target_is_image = (file.type.indexOf('image') >= 0) ? true : false;
111
target_type = file.type.trim();
112
}
113
+ else
114
+ {
115
+ is_empty = true;
116
+ }
117
// If image, load thumbnail and get dimensions.
118
if (file && target_is_image)
119
{
153
this.debug('Not image, media document');
154
}
155
156
+ if (! is_empty && target_type != source_type)
157
{
158
this.debug(target_type + ' not ' + source_type);
159
this.warningFileType();
160
}
161
162
+ if (! is_empty && emr_options.allowed_mime.indexOf(target_type) == -1)
163
{
164
this.debug(target_type + ' not ' + ' in allowed types ');
165
this.warningMimeType();
198
{
199
$('.form-error').fadeOut();
200
$('.form-warning').fadeOut();
201
+ },
202
this.checkUpload = function(fileItem)
203
{
204
var maxsize = emr_options.maxfilesize;
readme.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: ShortPixel
3
Donate link: https://www.paypal.me/resizeImage
4
Tags: replace, attachment, media, files, replace image, replace jpg, change media, replace media, image, file
5
Requires at least: 4.9.7
6
- Tested up to: 5.3.2
7
Requires PHP: 5.6
8
- Stable tag: 3.3.11
9
10
Easily replace any attached image/file by simply uploading a new file in the Media Library edit view - a real time saver!
11
@@ -47,6 +47,12 @@ If you want more control over the format used to display the time, you can use t
47
48
== Changelog ==
49
50
= 3.3.11 =
51
52
Release date: 10th March 2020
3
Donate link: https://www.paypal.me/resizeImage
4
Tags: replace, attachment, media, files, replace image, replace jpg, change media, replace media, image, file
5
Requires at least: 4.9.7
6
+ Tested up to: 5.4
7
Requires PHP: 5.6
8
+ Stable tag: 3.3.12
9
10
Easily replace any attached image/file by simply uploading a new file in the Media Library edit view - a real time saver!
11
47
48
== Changelog ==
49
50
+ = 3.3.12 =
51
+
52
+ Release date: 27th April 2020
53
+ * Fixed - When trying to upload over-limit file would show too many error messages;
54
+ * Language – 2 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted.
55
+
56
= 3.3.11 =
57
58
Release date: 10th March 2020
scss/admin.scss CHANGED
@@ -2,9 +2,19 @@
2
3
.emr_upload_form
4
{
5
.wrapper
6
{
7
- margin: 15px 0;
8
padding: 18px;
9
border: 1px solid #ccc;
10
@@ -18,6 +28,8 @@
18
}
19
}
20
21
.image_chooser.wrapper
22
{
23
min-height: 350px;
@@ -29,6 +41,7 @@
29
position: relative;
30
display: inline-block;
31
margin-right: 25px;
32
border: 1px solid #ddd;
33
vertical-align: top;
34
max-height: 500px;
@@ -89,7 +102,11 @@
89
// display: inline-block;
90
margin: 10px 0;
91
display: none;
92
- p { margin: 0; }
93
94
}
95
.form-warning
@@ -223,10 +240,62 @@
223
min-height: 270px;
224
border: 1px solid #ccc;
225
padding: 15px;
226
- margin: 0 0 10px;
227
float: right;
228
h3 {
229
line-height: 1.3em; // match size
230
}
231
}
232
} // emr_upload_form
2
3
.emr_upload_form
4
{
5
+ form
6
+ {
7
+ display: flex; //editor and upsell
8
+ .upsell-wrapper
9
+ {
10
+ margin-left: 10px;
11
+ }
12
+ }
13
+
14
+
15
.wrapper
16
{
17
+ // margin: 15px 0;
18
padding: 18px;
19
border: 1px solid #ccc;
20
28
}
29
}
30
31
+
32
+
33
.image_chooser.wrapper
34
{
35
min-height: 350px;
41
position: relative;
42
display: inline-block;
43
margin-right: 25px;
44
+ margin-bottom: 10px;
45
border: 1px solid #ddd;
46
vertical-align: top;
47
max-height: 500px;
102
// display: inline-block;
103
margin: 10px 0;
104
display: none;
105
+ p {
106
+ margin: 0;
107
+ font-size: 12px;
108
+ font-weight: 700;
109
+ }
110
111
}
112
.form-warning
240
min-height: 270px;
241
border: 1px solid #ccc;
242
padding: 15px;
243
+ //margin: 0 0 10px 25px;
244
+ margin-bottom:25px;
245
float: right;
246
+ clear: both;
247
h3 {
248
line-height: 1.3em; // match size
249
}
250
+ &.site-speed
251
+ {
252
+ background-color: #dcfdff;
253
+ .img-wrapper
254
+ {
255
+ text-align: center;
256
+ margin: 0 0 25px 0;
257
+ img { max-width: 140px; max-height: 140px; margin: 0; }
258
+ }
259
+ h3 {
260
+ color: #00d0e5;
261
+ font-size: 20px;
262
+ text-align: center;
263
+ margin: 0;
264
+ line-height: 1.3em;
265
+ }
266
+ .button-wrapper
267
+ {
268
+ text-align: center;
269
+ margin-top: 35px;
270
+ a {
271
+ background-color: #ff0000;
272
+ color: #fff;
273
+ display: inline-block;
274
+ padding: 8px;
275
+ text-decoration: none;
276
+ font-weight: 700;
277
+ font-size: 20px;
278
+ }
279
+ }
280
+ .red { color: #ff0000; }
281
+
282
+ }
283
+ }
284
+
285
+ @media( max-width: 1200px)
286
+ {
287
+ .image_previews
288
+ {
289
+ text-align: center;
290
+ }
291
+ .option-flex-wrapper {
292
+ flex-direction: column;
293
+ .options.wrapper
294
+ { margin-left: 0;}
295
+ }
296
+ }
297
+ @media (max-width: 960px)
298
+ {
299
+ .upsell-wrapper { display: none; }
300
}
301
} // emr_upload_form
views/popup.php CHANGED
@@ -26,11 +26,6 @@ global $wpdb;
26
27
$table_name = $wpdb->prefix . "posts";
28
29
- Log::addDebug('Load Popup Form View');
30
-
31
- //$sql = "SELECT guid, post_mime_type FROM $table_name WHERE ID = " . (int) $_GET["attachment_id"];
32
- //list($current_filename, $current_filetype) = $wpdb->get_row($sql, ARRAY_N);
33
-
34
$attachment_id = intval($_GET['attachment_id']);
35
$attachment = get_post($attachment_id);
36
$replacer = new Replacer($attachment_id);
@@ -41,29 +36,14 @@ $filename = $file->getFileName();
41
$filetype = $file->getFileExtension();
42
$source_mime = get_post_mime_type($attachment_id);
43
44
- /*$filepath = get_attached_file($attachment_id); // fullpath
45
- $filetype = $attachment->post_mime_type;
46
- $filename = basename($filepath);
47
- */
48
-
49
$uiHelper = new UIHelper();
50
$uiHelper->setPreviewSizes();
51
$uiHelper->setSourceSizes($attachment_id);
52
53
- //Log::addDebug('Popup view Data', array('id' => $attachment_id, 'source_mime' => $source_mime, 'filepath' => $filepath));
54
55
?>
56
- <style>
57
- .emr-plugin-button.emr-updating:before {
58
- font: 400 20px/1 dashicons;
59
- display: inline-block;
60
- content: "\f463";
61
- -webkit-animation: rotation 2s infinite linear;
62
- animation: rotation 2s infinite linear;
63
- margin: 3px 5px 0 -2px;
64
- vertical-align: top
65
- }
66
- </style>
67
<div class="wrap emr_upload_form">
68
<h1><?php echo esc_html__("Replace Media Upload", "enable-media-replace"); ?></h1>
69
@@ -77,42 +57,14 @@ $url = $uiHelper->getFormUrl($attachment_id);
77
?>
78
79
<form enctype="multipart/form-data" method="POST" action="<?php echo $formurl; ?>">
80
<section class='image_chooser wrapper'>
81
<div class='section-header'> <?php _e('Choose Replacement Media', 'enable-replace-media'); ?></div>
82
83
- <?php
84
- #wp_nonce_field('enable-media-replace');
85
- $plugins = get_plugins();
86
- $spInstalled = isset($plugins['shortpixel-image-optimiser/wp-shortpixel.php']);
87
- $spActive = is_plugin_active('shortpixel-image-optimiser/wp-shortpixel.php');
88
- ?>
89
<input type="hidden" name="ID" value="<?php echo $attachment_id ?>" />
90
<div id="message" class="updated notice notice-success is-dismissible"><p><?php printf( esc_html__('NOTE: You are about to replace the media file "%s". There is no undo. Think about it!', "enable-media-replace"), $filename ); ?></p></div>
91
92
- <?php if(!$spInstalled) {?>
93
- <div class='shortpixel-notice'>
94
- <h3 class="" style="margin-top: 0;text-align: center;">
95
- <a href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
96
- <?php echo esc_html__("Optimize your images with ShortPixel, get +50% credits!", "enable-media-replace"); ?>
97
- </a>
98
- </h3>
99
- <div class="" style="text-align: center;">
100
- <a href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
101
- <img src="https://optimizingmattersblog.files.wordpress.com/2016/10/shortpixel.png">
102
- </a>
103
- </div>
104
- <div class="" style="margin-bottom: 10px;">
105
- <?php echo esc_html__("Get more Google love by compressing your site's images! Check out how much ShortPixel can save your site and get +50% credits when signing up as an Enable Media Replace user! Forever!", "enable-media-replace"); ?>
106
- </div>
107
- <div class=""><div style="text-align: <?php echo (is_rtl()) ? 'left' : 'right' ?>;">
108
- <a class="button button-primary" id="shortpixel-image-optimiser-info" href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
109
- <?php echo esc_html__("More info", "enable-media-replace"); ?></p>
110
- </a>
111
- </div>
112
- </div>
113
- </div>
114
- <?php } ?>
115
-
116
<p><?php echo esc_html__("Choose a file to upload from your computer", "enable-media-replace"); ?></p>
117
<p><?php printf(__('Maximum file size: <strong>%s</strong>','enable-media-replace'), size_format(wp_max_upload_size() ) ) ?></p>
118
<div class='form-error filesize'><p><?php printf(__('%s f %s exceeds the maximum upload size for this site.', 'enable-media-replace'), '<span class="fn">', '</span>'); ?></p>
@@ -145,6 +97,7 @@ $url = $uiHelper->getFormUrl($attachment_id);
145
</div>
146
147
</section>
148
<div class='option-flex-wrapper'>
149
<section class='replace_type wrapper'>
150
<div class='section-header'> <?php _e('Replacement Options', 'enable-replace-media'); ?></div>
@@ -214,6 +167,47 @@ $url = $uiHelper->getFormUrl($attachment_id);
214
<section class='form_controls wrapper'>
215
<input id="submit" type="submit" class="button button-primary" disabled="disabled" value="<?php echo esc_attr__("Upload", "enable-media-replace"); ?>" />
216
<a href="#" class="button" onclick="history.back();"><?php echo esc_html__("Cancel", "enable-media-replace"); ?></a>
217
</section>
218
</form>
219
</div>
26
27
$table_name = $wpdb->prefix . "posts";
28
29
$attachment_id = intval($_GET['attachment_id']);
30
$attachment = get_post($attachment_id);
31
$replacer = new Replacer($attachment_id);
36
$filetype = $file->getFileExtension();
37
$source_mime = get_post_mime_type($attachment_id);
38
39
$uiHelper = new UIHelper();
40
$uiHelper->setPreviewSizes();
41
$uiHelper->setSourceSizes($attachment_id);
42
43
+ $emr = EnableMediaReplacePlugin::get();
44
45
?>
46
+
47
<div class="wrap emr_upload_form">
48
<h1><?php echo esc_html__("Replace Media Upload", "enable-media-replace"); ?></h1>
49
57
?>
58
59
<form enctype="multipart/form-data" method="POST" action="<?php echo $formurl; ?>">
60
+
61
+ <div class='editor-wrapper'>
62
<section class='image_chooser wrapper'>
63
<div class='section-header'> <?php _e('Choose Replacement Media', 'enable-replace-media'); ?></div>
64
65
<input type="hidden" name="ID" value="<?php echo $attachment_id ?>" />
66
<div id="message" class="updated notice notice-success is-dismissible"><p><?php printf( esc_html__('NOTE: You are about to replace the media file "%s". There is no undo. Think about it!', "enable-media-replace"), $filename ); ?></p></div>
67
68
<p><?php echo esc_html__("Choose a file to upload from your computer", "enable-media-replace"); ?></p>
69
<p><?php printf(__('Maximum file size: <strong>%s</strong>','enable-media-replace'), size_format(wp_max_upload_size() ) ) ?></p>
70
<div class='form-error filesize'><p><?php printf(__('%s f %s exceeds the maximum upload size for this site.', 'enable-media-replace'), '<span class="fn">', '</span>'); ?></p>
97
</div>
98
99
</section>
100
+
101
<div class='option-flex-wrapper'>
102
<section class='replace_type wrapper'>
103
<div class='section-header'> <?php _e('Replacement Options', 'enable-replace-media'); ?></div>
167
<section class='form_controls wrapper'>
168
<input id="submit" type="submit" class="button button-primary" disabled="disabled" value="<?php echo esc_attr__("Upload", "enable-media-replace"); ?>" />
169
<a href="#" class="button" onclick="history.back();"><?php echo esc_html__("Cancel", "enable-media-replace"); ?></a>
170
+ </section>
171
+ </div>
172
+
173
+
174
+ <?php
175
+ #wp_nonce_field('enable-media-replace');
176
+ $plugins = get_plugins();
177
+ $spInstalled = isset($plugins['shortpixel-image-optimiser/wp-shortpixel.php']);
178
+ $spActive = is_plugin_active('shortpixel-image-optimiser/wp-shortpixel.php');
179
+ ?>
180
+
181
+ <section class='upsell-wrapper'>
182
+ <?php if(! $spInstalled) {?>
183
+ <div class='shortpixel-notice'>
184
+ <h3 class="" style="margin-top: 0;text-align: center;">
185
+ <a href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
186
+ <?php echo esc_html__("Optimize your images with ShortPixel, get +50% credits!", "enable-media-replace"); ?>
187
+ </a>
188
+ </h3>
189
+ <div class="" style="text-align: center;">
190
+ <a href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
191
+ <img src="https://optimizingmattersblog.files.wordpress.com/2016/10/shortpixel.png">
192
+ </a>
193
+ </div>
194
+ <div class="" style="margin-bottom: 10px;">
195
+ <?php echo esc_html__("Get more Google love by compressing your site's images! Check out how much ShortPixel can save your site and get +50% credits when signing up as an Enable Media Replace user! Forever!", "enable-media-replace"); ?>
196
+ </div>
197
+ <div class=""><div style="text-align: <?php echo (is_rtl()) ? 'left' : 'right' ?>;">
198
+ <a class="button button-primary" id="shortpixel-image-optimiser-info" href="https://shortpixel.com/wp/af/VKG6LYN28044" target="_blank">
199
+ <?php echo esc_html__("More info", "enable-media-replace"); ?>
200
+ </a>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ <?php } ?>
205
+ <div class='shortpixel-notice site-speed'>
206
+ <p class='img-wrapper'><img src="<?php echo $emr->getPluginURL('img/shortpixel.png'); ?>" alt='ShortPixel'></p>
207
+ <h3><?php printf(__('ARE YOU %s CONCERNED WITH %s YOUR %s %s SITE SPEED? %s', 'enable-media-replace'),'<br>', '<br>','<br>', '<span class="red">','</span>'); ?><br><br>
208
+ <?php printf(__('ALLOW ShortPixel %s SPECIALISTS TO %s FIND THE %s SOLUTION FOR YOU.', 'enable-media-replace'), '<br>','<br>','<br>'); ?></h3>
209
+ <p class='button-wrapper'><a href='https://shortpixel.com/lp/wso/?utm_source=EMR' target="_blank"><?php _e('FIND OUT MORE', 'enable-media-replace') ?></a></p>
210
+ </div>
211
</section>
212
</form>
213
</div>