Changeset 3319728
- Timestamp:
- 06/30/2025 07:13:34 AM (9 months ago)
- Location:
- webp-converter
- Files:
-
- 35 added
- 6 edited
-
tags/2.0.0 (added)
-
tags/2.0.0/config (added)
-
tags/2.0.0/config/config.php (added)
-
tags/2.0.0/css (added)
-
tags/2.0.0/css/jquery-ui.css (added)
-
tags/2.0.0/css/webp-admin.css (added)
-
tags/2.0.0/functions.php (added)
-
tags/2.0.0/images (added)
-
tags/2.0.0/images/done.png (added)
-
tags/2.0.0/images/error.png (added)
-
tags/2.0.0/images/loading.gif (added)
-
tags/2.0.0/images/rss.png (added)
-
tags/2.0.0/images/wait.png (added)
-
tags/2.0.0/includes (added)
-
tags/2.0.0/includes/class-activate.php (added)
-
tags/2.0.0/includes/class-htserve.php (added)
-
tags/2.0.0/includes/class-scripts.php (added)
-
tags/2.0.0/includes/class-settings.php (added)
-
tags/2.0.0/index.php (added)
-
tags/2.0.0/js (added)
-
tags/2.0.0/js/ap-tabs.js (added)
-
tags/2.0.0/js/ap.cookie.js (added)
-
tags/2.0.0/js/webp.js (added)
-
tags/2.0.0/languages (added)
-
tags/2.0.0/languages/webp-converter.pot (added)
-
tags/2.0.0/readme.txt (added)
-
tags/2.0.0/view (added)
-
tags/2.0.0/view/admin (added)
-
tags/2.0.0/view/admin/converter-data.php (added)
-
tags/2.0.0/view/admin/help.php (added)
-
tags/2.0.0/view/admin/image-item.php (added)
-
tags/2.0.0/view/admin/image-sub-item.php (added)
-
tags/2.0.0/view/admin/pro-add.php (added)
-
tags/2.0.0/view/admin/settings.php (added)
-
tags/2.0.0/webp-converter.php (added)
-
trunk/includes/class-activate.php (modified) (1 diff)
-
trunk/includes/class-htserve.php (modified) (11 diffs)
-
trunk/includes/class-scripts.php (modified) (2 diffs)
-
trunk/includes/class-settings.php (modified) (8 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/webp-converter.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
webp-converter/trunk/includes/class-activate.php
r2597750 r3319728 1 1 <?php 2 namespace WEBP\Activate;3 use WEBP\Htserve as Htserve;4 2 5 class APWEBP_Activate { 3 class APWEBP_Activate 4 { 6 5 7 static function webp_install() { 6 public static function webp_install() 7 { 8 8 update_option('apwebp_image_quality', 50); 9 9 } 10 10 11 static function webp_uninstall() { 12 $hts = new Htserve\APWEBP_Htserve; 11 public static function webp_uninstall() 12 { 13 $hts = new APWEBP_Htserve; 13 14 $hts->remove_ht_data(); 14 15 delete_option('apwebp_use_htaccess'); -
webp-converter/trunk/includes/class-htserve.php
r2597187 r3319728 1 1 <?php 2 namespace WEBP\Htserve; 3 4 class APWEBP_Htserve{2 3 class APWEBP_Htserve 4 { 5 5 6 6 public $wp_content_dir = ''; 7 public $wp_content_ht = ''; 8 public $uploads_dir = ''; 9 public $uploads_ht = ''; 10 public $ht_pre = '## START WEBP CONVERTER ##'; 11 public $ht_post = '## END WEBP CONVERTER ##'; 12 13 public function __construct() { 7 public $wp_content_ht = ''; 8 public $uploads_dir = ''; 9 public $uploads_ht = ''; 10 public $ht_pre = '## START WEBP CONVERTER ##'; 11 public $ht_post = '## END WEBP CONVERTER ##'; 12 13 public function __construct() 14 { 14 15 $this->wp_content_dir = WP_CONTENT_DIR; 15 $this->wp_content_ht = $this->wp_content_dir . '/' . '.htaccess'; 16 $upload_dir = wp_upload_dir(); 17 $this->uploads_dir = $upload_dir['basedir']; 18 $this->uploads_ht = $this->uploads_dir . '/' . '.htaccess'; 19 add_action('apwebp_save_settings', array($this, 'use_htaccess')); 20 } 21 22 public function use_htaccess() { 16 $this->wp_content_ht = $this->wp_content_dir . '/' . '.htaccess'; 17 $upload_dir = wp_upload_dir(); 18 $this->uploads_dir = $upload_dir['basedir']; 19 $this->uploads_ht = $this->uploads_dir . '/' . '.htaccess'; 20 add_action('apwebp_save_settings', [$this, 'use_htaccess']); 21 } 22 23 public function use_htaccess() 24 { 23 25 24 26 $wpc_ht_created = false; … … 32 34 $this->remove_ht_data(); 33 35 delete_option('apwebp_use_htaccess'); 34 add_filter('webp_msg_filter', array($this, 'files_removed'), 10, 1);36 add_filter('webp_msg_filter', [$this, 'files_removed'], 10, 1); 35 37 } 36 38 37 39 if ($wpc_ht_created and $wpu_ht_created) { 38 add_filter('webp_msg_filter', array($this, 'files_created'), 10, 1); 39 } 40 41 } 42 43 function add_wpc_ht_data() { 40 add_filter('webp_msg_filter', [$this, 'files_created'], 10, 1); 41 } 42 43 } 44 45 public function add_wpc_ht_data() 46 { 44 47 if (is_writable($this->wp_content_dir)) { 45 48 if ($this->is_wpc_ht_exists()) { … … 58 61 return true; 59 62 } else { 60 add_filter('webp_msg_filter', array($this, 'file_not_writable'), 10, 1);63 add_filter('webp_msg_filter', [$this, 'file_not_writable'], 10, 1); 61 64 } 62 65 return false; 63 66 } 64 67 65 function add_wpu_ht_data() { 68 public function add_wpu_ht_data() 69 { 66 70 if (is_writable($this->uploads_dir)) { 67 71 if ($this->is_wpu_ht_exists()) { … … 80 84 return true; 81 85 } else { 82 add_filter('webp_msg_filter', array($this, 'file_not_writable_uploads'), 10, 1);86 add_filter('webp_msg_filter', [$this, 'file_not_writable_uploads'], 10, 1); 83 87 } 84 88 return false; 85 89 } 86 90 87 public function remove_ht_data() { 91 public function remove_ht_data() 92 { 88 93 if ($this->is_wpc_ht_exists()) { 89 94 $oldht_data = file_get_contents($this->wp_content_ht); … … 102 107 } 103 108 104 public function get_wpc_ht_data() { 109 public function get_wpc_ht_data() 110 { 105 111 $data = PHP_EOL; 106 112 $data .= '<IfModule mod_rewrite.c>' . PHP_EOL; … … 129 135 } 130 136 131 public function get_wpu_ht_data() { 137 public function get_wpu_ht_data() 138 { 132 139 $data = PHP_EOL; 133 140 $data .= '<IfModule mod_rewrite.c>' . PHP_EOL; … … 156 163 } 157 164 158 public function is_wpc_ht_exists() { 165 public function is_wpc_ht_exists() 166 { 159 167 if (is_file($this->wp_content_ht)) { 160 168 return true; … … 164 172 } 165 173 166 public function is_wpu_ht_exists() { 174 public function is_wpu_ht_exists() 175 { 167 176 if (is_file($this->uploads_ht)) { 168 177 return true; … … 172 181 } 173 182 174 public function get_wpc_ht_data_to_user() { 175 if (!$this->is_wpc_ht_exists() or !is_writable($this->wp_content_dir)) { 183 public function get_wpc_ht_data_to_user() 184 { 185 if (! $this->is_wpc_ht_exists() or ! is_writable($this->wp_content_dir)) { 176 186 return nl2br(stripslashes(esc_html($this->ht_pre . $this->get_wpc_ht_data() . $this->ht_post))); 177 187 } else { … … 180 190 } 181 191 182 public function get_wpu_ht_data_to_user() { 183 if (!$this->is_wpu_ht_exists() or !is_writable($this->uploads_dir)) { 192 public function get_wpu_ht_data_to_user() 193 { 194 if (! $this->is_wpu_ht_exists() or ! is_writable($this->uploads_dir)) { 184 195 return nl2br(stripslashes(esc_html($this->ht_pre . $this->get_wpu_ht_data() . $this->ht_post))); 185 196 } else { … … 188 199 } 189 200 190 public function file_not_writable($msg) { 201 public function file_not_writable($msg) 202 { 191 203 return $msg . '<font color="red">' . __('/wp-content/ dir not writable. Please check if the dir has correct permissions.', 'webp-converter') . '</font>' . '<br>'; 192 204 } 193 205 194 public function file_not_writable_uploads($msg) { 206 public function file_not_writable_uploads($msg) 207 { 195 208 return $msg . '<font color="red">' . __('/uploads/ dir not writable. Please check if the dir has correct permissions.', 'webp-converter') . '</font>' . '<br>'; 196 209 } 197 210 198 public function files_created($msg) { 211 public function files_created($msg) 212 { 199 213 return $msg . '<font color="green">' . __('.htaccess files are created successfully.', 'webp-converter') . '</font>' . '<br>'; 200 214 } 201 215 202 public function files_removed($msg) { 216 public function files_removed($msg) 217 { 203 218 return $msg . '<font color="red">' . __('Images will not be served as webp by .htaccess', 'webp-converter') . '</font>' . '<br>'; 204 219 } -
webp-converter/trunk/includes/class-scripts.php
r2593052 r3319728 1 1 <?php 2 namespace WEBP\Scripts;3 2 4 class APWEBP_Converter_Scripts { 3 class APWEBP_Converter_Scripts 4 { 5 5 6 public function __construct() { 7 add_action('admin_enqueue_scripts', array($this, 'additional_scripts_admin')); 6 public function __construct() 7 { 8 add_action('admin_enqueue_scripts', [$this, 'additional_scripts_admin']); 8 9 } 9 10 10 public function additional_scripts_admin() { 11 public function additional_scripts_admin() 12 { 11 13 wp_enqueue_script('jquery-ui-tooltip'); 12 14 wp_enqueue_script('ap.cookie', plugins_url(APWEBP_DIRECTORY_NAME . '/js/ap.cookie.js')); … … 14 16 15 17 wp_register_script('webp', plugins_url(APWEBP_DIRECTORY_NAME . '/js/webp.js')); 16 wp_localize_script('webp', 'apwebp_ajax', array('ajaxurl' => admin_url('admin-ajax.php'), 'pluginimg' => plugins_url(APWEBP_DIRECTORY_NAME . '/images/')));18 wp_localize_script('webp', 'apwebp_ajax', ['ajaxurl' => admin_url('admin-ajax.php'), 'pluginimg' => plugins_url(APWEBP_DIRECTORY_NAME . '/images/')]); 17 19 wp_enqueue_script('webp'); 18 20 -
webp-converter/trunk/includes/class-settings.php
r2597750 r3319728 1 1 <?php 2 namespace WEBP\Settings; 3 use WEBP\Htserve as Htserve; 4 5 class APWEBP_Converter_Settings { 6 7 public function __construct() { 8 add_action('admin_menu', array($this, 'admin_menu')); 9 add_action('wp_ajax_webpDoConvert', array($this, 'apwebp_do_convert')); 10 add_action('wp_ajax_webpPluginStatus', array($this, 'apwebp_plugin_status')); 11 add_action('admin_init', array($this, 'apwebp_options_save_settings')); 12 add_filter('set-screen-option', array($this, 'apwebp_set_screen_option'), 10, 3); 13 } 14 15 public function apwebp_options_save_settings() { 2 3 class APWEBP_Converter_Settings 4 { 5 6 public function __construct() 7 { 8 add_action('admin_menu', [$this, 'admin_menu']); 9 add_action('wp_ajax_webpDoConvert', [$this, 'apwebp_do_convert']); 10 add_action('wp_ajax_webpPluginStatus', [$this, 'apwebp_plugin_status']); 11 add_action('admin_init', [$this, 'apwebp_options_save_settings']); 12 add_filter('set-screen-option', [$this, 'apwebp_set_screen_option'], 10, 3); 13 } 14 15 public function apwebp_options_save_settings() 16 { 16 17 if (isset($_POST['option']) and sanitize_text_field($_POST['option']) == "apwebp_save_settings") { 17 18 18 if (! isset($_POST['apwebp_options_save_action_field']) || !wp_verify_nonce($_POST['apwebp_options_save_action_field'], 'apwebp_options_save_action')) {19 if (! isset($_POST['apwebp_options_save_action_field']) || ! wp_verify_nonce($_POST['apwebp_options_save_action_field'], 'apwebp_options_save_action')) { 19 20 wp_die('Sorry, your nonce did not verify.'); 20 21 } … … 44 45 } 45 46 46 public function admin_menu() { 47 public function admin_menu() 48 { 47 49 global $apwebp_list_page; 48 $apwebp_list_page = add_menu_page('WEBP Converter', 'WEBP Converter', 'manage_options', 'apwebp_converter_setup_data', array($this, 'converter_data'), 'dashicons-admin-tools'); 49 add_action("load-$apwebp_list_page", array($this, "apwebp_listing_screen_options")); 50 add_submenu_page('apwebp_converter_setup_data', 'Settings', 'Settings', 'activate_plugins', 'apwebp_converter_settings', array($this, 'settings')); 51 } 52 53 public function apwebp_set_screen_option($status, $option, $value) { 50 $apwebp_list_page = add_menu_page('WEBP Converter', 'WEBP Converter', 'manage_options', 'apwebp_converter_setup_data', [$this, 'converter_data'], 'dashicons-admin-tools'); 51 add_action("load-$apwebp_list_page", [$this, "apwebp_listing_screen_options"]); 52 add_submenu_page('apwebp_converter_setup_data', 'Settings', 'Settings', 'activate_plugins', 'apwebp_converter_settings', [$this, 'settings']); 53 } 54 55 public function apwebp_set_screen_option($status, $option, $value) 56 { 54 57 if ('images_per_page' == $option) { 55 58 return $value; … … 57 60 } 58 61 59 public function apwebp_listing_screen_options() { 62 public function apwebp_listing_screen_options() 63 { 60 64 global $apwebp_list_page; 61 65 $screen = get_current_screen(); 62 if (! is_object($screen) || $screen->id != $apwebp_list_page) {66 if (! is_object($screen) || $screen->id != $apwebp_list_page) { 63 67 return; 64 68 } 65 $args = array(66 'label' => __('Images per page', 'webp-converter'),69 $args = [ 70 'label' => __('Images per page', 'webp-converter'), 67 71 'default' => 5, 68 'option' => 'images_per_page',69 );72 'option' => 'images_per_page', 73 ]; 70 74 add_screen_option('per_page', $args); 71 75 } 72 76 73 public function pro_add() { 77 public function pro_add() 78 { 74 79 include APWEBP_DIRECTORY_PATH . '/view/admin/pro-add.php'; 75 80 } 76 81 77 public function help_support() { 82 public function help_support() 83 { 78 84 include APWEBP_DIRECTORY_PATH . '/view/admin/help.php'; 79 85 } 80 86 81 public function converter_data() { 87 public function converter_data() 88 { 82 89 global $id_spliter; 83 $user = get_current_user_id();84 $screen = get_current_screen();90 $user = get_current_user_id(); 91 $screen = get_current_screen(); 85 92 $screen_option = $screen->get_option('per_page', 'option'); 86 $per_page = get_user_meta($user, $screen_option, true);93 $per_page = get_user_meta($user, $screen_option, true); 87 94 include APWEBP_DIRECTORY_PATH . '/view/admin/converter-data.php'; 88 95 } 89 96 90 public function settings() { 91 $hts = new Htserve\APWEBP_Htserve; 97 public function settings() 98 { 99 $hts = new APWEBP_Htserve; 92 100 include APWEBP_DIRECTORY_PATH . '/view/admin/settings.php'; 93 101 } 94 102 95 function call_web_service($url, $data = [], $headers = []) { 96 $response = wp_remote_post($url, array( 97 'body' => json_encode($data), 103 public function call_web_service($url, $data = [], $headers = []) 104 { 105 $response = wp_remote_post($url, [ 106 'body' => json_encode($data), 98 107 'headers' => $headers, 99 ));108 ]); 100 109 if (is_wp_error($response)) { 101 110 return; … … 105 114 } 106 115 107 public function apwebp_do_convert() { 116 public function apwebp_do_convert() 117 { 108 118 global $id_spliter, $apwebp_token, $apwebp_api_base; 109 119 110 $rid = sanitize_text_field($_POST['id']);120 $rid = sanitize_text_field($_POST['id']); 111 121 $thumb_type = ''; 112 122 if (strpos($rid, $id_spliter) !== false) { 113 $id_exp = explode($id_spliter, $rid);123 $id_exp = explode($id_spliter, $rid); 114 124 $thumb_type = $id_exp[0]; 115 $id = $id_exp[1];125 $id = $id_exp[1]; 116 126 } else { 117 127 $id = $rid; 118 128 } 119 129 120 $upload_dir = wp_upload_dir();130 $upload_dir = wp_upload_dir(); 121 131 $image_datas = wp_get_attachment_metadata($id); 122 $info = pathinfo($image_datas['file']);123 $file_dir = $info['dirname'];124 $base_dir = $upload_dir['basedir'];132 $info = pathinfo($image_datas['file']); 133 $file_dir = $info['dirname']; 134 $base_dir = $upload_dir['basedir']; 125 135 126 136 $url = $apwebp_api_base . 'convert-free.php'; 127 137 128 $headers = array(129 'token' => $apwebp_token,138 $headers = [ 139 'token' => $apwebp_token, 130 140 'Content-Type' => 'application/json', 131 );141 ]; 132 142 133 143 if ($thumb_type == '') { 134 144 $filename_no_ext = $info['filename']; 135 $filename_ext = $info['basename'];136 $file_full_url = $upload_dir['baseurl'] . '/' . $file_dir . '/' . $filename_ext;145 $filename_ext = $info['basename']; 146 $file_full_url = $upload_dir['baseurl'] . '/' . $file_dir . '/' . $filename_ext; 137 147 138 148 $post = [ 139 'url' => $file_full_url,149 'url' => $file_full_url, 140 150 'quality' => get_option('apwebp_image_quality'), 141 151 ]; … … 143 153 $response = $this->call_web_service($url, $post, $headers); 144 154 } else { 145 $thumb_file = $image_datas['sizes'][$thumb_type];146 $info_thumb = pathinfo($thumb_file['file']);155 $thumb_file = $image_datas['sizes'][$thumb_type]; 156 $info_thumb = pathinfo($thumb_file['file']); 147 157 $filename_no_ext = $info_thumb['filename']; 148 $filename_ext = $info_thumb['basename'];149 $file_full_url = $upload_dir['baseurl'] . '/' . $file_dir . '/' . $filename_ext;158 $filename_ext = $info_thumb['basename']; 159 $file_full_url = $upload_dir['baseurl'] . '/' . $file_dir . '/' . $filename_ext; 150 160 151 161 $post = [ 152 'url' => $file_full_url,162 'url' => $file_full_url, 153 163 'quality' => get_option('apwebp_image_quality'), 154 164 ]; … … 156 166 } 157 167 158 $data = unserialize($response);168 $data = json_decode($response, true); 159 169 160 170 if ($data['status'] == 'success') { 161 171 if (is_writable($base_dir . '/' . $file_dir)) { 162 172 $fp = fopen($base_dir . '/' . $file_dir . '/' . $filename_no_ext . '.webp', 'w'); 163 fwrite($fp, $data['image']); 173 174 $base64_image = $data['image']; 175 $base64 = preg_replace('#^data:image/webp;base64,#', '', $base64_image); 176 $image_data = base64_decode($base64); 177 178 fwrite($fp, $image_data); 164 179 fclose($fp); 165 echo json_encode( array('status' => 'success', 'msg' => '<font color="green">' . $data['msg'] . '</font>'));166 } else { 167 echo json_encode( array('status' => 'error', 'msg' => '<font color="red">Image not created</font>'));168 } 169 } else { 170 echo json_encode( array('status' => 'error', 'msg' => '<font color="red">' . $data['msg'] . '</font>'));180 echo json_encode(['status' => 'success', 'msg' => '<font color="green">' . $data['msg'] . '</font>']); 181 } else { 182 echo json_encode(['status' => 'error', 'msg' => '<font color="red">Image not created</font>']); 183 } 184 } else { 185 echo json_encode(['status' => 'error', 'msg' => '<font color="red">' . $data['msg'] . '</font>']); 171 186 } 172 187 … … 174 189 } 175 190 176 public function apwebp_plugin_status() { 177 $m = ''; 191 public function apwebp_plugin_status() 192 { 193 $m = ''; 178 194 $ret = curl_response_aviplugins(AP_API_BASE . 'api.php?option=webp_free_status_check&site_url=' . urlencode(site_url('/'))); 179 195 if ($ret->status == 'success') { … … 182 198 $m = $ret->msg; 183 199 } 184 echo json_encode( array('status' => 'success', 'msg' => $m));200 echo json_encode(['status' => 'success', 'msg' => $m]); 185 201 wp_die(); 186 202 } -
webp-converter/trunk/readme.txt
r2723761 r3319728 4 4 Tags: webp, nextgen, converter, image, images, media, image converter, seed, speed up, google page speeds, gtmatrix, fast page load, fast site, super fast site 5 5 Requires at least: 2.0.2 6 Tested up to: 5.9.37 Stable tag: 1.0.16 Tested up to: 6.8.1 7 Stable tag: 2.0.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 44 44 == Changelog == 45 45 46 = 2.0.0 = 47 * Bug fixes for wordpress > 6 and PHP > 7 48 46 49 = 1.0.1 = 47 50 * Now embedded images can be served as webp using .htaccess -
webp-converter/trunk/webp-converter.php
r2597750 r3319728 4 4 Plugin URI: # 5 5 Description: Speed up your website by serving images in WebP format. This plugin will replace files in standard JPEG, PNG and GIF formats with WebP format. 6 Version: 1.0.16 Version: 2.0.0 7 7 Text Domain: webp-converter 8 8 Domain Path: /languages … … 18 18 */ 19 19 20 namespace WEBP\Init;21 use WEBP\Activate as Activate;22 use WEBP\Htserve as Htserve;23 use WEBP\Init as Init;24 use WEBP\Scripts as Scripts;25 use WEBP\Settings as Settings;26 27 20 define('APWEBP_NAME', 'Webp Converter'); 28 21 define('APWEBP_DIRECTORY_NAME', 'webp-converter'); 29 22 define('APWEBP_DIRECTORY_PATH', dirname(__FILE__)); 30 if (! defined('AP_SITE')) {23 if (! defined('AP_SITE')) { 31 24 define('AP_SITE', 'https://www.aviplugins.com/'); 32 25 } 33 if (! defined('AP_API_BASE')) {26 if (! defined('AP_API_BASE')) { 34 27 define('AP_API_BASE', AP_SITE . 'api/'); 35 28 } … … 37 30 include_once APWEBP_DIRECTORY_PATH . '/includes/class-activate.php'; 38 31 39 class APWEBP_Converter_Pre_Checking { 40 public function __construct() { 32 class APWEBP_Converter_Pre_Checking 33 { 34 public function __construct() 35 { 41 36 $this->plug_install_apwebp_converter(); 42 37 } 43 38 44 public function plug_install_apwebp_converter() { 39 public function plug_install_apwebp_converter() 40 { 45 41 include_once ABSPATH . 'wp-admin/includes/plugin.php'; 46 42 if (is_plugin_active('webp-converter-pro/webp-converter.php')) { … … 55 51 include_once APWEBP_DIRECTORY_PATH . '/functions.php'; 56 52 57 new Settings\APWEBP_Converter_Settings;58 new Htserve\APWEBP_Htserve;59 new Scripts\APWEBP_Converter_Scripts;53 new APWEBP_Converter_Settings; 54 new APWEBP_Htserve; 55 new APWEBP_Converter_Scripts; 60 56 } 61 57 } 62 58 63 new Init\APWEBP_Converter_Pre_Checking;64 $webpp_activate = new A ctivate\APWEBP_Activate;59 new APWEBP_Converter_Pre_Checking; 60 $webpp_activate = new APWEBP_Activate; 65 61 66 register_activation_hook(__FILE__, array($webpp_activate, 'webp_install'));67 register_deactivation_hook(__FILE__, array($webpp_activate, 'webp_uninstall'));62 register_activation_hook(__FILE__, [$webpp_activate, 'webp_install']); 63 register_deactivation_hook(__FILE__, [$webpp_activate, 'webp_uninstall']); 68 64 69 65 add_filter('wp_get_attachment_image_src', 'apwebp_ap_convert_url_for_images', 10, 4);
Note: See TracChangeset
for help on using the changeset viewer.