我不是专业人士,但我正在尝试在 WordPress 中使用 webp 图像。
我有一个名为 Rj Webp Converter 的插件,可以将图像转换为 webp 格式,然后我使用此功能将 jpg、jpeg 和 png 等扩展名替换为 webp。
function callback($buffer) {
if(!is_admin() && $GLOBALS['pagenow'] != 'wp-login.php') {
$buffer = str_replace('.jpg','.webp',$buffer);
$buffer = str_replace('.jpeg','.webp',$buffer);
$buffer = str_replace('.png','.webp',$buffer); }
return $buffer; }
function buffer_start() { ob_start("callback"); }
function buffer_end() { ob_end_flush(); }
add_action('after_setup_theme', 'buffer_start');
add_action('shutdown', 'buffer_end');
但是有一个问题。 上面的代码替换了每个图像文件。 我想替换仅位于 wp-content/uploads/... 目录中的文件。
如有任何帮助,我们将不胜感激。 :)
这应该可行。
正则表达式
<?php
$re = '/(.*(?<=\.)(?:jpg|jpeg|png)(?=$))/m';
$str = 'test.jpg
testing.png
test.jpeg';
preg_match_all($re, $str, $matches);
// Print the entire match result
print_r($matches);
?>
PHP 您应该使用 foreach 将 $filename 替换为 $matches。
function replace_extension($filename, $new_extension) {
$info = pathinfo($filename);
return $info['filename'] . '.' . $new_extension;
}