Фильтр для удаления атрибутов измерения изображения?
-
16-10-2019 - |
Вопрос
Я работаю над сайтом на основе шаблона 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;
}
Я знаю, что могу применить тот же фильтр к Контент, если необходимо. Но есть ли лучший способ сделать это?
Решение
Спасибо всем!
А image_send_to_editor Фильтр был тем, что я искал ... спасибо @t31os за то, что он указал на это.
Вот мои функции сейчас.
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
Это удаляет встроенные атрибуты измерения из изображений, полученных с the_post_thumbnail()
, и предотвращает добавление этих атрибутов к новым изображениям, добавленным в редактор. Не удаляет их из полученных изображений wp_get_attachment_image
или другие связанные функции (там нет крючков), но эти случаи могут быть обработаны в файлах шаблонов при необходимости.
Другие советы
Немного изменил этот скрипт. Спасибо за помощь!
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Genesis framework only
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Removes attached image sizes as well
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
$html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
return $html;
}
Если вы установите размер изображения в function.php как «галерея»
add_image_size( 'gallery', 200, 120, true );
Вы можете удалить ширину и высоту определенного размера изображения, например, «Галерея»:
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;
}
Применение этого фильтра к the_content
уводит его для всего контента. Это будет эффективно, но может повлиять на производительность и время загрузки вашего сайта. Было бы лучше, если бы вы сказали WordPress просто не вставлять встроенные теги ширины и высоты при вставке изображений.
К сожалению, сценарии, которые фактически вставляют изображение, построены в JavaScript и взаимодействуют с редактором Tinymce Wysiwyg. Там может быть способ зацепить его напрямую, но не использовать стандарт add_filter()
вызовы