wp easy-svg icons import
Kopiert einen Ordner mit SVGs bereinigt und gehärtet in einen Drop-in-Ordner unter wp-content/easy-svg-icons, der beim nächsten Laden als Sammlung erscheint.
WP-CLI-Befehl · Easy SVG Pro · Status: Stabil
Dieser Befehl macht aus einem Ordner mit SVG-Dateien irgendwo auf dem Server eine Icon-Sammlung. Jede Datei wird mit Sanitizer und Härter der Seite bereinigt und dann nach wp-content/easy-svg-icons/<slug>/ geschrieben. Beim nächsten Seitenaufruf registriert sich dieser Ordner als Sammlung, und seine Icons erscheinen im Block-Inserter, in den Auswahlen und in easy_svg_icon().
Verwendung
wp easy-svg icons import <dir> --collection=<slug> [--label=<text>]
Wann du es brauchst
- Du hast von einer Designerin oder einem Kunden einen Ordner mit Icons bekommen und willst ihn als eigene Sammlung auf der Seite haben, ohne jede Datei einzeln hochzuladen.
- Ein Deploy-Skript soll die Icons einer Marke auf einen Server bringen, der sie nicht über das Theme-Repository bekommt.
- Du willst die Icons als Dateien auf der Platte (Drop-in-Ordner) und nicht als Icon-Set in der Datenbank.
Nicht geeignet, wenn:
- du ein Paket-ZIP mit
manifest.jsonhast. Nimmwp easy-svg pack import, das behält die Bezeichnungen aus dem Manifest und speichert ein Icon-Set. - die Icons zu einem Theme gehören, das du selbst pflegst. Leg sie in den Ordner
assets/iconsdes Themes und committe sie, oder registriere sie miteasy_svg_register_icon_collection(). - das Dateisystem des Servers schreibgeschützt ist oder bei jedem Deploy neu aufgebaut wird. Die Dateien wären dann weg.
Parameter
Der Quellordner. Gelesen werden nur *.svg-Dateien direkt darin, keine Unterordner.
Der Slug der Sammlung, zugleich der Name des Ordners unter wp-content/easy-svg-icons. Der Wert wird zu einem Slug umgewandelt (ACME Icons wird acme-icons). Ergibt er keinen gültigen Slug, bricht der Befehl ab.
Laut Doku die lesbare Bezeichnung, standardmäßig der Slug. Der aktuelle Code liest diese Option nicht. Die Bezeichnung kommt aus einer manifest.json im Zielordner, falls es eine gibt, sonst aus dem Slug mit großem Anfangsbuchstaben.
Rückgabewert
Eine Warnung pro übersprungener Datei (Skipped <path>: <reason>) und eine Erfolgszeile: Copied 12 file(s) into /path/wp-content/easy-svg-icons/acme; they register as the "acme" collection on the next load.
0 nach dem Kopieren, auch wenn Dateien übersprungen oder gar keine kopiert wurden. 1, wenn Lizenz oder Funktion WP-CLI aus sind, --collection fehlt oder ungültig ist, der Ordner nicht angelegt werden kann oder Easy SVG Support inaktiv oder zu alt zum Härten ist.
Standardwert
Es gibt keine Standard-Sammlung. --collection ist Pflicht.
Beispiele
Die Icons eines Kunden importieren
wp easy-svg icons import ~/Downloads/acme-icons --collection=acme
Warning: Skipped /home/me/Downloads/acme-icons/logo-old.svg: not-svg
Success: Copied 47 file(s) into /var/www/wp-content/easy-svg-icons/acme; they register as the "acme" collection on the next load.
Erst prüfen, dann importieren, in einem Deploy-Skript
#!/usr/bin/env bash
set -euo pipefail
SRC="build/icons"
SLUG="acme"
wp easy-svg icons validate "$SRC" --strict
wp easy-svg icons import "$SRC" --collection="$SLUG"
wp easy-svg icons list
Eine Sammlung sauber ersetzen
Der Befehl löscht nie Dateien, ein aus der Quelle entferntes Icon bleibt also auf der Seite. Leere den Ordner vorher, wenn du eine exakte Kopie willst:
DEST="$(wp eval 'echo WP_CONTENT_DIR;')/easy-svg-icons/acme"
rm -f "$DEST"/*.svg
wp easy-svg icons import ./icons --collection=acme
Defensiv: einen Pfad ablehnen, den es nicht gibt
SRC="./icons"
if [ ! -d "$SRC" ] || [ -z "$(ls -A "$SRC"/*.svg 2>/dev/null)" ]; then
echo "Keine SVG-Dateien in $SRC, nichts importiert." >&2
exit 1
fi
wp easy-svg icons import "$SRC" --collection=acme
So funktioniert es
- Die Prüfung schaut auf Lizenz und Funktion WP-CLI.
--collectionwird zu einem Slug, und der Zielordner wird mitwp_mkdir_p()angelegt.- Der Befehl braucht den Sanitizer aus Easy SVG Support und
easy_svg_harden_icon_markup(). Unbereinigt wird nie etwas geschrieben. - Ein
index.php-Platzhalter kommt dazu, damit der Ordner im Browser nicht aufgelistet werden kann. - Jede
*.svgaus<dir>bekommt aus ihrem Dateinamen einen Slug, wird gelesen, bereinigt, gehärtet und als<slug>.svggeschrieben. Übersprungene Dateien werden mit denselben Gründen gemeldet wie beiwp easy-svg icons validate, dazuunwritable, wenn die Datei nicht geschrieben werden konnte. - Der Scan-Cache des Ordners (ein Transient) wird gelöscht, damit der nächste Request ihn neu scannt.
- Die Erfolgszeile nennt den Slug, unter dem der Ordner wirklich registriert wird. Meist ist das der Ordnername, aber ein Ordner, der schon erfasst ist, behält den Slug seiner ersten Registrierung, und eine
manifest.jsonim Ordner kann einen anderen Slug nennen.
Die Sammlung erscheint nur, solange Theme- und Ordner-Quellen unter Icons → Funktionen an ist.
Stolperfallen
--labelbewirkt nichts. Leg einemanifest.jsonmitlabelin den Zielordner, wenn die Sammlung einen lesbaren Namen braucht.- Ein falscher Quellpfad legt trotzdem den Ordner an. Zielordner und
index.phpentstehen, bevor die Quelle gelesen wird. Ein Tippfehler in<dir>meldetCopied 0 file(s), endet mit0und hinterlässt einen leeren Sammlungsordner. - Gelöscht wird nie etwas. Dateien mit demselben Slug werden überschrieben, alles andere im Zielordner bleibt. Entfernst du ein Icon aus deiner Quelle, verschwindet es nicht von der Seite.
- Dateien werden umbenannt. Aus
Odd Name.svgwirdodd-name.svg. Templates nutzen den Slug, nicht den ursprünglichen Dateinamen. - Keine Größengrenze, kein Manifest. Beim Import werden Dateien nicht gegen die 2-MB-Grenze für Quellen geprüft, und eine
manifest.jsonaus dem Quellordner wird nicht mitkopiert. Eine zu große Datei wird kopiert und später alstoo-largegemeldet. - Schalte die Funktion vor dem ersten Import ein. Der Slug eines Ordners wird erfasst, wenn Theme- und Ordner-Quellen das Drop-in-Verzeichnis zum ersten Mal scannt. Ist das auf einer Seite noch nie passiert, behalten vorhandene Ordner aus Kompatibilitätsgründen die alte Benennung und registrieren sich mit
-xam Ende (acme-x). Die Erfolgszeile sagt das auch. Schalte Theme- und Ordner-Quellen ein, ruf eine Seite auf und importiere erst dann. Den Slug liest du aus der Erfolgszeile, nicht aus deinem Befehl. - Exit-Code 0 trotz Warnungen. Übersprungene Dateien lassen den Befehl nicht scheitern. Lass vorher
validate --strictlaufen, wenn ein halber Import deine Pipeline stoppen soll.
wp-content/easy-svg-icons auf dem Server, und dieser Ordner wird vom Webserver ausgeliefert. Deshalb landet dort nur bereinigtes, gehärtetes Markup. Kopier nie auf anderem Weg SVG-Dateien in diesen Ordner, die nicht durch den Sanitizer gegangen sind: Der Ordner-Scan bereinigt zwar, was er registriert, aber die Datei auf der Platte ist trotzdem unter ihrer eigenen URL erreichbar.