web-dev-qa-db-fra.com

Shortcode présentant html tel que <img>

$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"]

Problème:

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.

Mise à jour 11 janv. 2018

$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?

4
The WP Novice

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.

Casser l'URL de l'image et le nom du fichier

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.

Utilisez 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>.

1
Jack Johansson