Удаление атрибутов размеров изображений и подписей
Этот вопрос является продолжением этой дискуссии об удалении атрибутов размеров у изображений. Предложенное в той теме решение работает отлично, но имеет побочный эффект - удаление всех шорткодов [caption]
у изображений.
После нескольких часов изучения исходного кода я обнаружил причину. Плагин TinyMCE wpeditimage, который отвечает за добавление шорткода [caption]
, проверяет наличие атрибутов ширины в шорткоде и теге img
. Если он их не находит, то просто удаляет подпись. Поскольку это делается "на лету" с помощью JavaScript в редакторе TinyMCE, я не могу придумать фильтр WordPress, который решил бы эту проблему. Хотя был бы рад ошибиться. :)
В качестве временного решения я использую следующий jQuery-код для удаления всех проблемных атрибутов на стороне клиента. В сочетании с фильтром img_caption_shortcode
, который предотвращает использование стилей ширины, это работает. Не самое элегантное решение, но пока помогает. У кого-то есть идеи получше?
// Удаляем атрибуты width и height у img, video и object в основном контенте для создания адаптивных изображений
var $fluid_items = $('.main-article-wrapper').find('img,video,object');
$fluid_items.removeAttr('width');
$fluid_items.removeAttr('height');

Возможно, это не совсем тот ответ, который вы ищете, но я думаю, что нашёл довольно хорошее обходное решение.
Я взял следующий код из CSS темы twenty-eleven (которая, на мой взгляд, аккуратно адаптивна):
/* Изображения */
.entry-content img,
.comment-content img,
.widget img {
max-width: 97.5%; /* Гибкие изображения для записей, комментариев и виджетов */
}
img[class*="align"],
img[class*="wp-image-"] {
height: auto; /* Обеспечиваем правильное масштабирование изображений с атрибутами высоты и ширины, добавленными WordPress */
}
img.size-full {
max-width: 97.5%;
width: auto; /* Предотвращаем растяжение полноразмерных изображений с атрибутами высоты и ширины в IE8 */
}
Этого было достаточно, чтобы сделать все изображения адаптивными (по крайней мере, встроенные в контент...) Теперь у меня адаптивные изображения, но при использовании подписи (caption) остаётся та же проблема, возникающая из-за того, что tinyMCE добавляет атрибут style к контейнеру подписи с шириной изображения. Чтобы это исправить, мне достаточно было добавить в CSS следующее:
.wp-caption { max-width: 100%; }
Готово! У меня всё работает, хотя это может не сработать для миниатюр записей.
Надеюсь, это кому-то поможет :-)

Я пока не успел полностью протестировать это, но это уже оказалось весьма полезным в других областях. Спасибо за помощь.
