eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Проблема с post_thumbnail

Бывает же такое...

На двух разных сайтах миниатюры выводятся одинаково..

the_post_thumbnail('thumbnail');

Но на одном грузиться миниатюра, а на другом полное изображение.

Решил проблему через хук..

function disable_wp_responsive_images() {
	return 1;
}
add_filter('max_srcset_image_width', 'disable_wp_responsive_images');

И могу лишь предполагать что это из-за настроек вывода миниатюр, т.к. больше копать некуда. В первом варианте стоит галочка - обрезать и заданы все размеры (для Kama: прекрепил изображение, но сама форма где выбирать изображение видна не до конца). Во втором варианте задан только размер миниатюр (200х200).

Причем в обоих вариантах в src миниатюра, но во втором где srcset (который удалил через хук) грузиться именно полный размер, который в srcset.

с хуком на проблемном сайте..

<img src="https://localhost/.../wp-content/uploads/2020/01/image-163x200.jpg"
class="attachment-thumbnail size-thumbnail wp-post-image"
alt="..." decoding="async" loading="lazy" width="163" height="200">

без хука..

<img src="https://localhost/.../wp-content/uploads/2020/01/image-163x200.jpg"
class="attachment-thumbnail size-thumbnail wp-post-image" alt="..."
decoding="async"
loading="lazy"
srcset="https://localhost/.../wp-content/uploads/2020/01/image-163x200.jpg 163w, https://localhost/.../wp-content/uploads/2020/01/image.jpg 800w"
sizes="(max-width: 163px) 100vw, 163px" width="163" height="200">

И грузит полные, что в ленте сильно тормозило сайт.

Статья на английском по теме disable-wordpress-responsive-images, где и взял такое решение.

Надеюсь данная заметка кому-то поможет.

настройки
Настройки
0
mi13
2 года назад 88
  • 0

    Лучше вообще отказаться от использования данного вызова, а применять

    <?php
    $post_id = $post->ID;
    $img = get_the_post_thumbnail_url($post_id);

    и вставлять только URL в нужный html

     <img class="post_img" src="<?php echo $img ?>" width="320" height="400" alt="">

    это сократит излишние атрибуты сомнительного качества. Как в вашем примере loading="lazy" - это свойство полезно если изображение находиться не в первом экране отображении, а обычно это не так, и вы портите скорость выдачи своими же руками.

    mi13 2 года назад

    Данная проблема у меня возникла в ленте, где 10 записей на странице с картинками, и страница долго грузилась, а без loading="lazy" грузилась бы еще дольше. А так, можно и этот вариант использовать, только добавить thumbnail.

    <?php
    $post_id = $post->ID;
    $img = get_the_post_thumbnail_url($post_id,'thumbnail');
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация