web-dev-qa-db-de.com

Filtern, um Bildbemaßungsattribute zu entfernen?

Ich arbeite an einer Site, die auf einer CSS-Vorlage mit fließender Breite basiert, bei der die maximale Breite von Bildern auf die Breite der Spalte festgelegt wird, in der sie enthalten sind, und ich muss die Inline-Werte width und height dimension entfernen Attribute, die WordPress Bildern hinzufügt.

Ich mache es mit meinen vorgestellten Bildern mit diesem Filter:

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

Ich weiß, dass ich bei Bedarf denselben Filter auf the_content anwenden kann. Aber gibt es dafür einen besseren Weg?

35
goldenapples

Vielen Dank an alle!

Der image_send_to_editor - Filter war derjenige, den ich gesucht habe ... danke @ t31os für den Hinweis.

Hier sind meine Funktionen jetzt.

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

Dadurch werden Inline-Dimensionsattribute aus Bildern entfernt, die mit the_post_thumbnail() abgerufen wurden, und es wird verhindert, dass diese Attribute neuen Bildern hinzugefügt werden, die dem Editor hinzugefügt wurden. Entfernt sie nicht aus Bildern, die über wp_get_attachment_image oder andere verwandte Funktionen abgerufen wurden (keine Haken), aber diese Fälle können bei Bedarf in den Vorlagendateien verarbeitet werden.

36
goldenapples

Modifizierte dieses Skript ein wenig. Danke für die Hilfe!

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

wenn du die Bildgröße in function.php als "Galerie" einstellst

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

sie können Breite und Höhe bestimmter Bildgrößen wie "Galerie" entfernen:

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;
}
1
Tohid Golkar

Wenn Sie diesen Filter auf the_content anwenden, wird er für alle Inhalte ausgelöst. Dies ist effektiv, kann jedoch die Leistung und Ladezeit Ihrer Site beeinträchtigen. Es wäre besser, wenn Sie WordPress anweisen, beim Einfügen von Bildern nur die Tags für die Breite und Höhe der Zeilen nicht einzufügen.

Leider sind die Skripte, die das Bild tatsächlich einfügen, in JavaScript erstellt und interagieren mit dem Wysiwyg-Editor von TinyMCE. Möglicherweise gibt es eine Möglichkeit, sich direkt anzumelden, aber nicht die Standardaufrufe add_filter().

0
EAMann