Skip to content

Commit

Permalink
Added media switcher to allow the user the use the default image inst…
Browse files Browse the repository at this point in the history
…ead of webp
  • Loading branch information
hallowichig0 committed Feb 14, 2023
1 parent 7f94f3f commit 9fde76c
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 32 deletions.
12 changes: 12 additions & 0 deletions gd-webp-converter.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,15 @@
$clover->register();

add_action('init', [$clover, 'boot']);

add_action('plugins_loaded', function() {
if (!class_exists('acf')) {
deactivate_plugins('gd-webp-converter/gd-webp-converter.php');
add_action( 'admin_notices', function() {
$class = 'notice notice-error';
$message = __( 'ACF Class not found!', 'gd-webp-converter' );

printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
} );
}
});
76 changes: 44 additions & 32 deletions src/Providers/ConvertAttachmentServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,15 @@ public function register()

public function gd_webp_converter_image_attachment_src( $image, $id, $size, $icon ) {
$getFile = get_attached_file($id);
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $image);
$mediaSwitcher = get_field('gd_webp_mime_type_switcher', $id);
if(!$mediaSwitcher) {
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $image);
}
}
}
}
Expand All @@ -33,12 +36,15 @@ public function gd_webp_converter_image_attachment_src( $image, $id, $size, $ico

public function gd_webp_converter_image_attachment_url( $url, $id ) {
$getFile = get_attached_file($id);
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $url);
$mediaSwitcher = get_field('gd_webp_mime_type_switcher', $id);
if(!$mediaSwitcher) {
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $url);
}
}
}
}
Expand All @@ -47,21 +53,24 @@ public function gd_webp_converter_image_attachment_url( $url, $id ) {

public function gd_webp_converter_image_srcset($sources, $size_array, $image_src, $image_meta, $attachment_id) {
$getFile = get_attached_file($attachment_id);
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
$images = [];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
foreach($sources as $source) {
$src = str_replace(['.png', '.jpg', '.jpeg'], '.webp', $source['url']);
$images[] = [
'url' => $src,
'descriptor' => $source['descriptor'],
'value' => $source['value']
];
$mediaSwitcher = get_field('gd_webp_mime_type_switcher', $attachment_id);
if(!$mediaSwitcher) {
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
$images = [];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
foreach($sources as $source) {
$src = str_replace(['.png', '.jpg', '.jpeg'], '.webp', $source['url']);
$images[] = [
'url' => $src,
'descriptor' => $source['descriptor'],
'value' => $source['value']
];
}
return $images;
}
return $images;
}
}
}
Expand All @@ -70,12 +79,15 @@ public function gd_webp_converter_image_srcset($sources, $size_array, $image_src

public function gd_webp_converter_attachment_metadata($data, $attachment_id) {
$getFile = get_attached_file($attachment_id);
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $data);
$mediaSwitcher = get_field('gd_webp_mime_type_switcher', $attachment_id);
if(!$mediaSwitcher) {
if($getFile) {
$getFileInfo = pathinfo($getFile);
$imgExtArr = ['jpg', 'jpeg', 'png'];
if(in_array($getFileInfo['extension'], $imgExtArr)) {
if (file_exists($getFileInfo['dirname'] . '/' . $getFileInfo['filename'] . '.webp')) {
return str_replace(['.png', '.jpg', '.jpeg'], '.webp', $data);
}
}
}
}
Expand Down
68 changes: 68 additions & 0 deletions src/Providers/FieldsServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

namespace GdWebpConverter\Providers;

class FieldsServiceProvider implements Provider
{
public function __construct()
{
add_action('acf/init', [$this, 'gd_webp_converter_fields']);
}

public function register()
{
//
}

public function gd_webp_converter_fields() {
if (!function_exists('acf_add_options_page')) {
return;
}

acf_add_local_field_group(array(
'key' => 'group_gd_webp_converter_media_settings',
'title' => 'GD Webp Media Settings',
'fields' => array (),
'position' => 'normal',
'menu_order' => 0,
'label_placement' => 'top',
'style' => 'default',
'active' => true,
'description' => '',
'location' => array (
array (
array (
'param' => 'attachment',
'operator' => '==',
'value' => 'image/jpeg',
),
),
array(
array(
'param' => 'attachment',
'operator' => '==',
'value' => 'image/png',
),
),
),
));

acf_add_local_field(array(
'key' => 'field_gd_webp_converter_media_settings_gd_webp_mime_type_switcher',
'label' => 'Use original image?',
'name' => 'gd_webp_mime_type_switcher',
'type' => 'true_false',
'required' => 0,
'wrapper' => [
'width' => '',
'class' => '',
'id' => '',
],
'default_value' => 0,
'ui' => 1,
'ui_on_text' => '',
'ui_off_text' => '',
'parent' => 'group_gd_webp_converter_media_settings',
));
}
}
1 change: 1 addition & 0 deletions src/Providers/GdWebpConverterServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ protected function providers()
return [
GdDefaultServiceProvider::class,
ConverterServiceProvider::class,
FieldsServiceProvider::class,
ConvertAttachmentServiceProvider::class,
];
}
Expand Down

0 comments on commit 9fde76c

Please sign in to comment.