我正在基于流体宽度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() 呼叫。

许可以下: CC-BY-SA归因
scroll top