SVG (Scalable Vector Graphics) je vektorový formát obrázků, který se stává stále populárnějším pro použití na webových stránkách. Díky své vektorové povaze je ideální pro loga, ikonky a další grafické prvky, které potřebují být zobrazeny v různých velikostech a rozlišeních, aniž by ztratily kvalitu. Navíc SVG soubory mají obvykle menší velikost než bitmapové obrázky, což zlepšuje načítání stránek a snižuje zatížení serveru.
WordPress v základním nastavení nepodporuje nahrávání SVG souborů, a to kvůli bezpečnostním rizikům spojeným se škodlivým kódem, který může být vložen do SVG souborů. Avšak s několika úpravami kódu můžete bezpečně povolit nahrávání SVG souborů na vašem WordPress webu, aniž byste museli používat zásuvný modul.
Následujte tyto kroky, abyste bezpečně povolili načítání SVG souborů do WordPress prostřednictvím souboru functions.php
vaší šablony:
1. Přístup k souboru functions.php
Otevřete soubor functions.php
ve vaší aktivní šabloně WordPress. Soubor najdete v adresáři této šablony (např. wp-content/themes/{nazev-sablony}/functions.php
).
2. Vložte kód do souboru functions.php
Do souboru functions.php
vložte následující kód na konec souboru:
// Funkce pro kontrolu, zda má uživatel oprávnění k nahrávání SVG souborů
function user_can_upload_svg() {
$user = wp_get_current_user();
return in_array( 'administrator', (array) $user->roles );
}
// Funkce pro povolení nahrávání SVG souborů pouze pro administrátorské rozhraní
function add_svg_upload_capability() {
if ( user_can_upload_svg() ) {
add_filter( 'upload_mimes', 'allow_svg_upload' );
add_filter( 'wp_check_filetype_and_ext', 'validate_svg_upload', 10, 4 );
}
}
// Funkce pro povolení nahrávání SVG souborů
function allow_svg_upload( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
// Funkce pro ověření, zda soubor SVG neobsahuje nebezpečné kódy
function validate_svg_upload( $data, $file, $filename, $mimes ) {
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadXML(file_get_contents($file));
libxml_use_internal_errors(false);
$has_script_tag = $dom->getElementsByTagName('script')->length > 0;
$has_input_tag = $dom->getElementsByTagName('input')->length > 0;
$has_embed_tag = $dom->getElementsByTagName('embed')->length > 0;
$has_object_tag = $dom->getElementsByTagName('object')->length > 0;
$has_dangerous_code = $has_script_tag || $has_input_tag || $has_embed_tag || $has_object_tag;
if ( $has_dangerous_code ) {
$data['error'] = 'Soubor obsahuje nebezpečný kód.';
}
return $data;
}
// Připojení funkce add_svg_upload_capability k akci admin_init
add_action( 'admin_init', 'add_svg_upload_capability' );
3. Uložte soubor functions.php
Uložte změny provedené v souboru functions.php
. Nyní byste měli být schopni nahrávat SVG soubory na vašem WordPress webu, ale pouze pokud jste přihlášeni jako administrátor.
Vysvětlení kódu
Kód, který jste přidali do souboru functions.php
, provede následující:
- Definuje funkci
user_can_upload_svg()
, která kontroluje, zda má aktuálně přihlášený uživatel právo nahrávat SVG soubory. V tomto případě je právo omezeno na uživatele s rolí administrátora. - Definuje funkci
add_svg_upload_capability()
, která přidává filtry pro povolení a validaci SVG souborů, pokud uživatel má právo nahrávat SVG soubory. - Definuje funkci
allow_svg_upload()
, která umožňuje nahrávat SVG soubory tím, že je přidá do povolených typů souborů. - Definuje funkci
validate_svg_upload()
, která kontroluje, zda nahrávaný SVG soubor obsahuje potenciálně nebezpečné kódy. Pokud soubor obsahuje nebezpečný kód, vrátí chybovou zprávu. - Připojuje funkci
add_svg_upload_capability()
k akciadmin_init
, která se spustí při načítání administrátorského rozhraní.
Nyní byste měli být schopni bezpečně nahrávat SVG soubory do vašeho WordPress webu, aniž byste museli používat zásuvný modul. Nezapomeňte vždy kontrolovat zdroj, bezpečnost a spolehlivost SVG souborů, které nahráváte, abyste udrželi svůj web v bezpečí.