Как убрать жестко запрограммированные размеры миниатюр?

15

Как я могу удалить атрибуты ширины и высоты из 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" />
Carson
источник
ищите файл thumbnail.php, не уверен, но обычно файлы содержат жесткую кодировку
Niraj Chauhan
Если вам интересно, я хочу иметь возможность изменять ширину и высоту с помощью CSS - точнее, установить максимальную ширину и позволить высоте устанавливать себя, а не задавать жестко заданную по умолчанию.
Карсон
используйте Firebug, чтобы получить точный класс или ID, или дайте мне ваш URL
Niraj Chauhan
2
Изменение чего-либо в файле вне темы (например, post-thumbnail-template.php) было бы плохой идеей, поскольку любое обновление WordPress перезаписывало бы его.
Карсон
Что заставляет вас думать, что вам нужно удалить атрибуты, чтобы делать то, что вы хотите?
t31os

Ответы:

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;
}
goldenapples
источник
У меня не работает. 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
Это удалит ширину / высоту из всех случаев the_post_thumbnail()использования.
Дарио Задро
5

Вы можете просто взять URL большого пальца и поместить его в тег img самостоятельно:

<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />
Milo
источник
1
Это единственное решение, с которым я столкнулся, просто надеялся, что есть способ сделать это без обходного пути.
Карсон
Но вам также нужно запросить атрибуты alt и title
MZAweb
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" удалит всю ширину и высоту текстового изображения содержимого публикации.

Герцог инь
источник
Пожалуйста, измените свой ответ и добавьте объяснение: почему это может решить проблему?
fuxia
0

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

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

Вы можете заменить «большой» на «миниатюру», «средний», «полный» или свой размер изображения, объявленный в вашей теме.

Дарио Задро
источник