Importeasy_svg_pro_import_font_max_bytes

easy_svg_pro_import_font_max_bytes

Lege die größte SVG-Icon-Font fest, die der Set-Import von Easy SVG Pro liest. Größere Fonts werden mit HTTP 413 abgelehnt, bevor sie geladen werden.

Filter · Easy SVG Pro · Status: Stabil

Der Set-Editor kann eine SVG-Icon-Font importieren und aus jedem Glyph ein eigenes Icon machen. Eine Font-Datei wird am Stück in den Speicher gelesen. Easy SVG Pro prüft deshalb zuerst ihre Größe und lehnt alles über 16 MB ab. Dieser Filter legt die Größe fest.

Verwendung

apply_filters( 'easy_svg_pro_import_font_max_bytes', int $bytes )

Angewendet in includes/core/rest.php, in rest_import_set(). Das Ergebnis wird in eine Ganzzahl umgewandelt.

Wann du es brauchst

  • Eine ältere Icon-Font (manche kommen als eine große SVG-Datei) wird als zu groß abgelehnt.
  • Du willst auf einem kleinen Host große Font-Importe verbieten.

Nicht dafür gedacht:

Parameter

body
$bytesint
Required

Die größte Font-Datei in Bytes, die der Set-Import liest. Standard ist 16777216.

Rückgabewert

returnint

Die Größengrenze in Bytes. Eine größere Datei wird abgelehnt, eine Datei genau dieser Größe kommt durch.

Standardwert

16777216 (16 MB).

Beispiele

Eine größere alte Font erlauben

function acme_import_font_max_bytes( $bytes ) {
	return max( $bytes, 24 * MB_IN_BYTES );
}
add_filter( 'easy_svg_pro_import_font_max_bytes', 'acme_import_font_max_bytes' );

Nur kleine Fonts

/**
 * Unsere Fonts sind unter 2 MB. Alles Größere ist ein Versehen.
 */
function acme_import_font_small( $bytes ) {
	return min( (int) $bytes, 2 * MB_IN_BYTES );
}
add_filter( 'easy_svg_pro_import_font_max_bytes', 'acme_import_font_small' );

Die Ablehnung im eigenen Client behandeln

const res = await fetch( `/wp-json/easy-svg-pro/v1/sets/${ setId }/import`, {
	method: 'POST',
	headers: { 'X-WP-Nonce': wpApiSettings.nonce },
	body: formData,
} );
if ( res.status === 413 ) {
	const err = await res.json();
	// err.code === 'easy_svg_pro_file_too_large'
}

So funktioniert es

Die Prüfung sitzt in POST /easy-svg-pro/v1/sets/{id}/import, der Route hinter dem Import-Knopf des Set-Editors. Sie braucht manage_options, eine aktive Lizenz und die Funktion Icon-Set-Editor.

  1. Die Route prüft das Set, den Sanitizer, die hochgeladene Datei und den Härter.
  2. Endet der Dateiname auf .zip, läuft der ZIP-Leser, und dieser Filter wird nicht genutzt.
  3. Sonst wird die Datei als SVG-Font behandelt. Ihre Größe auf der Platte wird mit deiner Grenze verglichen, bevor sie gelesen wird.
  4. Zu groß: Die Antwort ist 413 mit dem Code easy_svg_pro_file_too_large.
  5. Klein genug: Die Font wird gelesen, jeder Glyph wird ein Icon, und jedes Icon wird bereinigt und gehärtet.

Die Route liest nur. Sie antwortet mit den Icons und einer Anzahl, und der Set-Editor übernimmt sie in seinen Zustand. Gespeichert wird erst, wenn jemand auf Speichern klickt.

Stolperfallen

  • Nur der Dateiname entscheidet. Ein in .svg umbenanntes ZIP wird als Font gelesen, und eine Font namens .zip landet im ZIP-Leser und importiert nichts.
  • Auch das Parsen kostet Speicher. Nach dem Lesen wird die Font als XML geparst. Eine Grenze weit über 16 MB kann auf einem kleinen Host trotzdem den Speicher sprengen.
  • Nicht die Upload-Grenze. PHPs upload_max_filesize stoppt größere Dateien vor dieser Prüfung.

Siehe auch