如何在文章和标题中删除图片大小内联样式

时间:2021-10-12 作者:Andrew

在ACF文本字段的内容编辑器中使用时,我使用以下过滤器删除图像标记中的内联样式:

add_filter( \'post_thumbnail_html\', \'remove_width_attribute\', 10 );
add_filter( \'image_send_to_editor\', \'remove_width_attribute\', 10 );

function remove_width_attribute( $html ) {
$html = preg_replace( \'/(width|height)="\\d*"\\s/\', "", $html );
return $html;
}
但它似乎删除了标题以及周围的标记。如何删除内联图像大小并保留标题?

这是WordPress在将图像放入文本字段时插入的标记:

div id="attachment_210" style="width: 1610px" class="wp-caption 
“alignnone”;

因此您可以看到,内联样式使容器达到1610px,而设置为100%的图像将适合固定宽度的容器。我正在寻找一种删除div标记的方法,上面的过滤器会这样做,但它也会删除我想要保留的标题

1 个回复
SO网友:Buttered_Toast

真的不知道你为什么想做那样的事
正如雅各布·皮蒂(JacobPeattie)所说,这些尺寸是为了防止加载图像时布局发生变化
但如果仍要删除宽度和高度属性,可以这样做。

add_filter(\'post_thumbnail_html\', \'bt_remove_post_thumbnail_html_width_height\', 10, 4);
function bt_remove_post_thumbnail_html_width_height ($html, $post, $post_thumbnail_id, $size) {
    $width = get_option($size . \'_size_w\');
    $height = get_option($size . \'_size_h\');
    
    $html = str_replace(\'<img width="\' . $width . \'" height="\' . $height . \'"\', \'<img\', $html);
    
    return $html;
}

add_filter(\'image_send_to_editor\', \'bt_remove_image_send_to_editor_width_height\', 10, 7);
function bt_remove_image_send_to_editor_width_height ($html, $id, $caption, $title, $align, $url, $size) {
    $width = get_option($size . \'_size_w\');
    $height = get_option($size . \'_size_h\');
    
    $html = str_replace(\'<img width="\' . $width . \'" height="\' . $height . \'"\', \'<img\', $html);
    
    return $html;
}
它通过大小和str_replace 我们只需将包含宽度和高度的初始图像html替换为仅打开图像标记。

如果您需要在其他过滤器上实现这一点,您需要检查wordpress github,以更好地了解哪些参数可用以及位置。