$atts = shortcode_atts( array(
'path' => 'https://s.w.org/about/images/logos/wordpress-logo-simplified-rgb.png'
), $atts);
Ce qui précède fait partie du shortcode. Dans l'éditeur de texte Wordpress, ce shortcode est produit comme ceci →
[theimg path=""]
la virgule inversée doit avoir l'URL de l'image →
[theimg path = "https://geordiebiker.files.wordpress.com/2011/10/audrey-marnay-longchamp-commando-drive-side.jpg"]
lorsque nous sommes dans le mode visuel de l'éditeur de texte et que nous mettons une URL d'image dans ces virgules, il extrait réellement l'image et non l'URL. J'ai fait un gif pour expliquer cela .
Je crois que cette désinfection manquante telle que esc_url, etc., mais je ne connais pas le correctif exact.
Mise à jour: si je ne mets que l'URL dans le shortcode, l'éditeur ajoute les balises <img src="">
?
P.S. → l'image ne peut pas être téléchargée ici car elle était supérieure à 2 Mo.
$output = '<div class="someclasss">';
$output .= '<img class="someclass1" src="'.$atts['simg'].'" alt="' .$caption. '" >';
$output .= '<i class="fa fa-expand" aria-hidden="true"></i>';
$output .= '</div>';
return $output;
La manière ci-dessus la sortie est rendue dans le navigateur.
Enfin, dans le navigateur, cela ressemblera à ceci:
<img src="<img src="http://www.qygjxz.com/data/out/84/6074239-free-image.jpg" />">
Existe-t-il un moyen de s’assurer que, dans le src="'.$atts['path'].'"
cette partie:
.$atts['simg'].
prend seulement l'URL et supprime tout?
Ce comportement est probablement voulu et peut être désactivé. Cependant, d'autres fonctionnalités pourraient également être brisées. Vous pouvez essayer quelques solutions de contournement.
Vous pouvez passer les arguments à votre shortcode de la manière suivante:
[theimg
path="https://s.w.org/about/images/logos/"
filename="wordpress-logo-simplified-rgb.png"
]
Cela empêchera l'éditeur d'analyser l'URL, mais vous pouvez obtenir les valeurs et les rassembler dans votre code PHP.
preg_match()
L'éditeur convertit donc l'URL en une image HTML complète? Bien, laisse-le faire. Après que l'éditeur ait transmis l'image complète au shortcode, nous pouvons utiliser un preg_match
dans notre code PHP pour extraire l'URL:
preg_match( '@src="([^"]+)"@' , $img, $match );
Cela analysera le contenu $img
et renverra la src
de la balise <img>
.