Upraveno 5 prosince, 2023 23:55
Defaultně nemáte ve WordPressu možnost jak nahrát SVG obrázek. Z bezpečnostních důvodů to WordPress nepovoluje. Pokud ale z nějakého důvodu tyto typy obrázků na webu potřebujete, je možné je celkem jednoduše povolit pomocí krátkého kódu. Tento kód navíc kontroluje, jaké oprávnění ve WordPressu máte a upload SVG povoluje pouze administrátorům. Pokud Vás tedy zajímá, jak ve WordPressu povolit upload SVG pomocí snippetu, pak čtěte dále.
Proč nemůžu nahrávat soubory SVG do WordPressu?
- Bezpečnostní rizika: SVG soubory jsou flexibilní a mohou obsahovat kód, který se vykonává při jejich zobrazení. To představuje bezpečnostní riziko, protože útočníci mohou využít SVG soubory k provedení škodlivých činností. Například mohou na web vložit nežádoucí kód, či skryté odkazy.
- Potenciální zranitelnosti: Existuje mnoho variant SVG souborů a každá z nich může mít své vlastní zranitelnosti. WordPress nemusí být v dané chvíli dobře zabezpečený vůči takovým zranitelnostem, a proto je z bezpečnostního hlediska lepší tyto soubory defaultně zakázat.
- Javascripty v SVG: SVG soubory jsou vlastně XML dokumenty, které mohou obsahovat skriptovací kód v jazyce JavaScript. To znamená, že lze vložit skripty do SVG souborů a tyto skripty se budou vykonávat při zobrazení SVG na webové stránce.
Jak ve WordPressu povolit upload SVG pomocí snippetu
Abyste mohli do webu vkládat krátké php kódy, jinak nazývané také snippety, budete potřebovat plugin. V oficiálním repozitáři je jich několik. Osobně jsem si ale oblíbil plugin WPCode. Je dostupný i na této adrese: https://wordpress.org/plugins/insert-headers-and-footers/
Díky tomuto pluginu můžete velice snadno přidat do systému kód, který se bude spouštět a provádět Vámi definované akce a funkce. Podrobný návod, pokud jste s takovýmto pluginem ještě nikdy nepracovali najdete zde: Jak do WordPressu vkládat vlastní kódy
Pokud jste si článek přečetli, pak již patrně tušíte, jak takový snippet do webu přidat. Kód pro povolení SVG vypadá takto:
/**
* Allow SVG uploads for administrator users.
*
* @param array $upload_mimes Allowed mime types.
*
* @return mixed
*/
add_filter(
'upload_mimes',
function ( $upload_mimes ) {
// By default, only administrator users are allowed to add SVGs.
// To enable more user types edit or comment the lines below but beware of
// the security risks if you allow any user to upload SVG files.
if ( ! current_user_can( 'administrator' ) ) {
return $upload_mimes;
}
$upload_mimes['svg'] = 'image/svg+xml';
$upload_mimes['svgz'] = 'image/svg+xml';
return $upload_mimes;
}
);
/**
* Add SVG files mime check.
*
* @param array $wp_check_filetype_and_ext Values for the extension, mime type, and corrected filename.
* @param string $file Full path to the file.
* @param string $filename The name of the file (may differ from $file due to $file being in a tmp directory).
* @param string[] $mimes Array of mime types keyed by their file extension regex.
* @param string|false $real_mime The actual mime type or false if the type cannot be determined.
*/
add_filter(
'wp_check_filetype_and_ext',
function ( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ) {
if ( ! $wp_check_filetype_and_ext['type'] ) {
$check_filetype = wp_check_filetype( $filename, $mimes );
$ext = $check_filetype['ext'];
$type = $check_filetype['type'];
$proper_filename = $filename;
if ( $type && 0 === strpos( $type, 'image/' ) && 'svg' !== $ext ) {
$ext = false;
$type = false;
}
$wp_check_filetype_and_ext = compact( 'ext', 'type', 'proper_filename' );
}
return $wp_check_filetype_and_ext;
},
10,
5
);
Závěr
Pokud přidáte tento snippet do systému a zároveň ho aktivujete, uživatelé systému budou schopni nahrávat soubory s koncovkou .SVG. Pozor, tuto možnost mají pouze uživatelé s administrátorskými právy. Ostatní nikoliv. U nahrávání SVG ale buďte vždy ostražití a používejte tyto obrázky pouze z ověřených zdrojů.
Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.
Byl pro Vás tento článek užitečný?
Klikni na počet hvězd pro hlasování.
Průměrné hodnocení. 0 / 5. Počet hlasování: 0
Zatím nehodnoceno! Buďte první
Je mi líto, že pro Vás nebyl článek užitečný.
Jak mohu vylepšit článek?
Řekněte mi, jak jej mohu zlepšit.
Odebírejte Newsletter
Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.