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.
Pridaj komentár