Как удалить жестко заданные размеры миниатюр изображений?
Как я могу удалить атрибуты ширины и высоты из post_thumbnail при вставке с <?php the_post_thumbnail(); ?>
?
<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/image.jpg" class="attachment-post-thumbnail wp-post-image" />
4 answers
Связанный: Фильтр для удаления атрибутов размеров изображения?
На post_thumbnail_html
есть фильтр, который получает в качестве аргумента полный html-элемент, представляющий уменьшенное изображение публикации, прежде чем оно будет отображено на странице. Вы можете отфильтровать размеры с помощью небольшого регулярного выражения:
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;
}
Вы можете просто взять URL-адрес большого пальца и поместить его в тег img самостоятельно:
<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
Это сделает работу, "the_contnet" удалит всю ширину и высоту текстового изображения содержимого публикации.
Я предпочитаю это решение ниже, так как я не выполняю глобальную замену функцией. Это будет включено в ваши файлы тем.
<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>
Вы можете заменить "большой" на "миниатюру", "средний", "полный" или свой собственный размер изображения, объявленный в вашей теме.