Как удалить жестко заданные размеры миниатюр изображений?

7 июл. 2011 г., 17:50:20
Просмотры: 31.4K
Голосов: 16

Как можно удалить атрибуты width и height из миниатюры записи при вставке с помощью <?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" />
6
Комментарии

ищи файл thumbnail.php, не уверен, но обычно в таких файлах содержится жесткое кодирование

Niraj Chauhan Niraj Chauhan
7 июл. 2011 г. 17:54:08

Если тебе интересно, я хочу иметь возможность изменять ширину и высоту через CSS - конкретно установить max-width и позволить высоте определяться автоматически, а не использовать жестко заданное значение.

Carson Carson
7 июл. 2011 г. 17:54:15

используй firebug, чтобы получить точный класс или ID, или дай мне свой URL

Niraj Chauhan Niraj Chauhan
7 июл. 2011 г. 17:56:44

Изменение чего-либо в файле за пределами темы (например, post-thumbnail-template.php) было бы плохой идеей, так как любое обновление WordPress перезапишет его.

Carson Carson
7 июл. 2011 г. 18:10:49

Почему вы считаете, что вам нужно удалять атрибуты для достижения желаемого?

t31os t31os
7 июл. 2011 г. 20:27:23

Смотрите мой комментарий выше..

Carson Carson
11 июл. 2011 г. 17:35:06
Показать остальные 1 комментариев
Все ответы на вопрос 4
2
25

Похожие темы: Фильтр для удаления атрибутов размеров изображений?

Существует фильтр 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;
}
2 авг. 2011 г. 02:23:35
Комментарии

У меня не работает. add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) { if ( wp_is_mobile() ) { $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html ); }
return $html; }

dlopezgonzalez dlopezgonzalez
11 сент. 2014 г. 13:20:46

Это удалит атрибуты width/height во всех случаях использования the_post_thumbnail().

Dario Zadro Dario Zadro
24 янв. 2020 г. 02:03:13
2

вы можете просто получить URL миниатюры и вставить его в тег img самостоятельно:

<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />
7 июл. 2011 г. 18:01:40
Комментарии

Это единственное решение, которое я тоже нашел, просто надеялся, что есть способ сделать это без обходного пути.

Carson Carson
7 июл. 2011 г. 18:09:28

Но вам также нужно запросить атрибуты alt и title

MZAweb MZAweb
6 апр. 2012 г. 20:41:55
2
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_content" удалит все атрибуты ширины и высоты у изображений в контенте поста.

23 авг. 2018 г. 17:33:28
Комментарии

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему?

fuxia fuxia
23 авг. 2018 г. 17:53:54

У меня это также удаляет тег 'figure', содержащий изображение, и убирает подпись. :/

MastaBaba MastaBaba
8 февр. 2022 г. 13:18:41
0

Я предпочитаю это решение, так как оно не предполагает глобальную замену с помощью функции. Этот код можно добавить в файлы вашей темы.

<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>

Вы можете заменить "large" на "thumbnail", "medium", "full" или ваш пользовательский размер изображения, объявленный в теме.

24 янв. 2020 г. 01:24:49