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

wordpress.stackexchange https://wordpress.stackexchange.com/questions/5568

  •  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() вызовы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top