问题描述

我正在一个基于流体宽度 CSS 模板的工作站点,它将图像上的 max-width 设置为包含它们的列的宽度,我需要删除 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;
}

如果需要,我知道我可以将同样的过滤器应用于 the_content 。但是有没有更好的方法呢?

最佳解决方案

感谢所有!

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;
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。