Quellen und Sammlungeneasy_svg_pro_theme_collection_slug

easy_svg_pro_theme_collection_slug

Lege den Slug fest, unter dem assets/icons deines aktiven Themes registriert wird, damit Templates acme/phone statt theme/phone aufrufen.

Filter · Easy SVG Pro · Status: Stabil

Der Ordner assets/icons des aktiven Themes wird als eine Icon-Sammlung gelesen. Ihr Slug ist die erste Hälfte jeder Icon-Adresse, etwa theme/phone. Mit diesem Filter bestimmst du diesen Slug, zum Beispiel den Markennamen deines Kunden.

Verwendung

apply_filters( 'easy_svg_pro_theme_collection_slug', string $slug )

Angewendet in includes/sources/sources.php, in boot_sources() auf init mit Priorität 9.

Wann du es brauchst

  • Du baust ein Theme für einen Kunden und willst die Icons als acme/phone ansprechen. Das liest sich in Templates besser und lässt sich nicht mit den Icons eines anderen Themes verwechseln.
  • Du stellst eine Seite auf ein neues Theme um, und die alten Adressen sollen weiter funktionieren: Gib den Slug zurück, den das alte Theme verwendet hat.
  • Dein Theme kann keine manifest.json mit slug mitbringen (etwa ein Eltern-Theme, das dir nicht gehört), aber ein Child-Theme oder Plugin kann diesen Filter setzen.

Nicht geeignet, wenn:

  • Dein Theme eine manifest.json in assets/icons haben kann. Ein "slug" dort erledigt dasselbe ohne Code, und dieser Filter bekommt ihn trotzdem als Standardwert.
  • Deine Icons nicht in assets/icons liegen. Registriere den Ordner dann mit easy_svg_register_icon_collection().

Parameter

body
$slugstring
Required

Der Slug, unter dem die Theme-Sammlung registriert würde: der slug aus assets/icons/manifest.json des Child-Themes, sonst der des Eltern-Themes, sonst theme.

Rückgabewert

returnstring

Der Slug der Sammlung. Er wird in einen String umgewandelt und nicht geprüft. Gib nur Kleinbuchstaben, Ziffern, Bindestriche und Unterstriche zurück, am Anfang und Ende ein Buchstabe oder eine Ziffer, und nie einen leeren String.

Standardwert

'theme', oder der slug aus der manifest.json im Theme-Ordner (Child vor Eltern).

Beispiele

Ein fester Marken-Slug

/**
 * Die Icons dieses Themes als acme/icon-name ansprechen.
 */
function acme_theme_icon_slug( $slug ) {
	return 'acme';
}
add_filter( 'easy_svg_pro_theme_collection_slug', 'acme_theme_icon_slug' );

Manifest-Slug behalten, sonst den Ordnernamen des Themes

/**
 * Den Slug aus dem Manifest nehmen, wenn es einen gibt, sonst den Ordner des Stylesheets.
 */
function acme_theme_icon_slug_from_folder( $slug ) {
	if ( 'theme' !== $slug ) {
		return $slug;
	}

	$folder = sanitize_key( get_stylesheet() );

	return '' !== $folder ? $folder : $slug;
}
add_filter( 'easy_svg_pro_theme_collection_slug', 'acme_theme_icon_slug_from_folder' );

sanitize_key() kann einen Unterstrich am Anfang oder Ende stehen lassen. Wenn deine Theme-Ordner so heißen können, kürze ihn mit trim( $folder, '_-' ).

Alte Adressen nach einem Theme-Wechsel erhalten

/**
 * Die Seite lief vorher mit "Agency Classic", dessen Icons agency/* hießen.
 * Das neue Theme bringt dieselben Dateinamen mit, also bleibt der Slug.
 */
function acme_keep_legacy_icon_slug( $slug ) {
	return 'agency';
}
add_filter( 'easy_svg_pro_theme_collection_slug', 'acme_keep_legacy_icon_slug' );

Defensiv: nur einen gültigen Slug annehmen

function acme_safe_theme_icon_slug( $slug ) {
	$wanted = defined( 'ACME_ICON_SLUG' ) ? (string) ACME_ICON_SLUG : '';

	if ( 1 === preg_match( '/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/', $wanted ) ) {
		return $wanted;
	}

	return $slug;
}
add_filter( 'easy_svg_pro_theme_collection_slug', 'acme_safe_theme_icon_slug' );

Das Muster ist dasselbe, das Easy SVG für Icon- und Sammlungsnamen verwendet.

So funktioniert es

Das läuft nur, solange die Lizenz aktiv ist, Theme- und Ordner-Quellen unter Icons → Funktionen eingeschaltet ist und das kostenlose Plugin bereinigen und härten kann. Dann bei jedem Request:

  1. assets/icons des Eltern-Themes und des aktiven (Child-)Themes werden gescannt. Ist es derselbe Ordner, wird er einmal gelesen.
  2. Beide werden zu einer Sammlung zusammengeführt. Ein Icon im Child-Theme ersetzt das gleichnamige Icon des Eltern-Themes. slug und label aus dem Manifest des Child-Themes gewinnen gegen die des Eltern-Themes.
  3. Der Standard-Slug ist der Slug aus dem Manifest, sonst theme. Das Label ist das label aus dem Manifest, sonst "Theme icons".
  4. Dieser Filter wird auf den Slug angewendet. Er läuft auch dann, wenn das Theme gar keinen Icon-Ordner hat.
  5. Die Sammlung wird unter dem zurückgegebenen Slug registriert, und die Oberflächen vermerken sie als Theme-Sammlung, samt der Info, ob ein Child-Theme Icons des Eltern-Themes überschreibt.

Drop-in-Ordner unter wp-content/easy-svg-icons werden nach dem Theme registriert. Will einer davon denselben Slug, weicht der Drop-in aus (etwa auf acme-2).

Der Slug wird nirgends gespeichert. Er wird bei jedem Request neu bestimmt, ein geänderter Filter wirkt also beim nächsten Seitenaufruf.

Stolperfallen

  • Umbenennen bricht jede Adresse. Blöcke, eigene Felder, Twig-Templates und PHP-Aufrufe speichern die volle Adresse theme/phone. Änderst du den Slug auf einer Live-Seite, zeigen sie alle nichts mehr. Leg den Slug fest, bevor Inhalte entstehen, oder behalte den alten.
  • Niemand prüft deinen Rückgabewert. Ein Großbuchstabe, ein Leerzeichen oder ein leerer String wird so verwendet. Die Icon-API von WordPress lehnt die Sammlung dann womöglich ab, und Icon-Adressen passen nicht mehr. Gib einen sauberen Slug in Kleinbuchstaben zurück.
  • Zwei Sammlungen, ein Slug. Gibst du den Slug eines vorhandenen Icon-Sets oder einer Code-Registrierung zurück, werden beide zu einer Sammlung: Icons kommen nach Namen dazu, und das Label der zuletzt registrierten gewinnt.
  • Das ist kein Label. Der Name im Inserter kommt aus dem label im Manifest, sonst "Theme icons". Dieser Filter ändert nur den Slug.
  • Ein Theme-Wechsel ändert den Standard. Ein neues Theme ohne Manifest fällt auf theme zurück, eines mit anderem Manifest-Slug ändert jede Adresse. Pack den Filter in ein Plugin, wenn die Adressen einen Theme-Wechsel überleben müssen.

Siehe auch