web-dev-qa-db-fra.com

Filtre pour supprimer les attributs de dimension d'image?

Je travaille sur un site basé sur un modèle css de largeur fluide qui définit une largeur maximale sur les images en fonction de la largeur de la colonne qui les contient, et je dois supprimer inline width et height attributs de dimension que WordPress ajoute aux images.

Je le fais avec mes images en vedette avec ce filtre:

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

Je sais que je peux appliquer le même filtre à the_content , si nécessaire. Mais y a-t-il une meilleure façon de faire cela?

35
goldenapples

Merci a tous!

Le filtre image_send_to_editor était celui que je cherchais ... merci @ t31os de l'avoir signalé.

Voici mes fonctions maintenant.

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

Cela supprime les attributs de dimension en ligne des images récupérées avec the_post_thumbnail() et empêche leur ajout à de nouvelles images ajoutées à l'éditeur. Ne les supprime pas des images récupérées via wp_get_attachment_image ou d'autres fonctions connexes (aucun crochet ne s'y trouve), mais ces cas peuvent être traités dans les fichiers de modèle si nécessaire.

36
goldenapples

Modifié ce script un peu. Merci pour l'aide!

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

si vous définissez la taille de l'image dans function.php en tant que "galerie"

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

vous pouvez supprimer la largeur et la hauteur d'une taille d'image spécifique telle que "galerie":

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

L'application de ce filtre à the_content le déclenchera pour tout le contenu. Cela sera efficace, mais pourrait affecter les performances et le temps de chargement de votre site. Il serait préférable que vous disiez à WordPress de ne pas insérer les balises inline width et height lorsque vous insérez des images.

Malheureusement, les scripts qui insèrent réellement l'image sont construits en JavaScript et interagissent avec l'éditeur wyiwiw de TinyMCE. Il y a peut-être un moyen de le connecter directement, mais en n'utilisant pas les appels add_filter() standard.

0
EAMann