Як видалити жорстко закодовані розміри ескізів?


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" />

шукайте thumbnail.php файл, не впевнений, але зазвичай файли містять жорстке кодування
Niraj Chauhan

У випадку, якщо вам було цікаво, я хочу мати змогу змінювати ширину та висоту за допомогою CSS - точніше встановити максимальну ширину і нехай висота задається самою, а не за замовчуванням для жорстко кодованої.
Карсон

використовуйте firebug, щоб отримати точний клас чи ідентифікатор, або дайте мені свою 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;
}

Це не працює для мене. add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3); функція remove_thumbnail_dimensions ($ html, $ post_id, $ post_image_id) {if (wp_is_mobile ()) {$ html = preg_replace ('/ (ширина | висота) = \ "\ d * \" \ s /', "", $ html ); } повернути $ 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']; ?>" />

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' ) ); ?>

Ви можете замінити "великий" на "мініатюру", "середню", "повну" або власний розмір зображення, оголошений у вашій темі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.