过滤以删除图像尺寸属性?
-
16-10-2019 - |
题
我正在基于流体宽度CSS模板上的网站上工作,该模板将图像上的最大宽度设置为包含它们的列的宽度,我需要删除内联 宽度 和 高度 WordPress添加到图像的维度属性。
我正在使用此过滤器使用我的特色图像:
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );
function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
我知道我可以将相同的过滤器应用于 内容, ,如有必要。但是有更好的方法吗?
解决方案
谢谢!
这 image_send_to_editor 过滤器是我正在寻找的一个...谢谢 @t31os指出它。
这是我的功能。
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
这删除了从带有图像的图像中的内联维数属性 the_post_thumbnail()
, ,并防止这些属性被添加到编辑器中的新图像中。不会将它们从检索到的图像中删除 wp_get_attachment_image
或其他相关功能(那里没有钩子),但是在必要时可以在模板文件中处理这些情况。
其他提示
修改了此脚本。谢谢您的帮助!
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Genesis framework only
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Removes attached image sizes as well
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
如果将function.php中的图像大小设置为“画廊”
add_image_size( 'gallery', 200, 120, true );
您可以删除特定图像大小的宽度和高度,例如“画廊”:
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4 );
function remove_thumbnail_dimensions( $html, $post_id, $post_image_id,$post_thumbnail) {
if ($post_thumbnail=='gallery'){
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
}
return $html;
}
将该过滤器应用于 the_content
将向所有内容发射它。这将是有效的,但可能会影响您网站的性能和负载时间。如果您告诉WordPress首先插入图像时,最好不要插入内联宽度和高度标签,那就更好了。
不幸的是,实际插入图像的脚本是在JavaScript中构建的,并与Tinymce Wysiwyg编辑器进行交互。可能有一种直接连接到它的方法,但不使用标准 add_filter()
呼叫。