Как отключить адаптивные размеры картинок (srcset) в WordPress 4.4?
Всем привет! Вопрос такой.
В версии 4.4. была введена новая фитча: для всех картинок добавляется новый атрибут "srcset" и вроде бы еще к нему в придачу "sizes". Это своего рода промежуточные размеры картинки.
По своим причинам, мне этот атрибут не нужен и нужно его выключить везде где это возможно, т.е. надо запретить вывод атрибутов srcset и sizes для всех картинок.
Мне кажется этот вопрос актуальный не только для меня, потому что эта функция совсем не всегда работает как надо и причин её отключить может быть несколько, начиная от ненужной нагрузки на сервер, заканчивая неправильной работой некоторых плагинов или тем.
Нашел в сети такой код для отключения:
add_filter( 'wp_get_attachment_image_attributes', function($attr) { if (isset($attr['sizes'])) unset($attr['sizes']); if (isset($attr['srcset'])) unset($attr['srcset']); return $attr; }, PHP_INT_MAX );
Но что-то мне подсказывает, что это не самое лучшее решение.
Подскажите пожалуйста как выключить эти лишние атрибуты правильно.
Да, вариант который вы выложили - это костыль, который после всех операций удаляет атрибуты, да и то мне кажется не везде...
На одном из своих сайтов я использую такой код:
На 100% не уверен что он очищает абсолютно все, но насколько я помню, когда копался в исходных кодах WordPress, то пытался найти самые основные фильтры чтобы все это дело отключить.
Последнюю версию кода смотрите здесь.
Дополнительный фильтр, который удаляет атрибуты srcset и sizes в последний момент. в 99% случаев этот хук не нужен, можно добавить на всякий случай.
Посмотрел в "наших интернетах" ответ на этот вопрос и нашел аналогичный код здесь
Тимур, поставил твой код на двух блогах и вполне норм он чистит, просто до этого стрёмного как-то на исходный код страницы было смотреть, куча ссылок на различные размеры изображений. Мне кажется адаптивность картинок девелоперам иначе реализовать надо, и так движок сам по себе стругает три размера, захламляя сайт и забирая место, причём по умолчанию, была бы ещё возможность выключить.
А как сделать так, чтоб путь в урлах srcset указывался без http
Для обычных src у меня используется код
Как его видоизменить для srcset?
Так тебе походу не только протокол нужно удалить, но и домен... т.е. сделать ссылку относительной.
Для этого есть специальная функций wp_make_link_relative(). И не надо такой огород лепить...
Ну и атрибут srcset меняется также, через фильтр wp_get_attachment_image_attributes. Получиться что-то такое:
Спасибо. Заработало. Предыдущий код был взят с какого-то сайта, а я не настолько разбираюсь в php и wordpress, чтоб его довести до ума ((.