Question

Je travaille sur un site basé sur un modèle de css largeur fluide qui définit une largeur maximale sur les images à la largeur de la colonne les contenant, et je dois retirer la ligne largeur hauteur 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 , le cas échéant. Mais est-il une meilleure façon de le faire?

Était-ce utile?

La solution

Merci à tous!

image_send_to_editor Filtre était celui que je cherchais ... merci @ t31os pour le faire remarquer.

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

Cette dimension supprime les attributs en ligne à partir d'images récupérées avec the_post_thumbnail() et empêche les attributs d'être ajouté à de nouvelles images ajoutées à l'éditeur. Ne pas les supprimer à partir d'images récupérées par wp_get_attachment_image ou d'autres fonctions (pas de crochets là-dedans), mais ces cas peuvent être traités dans les fichiers modèles si nécessaire.

Autres conseils

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

si vous définissez la taille de l'image dans function.php comme une "galerie"

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

vous pouvez supprimer la largeur et la hauteur de la 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;
}

L'application de ce filtre à the_content sera ce feu pour tout le contenu. Ce sera efficace, mais pourrait affecter le temps de la performance et la charge de votre site. Il serait mieux si vous dites WordPress pour tout simplement pas insérer les balises de largeur de ligne et de la hauteur lorsque vous insérez des images en premier lieu.

Malheureusement, les scripts qui insèrent réellement l'image sont construites en JavaScript et d'interagir avec l'éditeur du TinyMCE. Il pourrait y avoir un moyen de brancher directement dans, mais pas en utilisant les appels standard add_filter().

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top