Фильтр для удаления атрибутов размера изображения?

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

Я делаю это с моими лучшими изображениями с этим фильтром:

  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;
}
 

Я знаю, что я могу применить тот же фильтр к the_content , если это необходимо. Но есть ли лучший способ сделать это?

36 голосов | спросил goldenapples 18 SatEurope/Moscow2010-12-18T07:54:51+03:00Europe/Moscow12bEurope/MoscowSat, 18 Dec 2010 07:54:51 +0300 2010, 07:54:51

4 ответа


37

Спасибо всем!

Фильтр image_send_to_editor был тем, кого я искал ... thanks @ t31os для указания его.

Вот мои функции сейчас.

  add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10);
add_filter ('image_send_to_editor', 'remove_thumbnail_dimensions', 10);

функция remove_thumbnail_dimensions ($ html) {
    $ html = preg_replace ('/(width | height) = \ "\ d * \" \ s /', "", $ html);
    return $ html;
}
 

Это удаляет атрибуты размера строки из изображений, полученных с помощью the_post_thumbnail () , и предотвращает добавление этих атрибутов к новым изображениям, добавленным в редактор. Не удаляет их из изображений, полученных с помощью wp_get_attachment_image или других связанных функций (там нет крючков), но эти случаи могут быть обработаны в файлах шаблонов, когда это необходимо.

ответил goldenapples 19 SunEurope/Moscow2010-12-19T01:15:56+03:00Europe/Moscow12bEurope/MoscowSun, 19 Dec 2010 01:15:56 +0300 2010, 01:15:56
5

Немного изменил этот скрипт. Спасибо за помощь!

  add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10);
add_filter ('image_send_to_editor', 'remove_thumbnail_dimensions', 10);
//Только рамки Genesis
add_filter ('genesis_get_image', 'remove_thumbnail_dimensions', 10);
//Удаляет также размер прикрепленных изображений
add_filter ('the_content', 'remove_thumbnail_dimensions', 10);
функция remove_thumbnail_dimensions ($ html) {
    $ html = preg_replace ('/(width | height) = \ "\ d * \" \ s /', "", $ html);
    return $ html;
}
 
ответил MikeNGarrett 5 Jpm1000000pmWed, 05 Jan 2011 21:57:00 +030011 2011, 21:57:00
1

, если вы задали размер изображения в функции.php как «галерея»

  add_image_size ('gallery', 200, 120, true);
 

вы можете удалить ширину и высоту определенного размера изображения, например "gallery":

  add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4);

function remove_thumbnail_dimensions ($ html, $ post_id, $ post_image_id, $ post_thumbnail) {
    if ($ post_thumbnail == 'gallery') {
    $ html = preg_replace ('/(width | height) = \ "\ d * \" \ s /', "", $ html);
    }
    return $ html;
}
 
ответил Tohid Golkar 29 Jam1000000amTue, 29 Jan 2013 10:40:42 +040013 2013, 10:40:42
0

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

К сожалению, скрипты, которые фактически вставляют изображение, построены на JavaScript и взаимодействуют с редактором TinyMCE wysiwyg. Возможно, есть возможность подключиться к нему напрямую, но не использовать стандартные вызовы add_filter () .

ответил EAMann 18 SatEurope/Moscow2010-12-18T08:57:47+03:00Europe/Moscow12bEurope/MoscowSat, 18 Dec 2010 08:57:47 +0300 2010, 08:57:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132