Version Description
(2020-02-13) =
* [Changed]
Unknown error handling when converting images
* [Added]
Ability to skip converting existing images when Regenerate All
* [Added]
Button for simple checking of server configuration
Download this release
Release Info
Developer | mateuszgbiorczyk |
Plugin | Converter for Media – Optimize images | Convert WebP & AVIF |
Version | 1.1.1 |
Comparing to | |
See all releases |
Code changes from version 1.1.0 to 1.1.1
- app/Media/Delete.php +1 -0
- app/Media/Upload.php +1 -0
- app/Regenerate/Endpoints.php +4 -0
- app/Regenerate/Regenerate.php +1 -0
- app/Regenerate/Skip.php +28 -0
- public/build/js/scripts.js +1 -1
- readme.txt +5 -0
- resources/_dev/js/classes/Regenerate.js +14 -8
- resources/components/widgets/options.php +3 -1
- resources/components/widgets/regenerate.php +20 -1
- resources/components/widgets/server.php +6 -0
- resources/components/widgets/support.php +4 -6
- webp-converter-for-media.php +2 -2
app/Media/Delete.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Media;
|
|
|
4 |
use WebpConverter\Convert as Convert;
|
5 |
|
6 |
class Delete
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Media;
|
4 |
+
|
5 |
use WebpConverter\Convert as Convert;
|
6 |
|
7 |
class Delete
|
app/Media/Upload.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Media;
|
|
|
4 |
use WebpConverter\Convert as Convert;
|
5 |
|
6 |
class Upload
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Media;
|
4 |
+
|
5 |
use WebpConverter\Convert as Convert;
|
6 |
|
7 |
class Upload
|
app/Regenerate/Endpoints.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Regenerate;
|
|
|
4 |
use WebpConverter\Convert as Convert;
|
5 |
|
6 |
class Endpoints
|
@@ -60,6 +61,9 @@
|
|
60 |
|
61 |
public function getPaths($request)
|
62 |
{
|
|
|
|
|
|
|
63 |
$api = new Paths();
|
64 |
$data = $api->getPaths();
|
65 |
if ($data !== false) return new \WP_REST_Response($data, 200);
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Regenerate;
|
4 |
+
|
5 |
use WebpConverter\Convert as Convert;
|
6 |
|
7 |
class Endpoints
|
61 |
|
62 |
public function getPaths($request)
|
63 |
{
|
64 |
+
$params = $request->get_params();
|
65 |
+
if (isset($params['skip']) && $params['skip']) new Skip();
|
66 |
+
|
67 |
$api = new Paths();
|
68 |
$data = $api->getPaths();
|
69 |
if ($data !== false) return new \WP_REST_Response($data, 200);
|
app/Regenerate/Regenerate.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Regenerate;
|
|
|
4 |
use WebpConverter\Convert as Convert;
|
5 |
|
6 |
class Regenerate
|
1 |
<?php
|
2 |
|
3 |
namespace WebpConverter\Regenerate;
|
4 |
+
|
5 |
use WebpConverter\Convert as Convert;
|
6 |
|
7 |
class Regenerate
|
app/Regenerate/Skip.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WebpConverter\Regenerate;
|
4 |
+
|
5 |
+
use WebpConverter\Convert\Directory as Directory;
|
6 |
+
|
7 |
+
class Skip
|
8 |
+
{
|
9 |
+
public function __construct()
|
10 |
+
{
|
11 |
+
add_filter('webpc_attachment_paths', [$this, 'skipExistsImages']);
|
12 |
+
}
|
13 |
+
|
14 |
+
/* ---
|
15 |
+
Functions
|
16 |
+
--- */
|
17 |
+
|
18 |
+
public function skipExistsImages($paths)
|
19 |
+
{
|
20 |
+
$directory = new Directory();
|
21 |
+
|
22 |
+
foreach ($paths as $key => $path) {
|
23 |
+
$output = $directory->getPath($path, false);
|
24 |
+
if (file_exists($output)) unset($paths[$key]);
|
25 |
+
}
|
26 |
+
return $paths;
|
27 |
+
}
|
28 |
+
}
|
public/build/js/scripts.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){var t={};function r(s){if(t[s])return t[s].exports;var
|
1 |
+
!function(e){var t={};function r(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(s,i,function(t){return e[t]}.bind(null,i));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=0)}([function(e,t,r){r(1),e.exports=r(2)},function(e,t,r){"use strict";function s(e,t){for(var r=0;r<t.length;r++){var s=t[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}r.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.setVars()&&this.setEvents()}var t,r,i;return t=e,(r=[{key:"setVars",value:function(){if(this.notice=document.querySelector(".notice[data-notice=webp-converter]"),this.notice)return this.settings={isHidden:!1,ajaxUrl:this.notice.getAttribute("data-url")},!0}},{key:"setEvents",value:function(){window.addEventListener("load",this.getButtons.bind(this))}},{key:"getButtons",value:function(){this.buttonClose=this.notice.querySelector(".notice-dismiss"),this.buttonPermanently=this.notice.querySelector("[data-permanently]"),this.setButtonsEvents()}},{key:"setButtonsEvents",value:function(){var e=this;this.buttonClose.addEventListener("click",(function(){e.hideNotice(!1)})),this.buttonPermanently.addEventListener("click",(function(t){t.preventDefault(),e.hideNotice(!0)}))}},{key:"hideNotice",value:function(e){this.settings.isHidden||(this.settings.isHidden=!0,jQuery.ajax(this.settings.ajaxUrl,{type:"POST",data:{is_permanently:e?1:0}}),this.buttonClose.click())}}])&&s(t.prototype,r),i&&s(t,i),e}();function n(e,t){for(var r=0;r<t.length;r++){var s=t[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.setVars()&&this.setEvents()}var t,r,s;return t=e,(r=[{key:"setVars",value:function(){if(this.section=document.querySelector(".webpLoader"),this.section)return this.wrapper=this.section.querySelector(".webpLoader__status"),this.progress=this.wrapper.querySelector(".webpLoader__barProgress"),this.progressSize=this.section.querySelector(".webpLoader__sizeProgress"),this.errors=this.section.querySelector(".webpLoader__errors"),this.errorsInner=this.errors.querySelector(".webpLoader__errorsContentList"),this.errorsMessage=this.errors.querySelector(".webpLoader__errorsContentMessage"),this.success=this.section.querySelector(".webpLoader__success"),this.skipOption=this.section.querySelector('input[name="regenerate_skip"]'),this.button=this.section.querySelector(".webpLoader__button"),this.data={count:0,max:0,items:[],size:{before:0,after:0},errors:[]},this.settings={isDisabled:!1,ajax:{urlPaths:this.section.getAttribute("data-api-paths"),urlRegenerate:this.section.getAttribute("data-api-regenerate"),errorMessage:this.section.getAttribute("data-api-error-message")},units:["kB","MB","GB"]},this.atts={progress:"data-percent"},this.classes={progressError:"webpLoader__barProgress--error",buttonDisabled:"webpLoader__button--disabled"},!0}},{key:"setEvents",value:function(){this.button.addEventListener("click",this.initRegenerate.bind(this))}},{key:"initRegenerate",value:function(e){e.preventDefault(),this.settings.isDisabled||(this.settings.isDisabled=!0,this.skipOption.setAttribute("disabled",!0),this.button.classList.add(this.classes.buttonDisabled),this.wrapper.removeAttribute("hidden"),this.getImagesList())}},{key:"getImagesList",value:function(){var e=this;jQuery.ajax(this.settings.ajax.urlPaths,{type:"POST",data:{skip:this.skipOption.checked?1:0}}).done((function(t){e.data.items=t.data,e.data.max=t.data.length,e.regenerateNextImages()})).fail((function(){e.progress.classList.add(e.classes.progressError),e.errorsMessage.removeAttribute("hidden"),e.errors.removeAttribute("hidden")}))}},{key:"regenerateNextImages",value:function(){if(0===this.data.max&&this.updateProgress(),!(this.data.count>=this.data.max)){var e=this.data.items[this.data.count];this.data.count++,this.sendRequest(e)}}},{key:"sendRequest",value:function(e){var t=this;jQuery.ajax(this.settings.ajax.urlRegenerate,{type:"POST",data:{paths:e}}).done((function(e){t.updateErrors(e.errors),t.updateSize(e),t.updateProgress(),t.regenerateNextImages()})).fail((function(){var r=JSON.stringify(e),s=t.settings.ajax.errorMessage.replace("%s","<code>".concat(r,"</code>"));t.updateErrors([s]),t.regenerateNextImages()}))}},{key:"updateErrors",value:function(e){0!==e.length&&(this.data.errors=this.data.errors.concat(e),this.errorsInner.innerHTML=this.data.errors.join("<br>"),this.errors.removeAttribute("hidden"))}},{key:"updateSize",value:function(e){var t=this.data.size;t.before+=e.size.before,t.after+=e.size.after;var r=t.before-t.after;if(r<0&&(r=0),0!==r){var s=Math.round(100*(1-t.after/t.before));s<0&&(s=0);var i=-1;do{i++,r/=1024}while(r>1024);var n=r.toFixed(2),a=this.settings.units[i],o="".concat(n," ").concat(a," (").concat(s,"%)");this.progressSize.innerHTML=o}}},{key:"updateProgress",value:function(){var e=this.data.max>0?Math.floor(this.data.count/this.data.max*100):100;e>100&&(e=100),100===e&&this.success.removeAttribute("hidden"),this.progress.setAttribute(this.atts.progress,e)}}])&&n(t.prototype,r),s&&n(t,s),e}();new function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),new i,new a}},function(e,t){}]);
|
readme.txt
CHANGED
@@ -273,6 +273,11 @@ This is all very important to us and allows us to do even better things for you!
|
|
273 |
|
274 |
== Changelog ==
|
275 |
|
|
|
|
|
|
|
|
|
|
|
276 |
= 1.1.0 (2020-02-10) =
|
277 |
* `[Fixed]` Support for WordPress installation in subdirectory
|
278 |
* `[Fixed]` Error detecting WebP support by Imagick
|
273 |
|
274 |
== Changelog ==
|
275 |
|
276 |
+
= 1.1.1 (2020-02-13) =
|
277 |
+
* `[Changed]` Unknown error handling when converting images
|
278 |
+
* `[Added]` Ability to skip converting existing images when `Regenerate All`
|
279 |
+
* `[Added]` Button for simple checking of server configuration
|
280 |
+
|
281 |
= 1.1.0 (2020-02-10) =
|
282 |
* `[Fixed]` Support for WordPress installation in subdirectory
|
283 |
* `[Fixed]` Error detecting WebP support by Imagick
|
resources/_dev/js/classes/Regenerate.js
CHANGED
@@ -19,6 +19,7 @@ export default class Regenerate
|
|
19 |
this.errorsInner = this.errors.querySelector('.webpLoader__errorsContentList');
|
20 |
this.errorsMessage = this.errors.querySelector('.webpLoader__errorsContentMessage');
|
21 |
this.success = this.section.querySelector('.webpLoader__success');
|
|
|
22 |
this.button = this.section.querySelector('.webpLoader__button');
|
23 |
this.data = {
|
24 |
count: 0,
|
@@ -35,6 +36,7 @@ export default class Regenerate
|
|
35 |
ajax: {
|
36 |
urlPaths: this.section.getAttribute('data-api-paths'),
|
37 |
urlRegenerate: this.section.getAttribute('data-api-regenerate'),
|
|
|
38 |
},
|
39 |
units: ['kB', 'MB', 'GB'],
|
40 |
};
|
@@ -62,6 +64,7 @@ export default class Regenerate
|
|
62 |
e.preventDefault();
|
63 |
if (this.settings.isDisabled) return;
|
64 |
this.settings.isDisabled = true;
|
|
|
65 |
this.button.classList.add(this.classes.buttonDisabled);
|
66 |
|
67 |
this.wrapper.removeAttribute('hidden');
|
@@ -72,7 +75,9 @@ export default class Regenerate
|
|
72 |
{
|
73 |
jQuery.ajax(this.settings.ajax.urlPaths, {
|
74 |
type: 'POST',
|
75 |
-
|
|
|
|
|
76 |
}).done((response) => {
|
77 |
this.data.items = response.data;
|
78 |
this.data.max = response.data.length;
|
@@ -105,25 +110,26 @@ export default class Regenerate
|
|
105 |
paths: items,
|
106 |
},
|
107 |
}).done((response) => {
|
108 |
-
this.updateErrors(response);
|
109 |
this.updateSize(response);
|
110 |
this.updateProgress();
|
111 |
this.regenerateNextImages();
|
112 |
}).fail(() => {
|
113 |
-
|
114 |
-
this.
|
115 |
-
this.
|
|
|
116 |
});
|
117 |
}
|
118 |
|
119 |
/* ---
|
120 |
Status
|
121 |
--- */
|
122 |
-
updateErrors(
|
123 |
{
|
124 |
-
if (
|
125 |
|
126 |
-
this.data.errors = this.data.errors.concat(
|
127 |
this.errorsInner.innerHTML = this.data.errors.join('<br>');
|
128 |
this.errors.removeAttribute('hidden');
|
129 |
}
|
19 |
this.errorsInner = this.errors.querySelector('.webpLoader__errorsContentList');
|
20 |
this.errorsMessage = this.errors.querySelector('.webpLoader__errorsContentMessage');
|
21 |
this.success = this.section.querySelector('.webpLoader__success');
|
22 |
+
this.skipOption = this.section.querySelector('input[name="regenerate_skip"]');
|
23 |
this.button = this.section.querySelector('.webpLoader__button');
|
24 |
this.data = {
|
25 |
count: 0,
|
36 |
ajax: {
|
37 |
urlPaths: this.section.getAttribute('data-api-paths'),
|
38 |
urlRegenerate: this.section.getAttribute('data-api-regenerate'),
|
39 |
+
errorMessage: this.section.getAttribute('data-api-error-message'),
|
40 |
},
|
41 |
units: ['kB', 'MB', 'GB'],
|
42 |
};
|
64 |
e.preventDefault();
|
65 |
if (this.settings.isDisabled) return;
|
66 |
this.settings.isDisabled = true;
|
67 |
+
this.skipOption.setAttribute('disabled', true);
|
68 |
this.button.classList.add(this.classes.buttonDisabled);
|
69 |
|
70 |
this.wrapper.removeAttribute('hidden');
|
75 |
{
|
76 |
jQuery.ajax(this.settings.ajax.urlPaths, {
|
77 |
type: 'POST',
|
78 |
+
data: {
|
79 |
+
skip: this.skipOption.checked ? 1 : 0,
|
80 |
+
},
|
81 |
}).done((response) => {
|
82 |
this.data.items = response.data;
|
83 |
this.data.max = response.data.length;
|
110 |
paths: items,
|
111 |
},
|
112 |
}).done((response) => {
|
113 |
+
this.updateErrors(response.errors);
|
114 |
this.updateSize(response);
|
115 |
this.updateProgress();
|
116 |
this.regenerateNextImages();
|
117 |
}).fail(() => {
|
118 |
+
const json = JSON.stringify(items);
|
119 |
+
const message = this.settings.ajax.errorMessage.replace('%s', `<code>${json}</code>`);
|
120 |
+
this.updateErrors([message]);
|
121 |
+
this.regenerateNextImages();
|
122 |
});
|
123 |
}
|
124 |
|
125 |
/* ---
|
126 |
Status
|
127 |
--- */
|
128 |
+
updateErrors(errors)
|
129 |
{
|
130 |
+
if (errors.length === 0) return;
|
131 |
|
132 |
+
this.data.errors = this.data.errors.concat(errors);
|
133 |
this.errorsInner.innerHTML = this.data.errors.join('<br>');
|
134 |
this.errors.removeAttribute('hidden');
|
135 |
}
|
resources/components/widgets/options.php
CHANGED
@@ -16,10 +16,12 @@
|
|
16 |
<div class="webpPage__widgetRow">
|
17 |
<p>
|
18 |
<?= sprintf(
|
19 |
-
__('If you have a problem %scheck our FAQ%s first. If you did not find help there, please %scheck support forum%s for any similar problem or contact us.', 'webp-converter'),
|
20 |
'<a href="https://wordpress.org/plugins/webp-converter-for-media/#faq" target="_blank">',
|
21 |
'</a>',
|
22 |
'<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank">',
|
|
|
|
|
23 |
'</a>'
|
24 |
); ?>
|
25 |
</p>
|
16 |
<div class="webpPage__widgetRow">
|
17 |
<p>
|
18 |
<?= sprintf(
|
19 |
+
__('If you have a problem %scheck our FAQ%s first. If you did not find help there, please %scheck support forum%s for any similar problem or contact us. Before you contact us %scheck the configuration%s of your server.', 'webp-converter'),
|
20 |
'<a href="https://wordpress.org/plugins/webp-converter-for-media/#faq" target="_blank">',
|
21 |
'</a>',
|
22 |
'<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank">',
|
23 |
+
'</a>',
|
24 |
+
'<a href="' . sprintf('%s&action=server', menu_page_url('webpc_admin_page', false)) . '">',
|
25 |
'</a>'
|
26 |
); ?>
|
27 |
</p>
|
resources/components/widgets/regenerate.php
CHANGED
@@ -7,11 +7,16 @@
|
|
7 |
<?= __('Regenerate images', 'webp-converter'); ?>
|
8 |
</h3>
|
9 |
<div class="webpLoader webpContent"
|
10 |
-
data-api-paths="<?= $apiPaths; ?>"
|
|
|
|
|
11 |
<div class="webpPage__widgetRow">
|
12 |
<p>
|
13 |
<?= __('Convert all existing images with just one click! This tool uses the WordPress REST API by downloading addresses of all images and converting all files gradually. This is a process that may take a few or more than ten minutes depending on the number of files. During this process, please do not close your browser window.', 'webp-converter'); ?>
|
14 |
</p>
|
|
|
|
|
|
|
15 |
<div class="webpLoader__status" hidden>
|
16 |
<div class="webpLoader__bar">
|
17 |
<div class="webpLoader__barProgress" data-percent="0">
|
@@ -39,6 +44,20 @@
|
|
39 |
</div>
|
40 |
</div>
|
41 |
<div class="webpPage__widgetRow">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
<button type="button" target="_blank"
|
43 |
class="webpLoader__button webpButton webpButton--green"
|
44 |
<?= (apply_filters('webpc_server_errors', [])) ? 'disabled' : ''; ?>>
|
7 |
<?= __('Regenerate images', 'webp-converter'); ?>
|
8 |
</h3>
|
9 |
<div class="webpLoader webpContent"
|
10 |
+
data-api-paths="<?= $apiPaths; ?>"
|
11 |
+
data-api-regenerate="<?= $apiRegenerate; ?>"
|
12 |
+
data-api-error-message="<?= __('An unknown error occurred while converting the images: %s', 'webp-converter'); ?>">
|
13 |
<div class="webpPage__widgetRow">
|
14 |
<p>
|
15 |
<?= __('Convert all existing images with just one click! This tool uses the WordPress REST API by downloading addresses of all images and converting all files gradually. This is a process that may take a few or more than ten minutes depending on the number of files. During this process, please do not close your browser window.', 'webp-converter'); ?>
|
16 |
</p>
|
17 |
+
<p>
|
18 |
+
<?= __('This operation should be performed only once after installing the plugin. New images will be converted automatically.', 'webp-converter'); ?>
|
19 |
+
</p>
|
20 |
<div class="webpLoader__status" hidden>
|
21 |
<div class="webpLoader__bar">
|
22 |
<div class="webpLoader__barProgress" data-percent="0">
|
44 |
</div>
|
45 |
</div>
|
46 |
<div class="webpPage__widgetRow">
|
47 |
+
<table class="webpPage__widgetTable">
|
48 |
+
<tr>
|
49 |
+
<td>
|
50 |
+
<input type="checkbox" name="regenerate_skip" value="1"
|
51 |
+
id="webpc-regenerate-skip" class="webpPage__checkbox">
|
52 |
+
<label for="webpc-regenerate-skip"></label>
|
53 |
+
</td>
|
54 |
+
<td>
|
55 |
+
<label for="webpc-regenerate-skip" class="webpPage__checkboxLabel">
|
56 |
+
<?= __('Skip converted images', 'webp-converter'); ?>
|
57 |
+
</label>
|
58 |
+
</td>
|
59 |
+
</tr>
|
60 |
+
</table>
|
61 |
<button type="button" target="_blank"
|
62 |
class="webpLoader__button webpButton webpButton--green"
|
63 |
<?= (apply_filters('webpc_server_errors', [])) ? 'disabled' : ''; ?>>
|
resources/components/widgets/server.php
CHANGED
@@ -8,6 +8,12 @@
|
|
8 |
</h3>
|
9 |
<div class="webpContent">
|
10 |
<div class="webpPage__widgetRow">
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
<a href="<?= $pageUrl; ?>" class="webpLoader__button webpButton webpButton--blue">
|
12 |
<?= __('Back to settings', 'webp-converter'); ?>
|
13 |
</a>
|
8 |
</h3>
|
9 |
<div class="webpContent">
|
10 |
<div class="webpPage__widgetRow">
|
11 |
+
<p>
|
12 |
+
<?= sprintf(__('Please compare your configuration with the configuration that is given in the technical requirements in %sthe plugin FAQ%s. If your server does not meet the technical requirements, please contact your server Administrator.', 'webp-converter'),
|
13 |
+
'<a href="https://wordpress.org/plugins/webp-converter-for-media/#faq" target="_blank">',
|
14 |
+
'</a>'
|
15 |
+
); ?>
|
16 |
+
</p>
|
17 |
<a href="<?= $pageUrl; ?>" class="webpLoader__button webpButton webpButton--blue">
|
18 |
<?= __('Back to settings', 'webp-converter'); ?>
|
19 |
</a>
|
resources/components/widgets/support.php
CHANGED
@@ -1,6 +1,3 @@
|
|
1 |
-
<?php
|
2 |
-
$infoUrl = menu_page_url('webpc_admin_page', false) . '&action=server';
|
3 |
-
?>
|
4 |
<div class="webpPage__widget">
|
5 |
<h3 class="webpPage__widgetTitle webpPage__widgetTitle--second">
|
6 |
<?= __('We are waiting for your message', 'webp-converter'); ?>
|
@@ -11,16 +8,17 @@
|
|
11 |
</p>
|
12 |
<p>
|
13 |
<?= sprintf(
|
14 |
-
__('Please %scheck our FAQ%s before adding a thread with technical problem. If you do not find help there, %scheck support forum%s for similar problems.
|
15 |
'<a href="https://wordpress.org/plugins/webp-converter-for-media/#faq" target="_blank">',
|
16 |
'</a>',
|
17 |
'<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank">',
|
18 |
-
'</a>',
|
19 |
-
'<a href="' . $infoUrl . '">',
|
20 |
'</a>'
|
21 |
); ?>
|
22 |
</p>
|
23 |
<p>
|
|
|
|
|
|
|
24 |
<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank" class="webpButton webpButton--blue">
|
25 |
<?= __('Get help', 'webp-converter'); ?>
|
26 |
</a>
|
|
|
|
|
|
|
1 |
<div class="webpPage__widget">
|
2 |
<h3 class="webpPage__widgetTitle webpPage__widgetTitle--second">
|
3 |
<?= __('We are waiting for your message', 'webp-converter'); ?>
|
8 |
</p>
|
9 |
<p>
|
10 |
<?= sprintf(
|
11 |
+
__('Please %scheck our FAQ%s before adding a thread with technical problem. If you do not find help there, %scheck support forum%s for similar problems. Before you contact us check the configuration of your server and attach it in your message, e.g. as a screenshot.', 'webp-converter'),
|
12 |
'<a href="https://wordpress.org/plugins/webp-converter-for-media/#faq" target="_blank">',
|
13 |
'</a>',
|
14 |
'<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank">',
|
|
|
|
|
15 |
'</a>'
|
16 |
); ?>
|
17 |
</p>
|
18 |
<p>
|
19 |
+
<a href="<?= sprintf('%s&action=server', menu_page_url('webpc_admin_page', false)); ?>" class="webpButton webpButton--blue">
|
20 |
+
<?= __('Server configuration', 'webp-converter'); ?>
|
21 |
+
</a>
|
22 |
<a href="https://wordpress.org/support/plugin/webp-converter-for-media/" target="_blank" class="webpButton webpButton--blue">
|
23 |
<?= __('Get help', 'webp-converter'); ?>
|
24 |
</a>
|
webp-converter-for-media.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
/*
|
4 |
Plugin Name: WebP Converter for Media
|
5 |
Description: Speed up your website by serving WebP images instead of standard formats JPEG, PNG and GIF.
|
6 |
-
Version: 1.1.
|
7 |
Author: Mateusz Gbiorczyk
|
8 |
Author URI: https://gbiorczyk.pl/
|
9 |
Text Domain: webp-converter
|
10 |
*/
|
11 |
|
12 |
-
define('WEBPC_VERSION', '1.1.
|
13 |
define('WEBPC_FILE', __FILE__);
|
14 |
define('WEBPC_NAME', plugin_basename(__FILE__));
|
15 |
define('WEBPC_PATH', plugin_dir_path(__FILE__));
|
3 |
/*
|
4 |
Plugin Name: WebP Converter for Media
|
5 |
Description: Speed up your website by serving WebP images instead of standard formats JPEG, PNG and GIF.
|
6 |
+
Version: 1.1.1
|
7 |
Author: Mateusz Gbiorczyk
|
8 |
Author URI: https://gbiorczyk.pl/
|
9 |
Text Domain: webp-converter
|
10 |
*/
|
11 |
|
12 |
+
define('WEBPC_VERSION', '1.1.1');
|
13 |
define('WEBPC_FILE', __FILE__);
|
14 |
define('WEBPC_NAME', plugin_basename(__FILE__));
|
15 |
define('WEBPC_PATH', plugin_dir_path(__FILE__));
|