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:
- Du importierst ein ZIP. ZIP-Dateien nutzen
easy_svg_pro_import_max_entriesundeasy_svg_pro_import_max_total_bytes. - Du lädst eine einzelne SVG in die Mediathek oder die Icon-Bibliothek. Das regelt
easy_svg_max_bytesdes kostenlosen Plugins.
Parameter
Die größte Font-Datei in Bytes, die der Set-Import liest. Standard ist 16777216.
Rückgabewert
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.
- Die Route prüft das Set, den Sanitizer, die hochgeladene Datei und den Härter.
- Endet der Dateiname auf
.zip, läuft der ZIP-Leser, und dieser Filter wird nicht genutzt. - Sonst wird die Datei als SVG-Font behandelt. Ihre Größe auf der Platte wird mit deiner Grenze verglichen, bevor sie gelesen wird.
- Zu groß: Die Antwort ist
413mit dem Codeeasy_svg_pro_file_too_large. - 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
.svgumbenanntes ZIP wird als Font gelesen, und eine Font namens.ziplandet 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_filesizestoppt größere Dateien vor dieser Prüfung.