WordPress 6.0 新增了一个新的 filter 接口:wp_content_img_tag
,可以用来调整通过 the_content
filter 处理之后的内容中的图片标签。
WordPress 最初在 5.5 版本的时候引入了 wp_filter_content_tags()
函数,用于修改内容中的特定的元素,主要是图片和 iframe。在 WordPress 6.0 版本之前,如果要修改图片标签,就是用和 wp_filter_content_tags()
函数中一样复杂的正则表达式来匹配图片,这样增加了程序的复杂性和服务器的开销,所以这个新的 wp_content_img_tag
filter 就是为了解决这个问题。
如何使用
wp_content_img_tag
filter 支持下面这些参数
$filtered_image
: 字符串,含有将替换原始图片标签的属性的完整 img 标签。$context
: 上下文,一般是调用wp_filter_content_tags()
函数的 filter 名称。$attachment_id
: 图片的附件 ID,如果不是媒体库里的图片则为0。
这个 filter 必须返回字符串,然后替换传递给过滤器的 img 标签。
使用示例
比如下面的代码使用这个 filter 给内容中的图片标签加上边框颜色样式属性:
代码语言:javascript复制add_filter( 'wp_content_img_tag', function ( $filtered_image, $context, $attachment_id ) {
$style = 'border-color: #cccccc;';
$filtered_image = str_replace( '<img ', '<img style="' . $style . '" ', $filtered_image );
return $filtered_image;
}, 10, 3 );
wp_filter_content_tags()
函数最初引入只是为了让图片支持延迟加载功能, 现在已经成为了修改内容中图片标签以实现各种功能增强的标准方法,现在 6.0 版本引入 wp_content_img_tag
filter 通过让开发人员可以通过插件实现定制来进一步增强它的能力。
WPJAM Basic 对 CDN 图片的处理,下一版在判断是 6.0 之后会改成该方法实现。