Filtre pour supprimer les attributs de dimension d'image?

36

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. Par conséquent, je dois supprimer la largeur inline, et Les attributs de dimension height 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 à le_contenu , si nécessaire. Mais y a-t-il une meilleure façon de faire cela?

    
posée goldenapples 18.12.2010 - 05:54

4 réponses

37

Merci à tous!

Le filtre image_send_to_editor est 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 supprimez pas des images récupérées via wp_get_attachment_image ou d’autres fonctions connexes (aucun crochet n’y figure), mais ces cas peuvent être traités dans les fichiers de modèle si nécessaire.

    
réponse donnée goldenapples 18.12.2010 - 23:15
5

Modifie un peu ce script. 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;
}
    
réponse donnée MikeNGarrett 05.01.2011 - 19:57
1

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;
}
    
réponse donnée Tohid Golkar 29.01.2013 - 07:40
0

L'application de ce filtre à the_content le déclenche 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 l'image sont construits en JavaScript et interagissent avec l'éditeur wyiwyg de TinyMCE. Il pourrait y avoir un moyen de le connecter directement, mais sans utiliser les appels standard add_filter() .

    
réponse donnée EAMann 18.12.2010 - 06:57

Lire d'autres questions sur les étiquettes