$atts = shortcode_atts( array(
'path' => 'https://s.w.org/about/images/logos/wordpress-logo-simplified-rgb.png'
), $atts);
Das Obige ist ein Teil des Shortcodes. Im Wordpress-Texteditor wird dieser Shortcode folgendermaßen erstellt →
[theimg path=""]
das Anführungszeichen muss die Bild-URL dieses → haben
[theimg path = "https://geordiebiker.files.wordpress.com/2011/10/audrey-marnay-longchamp-commando-drive-side.jpg"]
wenn wir uns im visuellen Modus des Texteditors befinden und eine Bild-URL in diese Kommas einfügen, wird tatsächlich das Bild und nicht die URL abgerufen. Ich habe ein gif gemacht, um dies zu erklären .
Ich glaube, dass diese Desinfektion wie esc_url usw. fehlt, aber ich kenne die genaue Lösung nicht.
Update: Wenn ich nur die URL in den Shortcode einfüge, fügt der Editor die <img src="">
Tags hinzu?
PS. → Das Bild kann hier nicht hochgeladen werden, da es über 2 MB groß war.
$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;
Auf obige Weise wird die Ausgabe im Browser gerendert.
Schließlich sieht es im Browser so aus:
<img src="<img src="http://www.qygjxz.com/data/out/84/6074239-free-image.jpg" />">
Gibt es eine Möglichkeit, wie wir sicherstellen können, dass im src="'.$atts['path'].'"
dieser Teil:
.$atts['simg'].
nimmt nur URL und streift alles raus?
Dieses Verhalten ist höchstwahrscheinlich beabsichtigt und kann deaktiviert werden. Es kann jedoch auch andere Funktionen beeinträchtigen. Es gibt einige Problemumgehungen, die Sie ausprobieren können.
Sie können die Argumente wie folgt an Ihren Shortcode übergeben:
[theimg
path="https://s.w.org/about/images/logos/"
filename="wordpress-logo-simplified-rgb.png"
]
Dadurch wird verhindert, dass der Editor die URL analysiert. Sie können die Werte jedoch abrufen und in Ihrem PHP Code zusammenfassen.
preg_match()
Also konvertiert der Editor die URL in ein vollständiges HTML-Bild? Gut, lass ihn das machen. Nachdem der Editor das vollständige Bild an den Shortcode übergeben hat, können wir einen preg_match
in unserem PHP Code verwenden, um die URL zu extrahieren:
preg_match( '@src="([^"]+)"@' , $img, $match );
Dadurch wird der $img
-Inhalt analysiert und die src
des <img>
-Tags zurückgegeben.