Rôzne veľkosti obrázkov pre rôzne typy obsahu

S príchodom vlastných typov obsahu vo WordPresse sa vynára potreba mať rôzne nastavenia veľkosti obrázkov pre rôzne typy obsahu. Napríklad ak nahrám obrázok ku článku, tak potrebujem aby bol zmenšený dajme tomu na 700×500 px, ale ak ho nahrávam do galérie, tak potrebujem len náhľad napríklad 100×100 px. Toto však nie je možné so štandardným nastavením vo WP.

Ale tak ako vždy, tak aj na túto situáciu poznám riešenie ;). Viď nasledujúci kód:

function gallery_upload($metadata, $attachment_id) {
	$post_id = $_POST['post_id'];
	
	// ak sa nejadná o obrázok k typu obsahu 'galeria', tak nerobime nic
	if(get_post_type($post_id) != 'galeria')
		return $metadata;
		
	// ináč si vytvoríme potrebné veľkosti obrázkov a aktualizujeme metadata prílohy
	$upload_dir = wp_upload_dir();
	$file = image_resize($upload_dir['basedir'] . '/' . $metadata['file'], 100, 100, true, 'thumb');
	$metadata['sizes']['thumbnail'] = array('file' => basename($file), 'width' => 100, 'height' => 100);
	return $metadata;
}
add_filter('wp_generate_attachment_metadata', 'gallery_upload', 10, 2);

Uvedený kód definuje filter, ktorý sa vykoná vždy keď sa pre nahraný obrázok generujú meta dáta. Napríklad pri nahrávaní príloh cez administračné rozhranie. Ak sa zistí, že nahrávame obrázok pre typ obsahu galeria, tak si vytvoríme náhľad obrázku s názvom thumbnail a veľkosťou 100×100 px.

Takto si môžeme zadefinovať lubovoľný počet rôznych veľkostí pre rôzne typy obsahu, presne podľa toho ako nám to vyhovuje.


Posted

in

by

Comments

2 odpovede na na “Rôzne veľkosti obrázkov pre rôzne typy obsahu”

  1. […] článku, ktorým som vydal predvčerom, som uviedol návod ako generovať rôzne veľkosti obrázkov pre rôzne typy obsahu. Ak však použijete pre vlastnú veľkosť obrázoku “neštandardné” meno, tak sa pri […]

  2. […] som Vám ukázal, ako si vytvoriť rôzne veľkosti obrázkov nahrávaných príloh. Dnes Vám ukážem, ako prílohy ukladať do rôznych adresárov na základe […]

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *