Comment supprimer les dimensions d'une image miniature codée en dur?

15

Comment puis-je supprimer les attributs de largeur et de hauteur de la post_thumbnail lors de l'insertion avec <?php the_post_thumbnail(); ?>?

<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/image.jpg" class="attachment-post-thumbnail wp-post-image" />
Carson
la source
recherchez le fichier thumbnail.php, pas sûr mais généralement que les fichiers contiennent le codage dur
Niraj Chauhan
Au cas où vous vous poseriez la question, je veux pouvoir modifier les largeurs et la hauteur avec CSS - plus précisément définir une largeur maximale et laisser la hauteur se définir plutôt que par défaut celle codée en dur.
Carson
utilisez firebug pour obtenir la classe ou l'ID exact, ou donnez-moi votre URL
Niraj Chauhan
2
Changer quoi que ce soit dans un fichier en dehors du thème (par exemple post-thumbnail-template.php) serait une mauvaise idée car toute mise à jour WordPress le remplacerait.
Carson
Qu'est-ce qui vous fait penser que vous devez supprimer les attributs pour faire ce que vous voulez?
t31os

Réponses:

25

Connexe: Filtre pour supprimer les attributs de dimension d'image?

Il y a un filtre sur post_thumbnail_htmllequel reçoit comme argument l'argument html complet représentant l'image miniature de la publication avant qu'elle ne soit répercutée sur la page. Vous pouvez filtrer les dimensions avec un peu de regex:

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;
}
pommes dorées
la source
Ça ne marche pas pour moi. add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3); fonction remove_thumbnail_dimensions ($ html, $ post_id, $ post_image_id) {if (wp_is_mobile ()) {$ html = preg_replace ('/ (width | height) = \ "\ d * \" \ s /', "", $ html ); } return $ html; }
dlopezgonzalez
Cela supprimera la largeur / hauteur de toutes les instances où the_post_thumbnail()est utilisé.
Dario Zadro
5

vous pouvez simplement saisir l'url du pouce et le mettre vous-même dans une balise img:

<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />
Milo
la source
1
C'est la seule solution que j'ai trouvée aussi, j'espérais juste qu'il y avait un moyen de le faire sans solution de contournement.
Carson
Mais vous devez également rechercher les attributs alt et title
MZAweb
0
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

cela fera l'affaire, "the_contnet" supprimera toute la largeur et la hauteur de l'image du texte du contenu du message.

Duke Yin
la source
Veuillez modifier votre réponse et ajouter une explication: pourquoi cela pourrait-il résoudre le problème?
fuxia
0

Je préfère cette solution ci-dessous car je ne fais pas de remplacement global par une fonction. Cela serait incorporé dans vos fichiers de thème.

<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>

Vous pouvez remplacer "grand" par "miniature", "moyen", "complet" ou votre taille d'image personnalisée déclarée dans votre thème.

Dario Zadro
la source