WP-CLIwp easy-svg icons import

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.json hast. Nimm wp 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/icons des Themes und committe sie, oder registriere sie mit easy_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

query
dirpositional
Required

Der Quellordner. Gelesen werden nur *.svg-Dateien direkt darin, keine Unterordner.

query
--collectionoption
Required

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.

query
--labeloption

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

stdouttext

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.

exit codeint

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

  1. Die Prüfung schaut auf Lizenz und Funktion WP-CLI.
  2. --collection wird zu einem Slug, und der Zielordner wird mit wp_mkdir_p() angelegt.
  3. Der Befehl braucht den Sanitizer aus Easy SVG Support und easy_svg_harden_icon_markup(). Unbereinigt wird nie etwas geschrieben.
  4. Ein index.php-Platzhalter kommt dazu, damit der Ordner im Browser nicht aufgelistet werden kann.
  5. Jede *.svg aus <dir> bekommt aus ihrem Dateinamen einen Slug, wird gelesen, bereinigt, gehärtet und als <slug>.svg geschrieben. Übersprungene Dateien werden mit denselben Gründen gemeldet wie bei wp easy-svg icons validate, dazu unwritable, wenn die Datei nicht geschrieben werden konnte.
  6. Der Scan-Cache des Ordners (ein Transient) wird gelöscht, damit der nächste Request ihn neu scannt.
  7. 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.json im Ordner kann einen anderen Slug nennen.

Die Sammlung erscheint nur, solange Theme- und Ordner-Quellen unter Icons → Funktionen an ist.

Stolperfallen

  • --label bewirkt nichts. Leg eine manifest.json mit label in den Zielordner, wenn die Sammlung einen lesbaren Namen braucht.
  • Ein falscher Quellpfad legt trotzdem den Ordner an. Zielordner und index.php entstehen, bevor die Quelle gelesen wird. Ein Tippfehler in <dir> meldet Copied 0 file(s), endet mit 0 und 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.svg wird odd-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.json aus dem Quellordner wird nicht mitkopiert. Eine zu große Datei wird kopiert und später als too-large gemeldet.
  • 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 -x am 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 --strict laufen, wenn ein halber Import deine Pipeline stoppen soll.
Der Befehl schreibt Dateien nach 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.

Siehe auch