图片点击放大下过失效

发布于 2023-09-21  514 次阅读 百度未收录


忽然发现图片点击放大失效了,前面装了插件也没用。

对比查看代码后发现,正则匹配匹配不上。

// 原本的代码是这样的
add_filter('the_content', 'fancybox');
function fancybox($content){ 
    $pattern = array("/<img(.*?)src=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)>/i","/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)>(.*?)<\/a>/i");
    $replacement = array('<a$1href=$2$3.$4$5 data-fancybox="gallery"><img$1src=$2$3.$4$5$6></a>','<a$1href=$2$3.$4$5 data-fancybox="images"$6>$7</a>');
    $content = preg_replace($pattern, $replacement, $content);
    return $content;
}
//但是我的文章的图片元素是这样的
<figure class="wp-block-image size-full"><img loading="lazy" src="http://cdn.mxguanwang.cn/wp-content/uploads/2023/09/image.png?imageView2/2/w/1280/interlace/1/q/100#" alt="" class="wp-image-3007"></figure>

修改正则表达式即可解决问题。

// 修改后的代码
add_filter('the_content', 'fancybox');
function fancybox($content){ 
	$pattern = '/<img([^>]*)src="([^"]+)"([^>]*)>/';
	$replacement = '<a href="$2" data-fancybox="gallery"><img$1src="$2"$3></a>';
    $content = preg_replace($pattern, $replacement, $content);
	return $content;
}

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。