Suppression des attributs de dimension d'image et de légende

9

Cette question est une ramification de cette discussion sur la suppression des attributs de dimension des images. Le code de solution fourni sur ce thread fonctionne très bien, sauf qu'il a pour effet secondaire malheureux que tous les [caption]shortcodes sont rayés de l'image.

Après plusieurs heures de fouille dans le code principal, j'ai trouvé la cause de cela. Le plugin wpeditimage TinyMCE qui est responsable de l'ajout du [caption]shortcode vérifie les attributs de largeur dans le shortcode et la imgbalise. S'il ne les trouve pas, il suffit de supprimer la légende. Depuis, cela se fait `` à la volée '' avec javascript dans l'éditeur TinyMCE, je ne peux penser à aucun type de filtre WordPress qui résoudrait ce problème. Je serais cependant très heureux de me tromper. :)

Comme note finale, ma solution temporaire a été d'utiliser la requête jQuery suivante pour supprimer tous les tags côté client incriminés. Ceci, en conjonction avec un filtre activé img_caption_shortcodepour empêcher l'utilisation d'un style de largeur, semble faire l'affaire. Ce n'est pas joli, mais c'est un pansement pour l'instant. Quelqu'un a une meilleure idée?

// Strip width and height attributes from img, video, and object in the main article so we can have fluid images
var $fluid_items = $('.main-article-wrapper').find('img,video,object');
$fluid_items.removeAttr('width');
$fluid_items.removeAttr('height');
Dominic P
la source
Hmmm ... est-il possible d'utiliser l'éditeur visuel? Si vous utilisez uniquement l'éditeur HTML, un filtre sur img_caption_shortcode fonctionne très bien ...
goldenapples
@goldenapples, oui, je ne veux pas perdre l'éditeur visuel, car je vais demander à des personnes non techniques de modifier le site. Merci pour la suggestion. D'autres idées?
Dominic P
Dominic, pouvez-vous fournir le code "d'un filtre sur img_caption_shortcode pour empêcher l'utilisation d'un style de largeur"? C'est exactement ce dont j'ai besoin, mais je ne sais pas comment écrire ce filtre.
@Wendy, hmm, je ne peux pas coller le tout dans un commentaire. Si vous souhaitez poser une autre question et me donner un lien vers celle-ci, je la posterai comme réponse.
Dominic P
Au cas où vous ne voudriez pas passer par tout cela, j'ai simplement modifié l' exemple du Codex .
Dominic P

Réponses:

18

ce n'est peut-être pas la réponse exacte que vous recherchez, mais je pense que je viens de trouver une bonne solution de contournement.

Iv'e a pris le code suivant du CSS à vingt-onze thèmes (qui est parfaitement réactif à mon humble avis):

/* Images */
.entry-content img,
.comment-content img,
.widget img {
    max-width: 97.5%; /* Fluid images for posts, comments, and widgets */
}
img[class*="align"],
img[class*="wp-image-"] {
    height: auto; /* Make sure images with WordPress-added height and width >attributes are scaled correctly */
}
img.size-full {
    max-width: 97.5%;
    width: auto; /* Prevent stretching of full-size images with height and >>width attributes in IE8 */
}

C'était suffisant pour rendre toutes les images réactives (au moins celles intégrées dans le contenu ...) Maintenant, j'ai des images réactives, mais lorsque la légende est utilisée, j'ai toujours le même problème, cela se produit parce que le tinyMCE ajoute un attribut de style à la conteneur de légende avec la largeur de l'image. Pour résoudre ce problème, je devais simplement ajouter ceci à mon CSS:

            .wp-caption { max-width: 100%; }

Terminé! fonctionne bien pour moi, bien que cela puisse ne pas fonctionner pour les images en vedette.

J'espère que ça aidera quelqu'un :-)

Talbatz
la source
Je n'ai pas encore eu le temps de tester cela complètement, mais cela s'est déjà avéré très utile dans d'autres domaines. Merci pour l'aide.
Dominic P
mon plaisir :-)
Talbatz
Testé dans IE9, ne semble pas fonctionner comme prévu!
Kuldeep Daftary
Cela entre en conflit avec les anciens navigateurs IE
Tosh
vraiment une excellente solution! thx
emjay