[email protected]

Na maily odpovídáme denně

+420 603 48 78 48

V pracovní dny od 9 do 16 h

On-line meeting

Naplánujte si ho podle sebe

Bezpečné načítání SVG souborů do WordPress

Sdílení pomůže ostatním

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í:

  1. 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.
  2. 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.
  3. Definuje funkci allow_svg_upload(), která umožňuje nahrávat SVG soubory tím, že je přidá do povolených typů souborů.
  4. 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.
  5. Připojuje funkci add_svg_upload_capability() k akci admin_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čí.