Fancy Bitmaps sind das eine, skalierbare Bilder das andere. WordPress mag Scalable Vector Graphics von Haus nicht: SVGs bestehen aus XML-Code. Wird der geladen, kann er — wenigstens prinzipiell — Schadecode ins Systems einschleusen. SVGs in den Templates zu nutzen, unterbindet WordPress dagegen nicht. So integriert auch bootScore die Logos ins Template header.php
. Für die ambitionierte bootScore-Nutzerin reicht die Methode nicht.
SVGs können auf HTML-Ebene — wie gewohnt — in img
-Tags eingebettet werden.1. Um sie in über die Medien-Bibliothek zu nutzen, braucht es ein Plugin, sei es SVG-Support, WebP SVG Support oder eben Save SVG:
Lösung
- Installiere das Plugin Safe SVG
- Lade Dein SVG-Image in Deine Media-Bibliothek.
- Nutze es, wie ’normale’ Bilder.2
Hintergrund
Das WordPress-Plugin SVG-Support verspricht, den XML-Code beim Hochladen zu ‘desinfizieren’, wird aktiv gepflegt und ist GPL‑2.0‑or-later lizenziert. Das gilt auch für Safe SVG.3 Das Plugin WebP SVG Support dagegen sagt nichts zur Desinfektion, sondern zielt auf die Nutzung in der Media-Bibliothek. Diese Integration in die WordPress Media-Bibliothek bewirbt auch Safe SVG. Darum verwende ich dies.
Weil WordPress Vektor- und Rasterbilder mit derselben Technik in die Seiten einzubauen erlaubt, können wir unseren ShortCode für ‘Fancy Bilder’ auch für SVGs verwenden.
Gleichwohl möchte ich das CC-BY-SA-Logo im Footer auch in eine Zeile einbetten: . Dafür benötige ich eine zweite Funktion:
/*
* Simple short code for inserting an inline img
* (C) 2023 Karsten Reincke
* SPDX-License-Identifier: MIT
*/
function fciPicCode($atts){
$atts = (array) $atts;
$imid = $atts[0]; // obligatoric parameter
$width = $atts[1]; // obligatoric parameter
$wpsize = ""; // thumbnail, medium, large, or full
$alt=""; // optional parameter
$style="is-style-default"; // optional parameter
/* IDEA: try to download the best fitting image size be default.
* Download the full sized image if and when the user had said
* she wants to see it by a click (fancy)
*/
if ($width <= 150)
$wpsize = "thumbnail";
elseif ($width <=300)
$wpsize = "medium";
elseif ($width <= 1024)
$wpsize = "large";
else
$wpsize = "full";
/* get the path to the original image */
$fimgp=wp_get_attachment_image_url($imid,"full");
if (!($fimgp)) return ("wrong image data");
/* if it's an svg, there won't be any smaller images */
if (wp_get_image_mime($fimgp) == "svg" )
$simgp=$fimgp;
else {
/* otherwise get the path to the fitting smaller image */
$simgp=wp_get_attachment_image_url($imid,$wpsize);
if (!($simgp)) $simgp=$fimgp;
}
if (array_key_exists(2,$atts)) {
$alt=$atts[2];
if (array_key_exists(3,$atts)) {
$style=$atts[3];
}
}
$res=
'<a href="' . $fimgp . '" data-fancybox="">' .
'<img src="' . $simgp . '" alt="'. $alt .'" width="' . $width . '" >' .
'</a>' ;
return $res;
}
add_shortcode('fcipic', 'fciPicCode');
Und in welchem Zusammenhang …
… steht das mit unserer Migration zu bootScore? Nun, hat eine Web-Designerin die ersten Schritte auch in Sachen SEO getan, wird sie sich bald einem richtig dicken Brett zuwenden, nämlich ihrem Menü. Dabei muss sie thematische Cluster sauber gliedern und präsentieren, ohne zu fancy zu werden. Dann kann sie die Anzeige von festen und skalierbaren Bildern aufhübschen und beschleunigen. Über einen Teil dieser Etappe spricht auch dieser Post.
Im Übrigen: Männer sind mitgemeint.
- Das
svg
-Tag dient dazu, den Code des Bildes selbst in eine Seite einzubinden: vgl. dazu W3C-Schools [↩] - WordPress bindet es via img-Tag ein. [↩]
- Zur Code-Desinfizierung vgl. Description, zur Lizenzierung die Datei readme.txt [↩]