Ne každému musí vyhovovat základní velikosti, které jsou ve wordpressu nastavené. Je sice možné, si základní velikosti změnit v administraci, ale co když chcete přidat ještě nějakou jinou velikost, k těm co již v administraci jsou? Tak to jste tu správně, jelikož díky krátkému kódu váš problém vyřešíme. Dost však bylo řečí a jdeme se pustit do práce 🙂 .
Celý úkon si rozdělíme na 3 části. Napřed si vytvoříme vlastní velikost, poté tuto velikost doplníme do možností výběru v galerii a nakonec vytvoříme novou velikost i u starších souborů. Všechny části kódu se vkládají do souboru functions.php, který najdete ve vámi právě aktivované šabloně.
Vytvoření vlastní velikosti
add_action( 'after_setup_theme', 'vlastni_velikost' );
function vlastni_velikost() {
add_image_size( 'prvni-velikost', 300 ); // 300 pixelů (neomezená výška)
add_image_size( 'druha-velikost', 220, 60, true); // (ořezané)
}
První řádek s add_image_size vytváří velikost, která nebude ořezaná, ale jenom zmenšená. Tedy bude vidět celý obrázek, ale jen v menší velikosti. Druhý řádek se stejným parametrem udělá to, že obrázek zmenší, ale i ořízne. Vznikne tedy neúplná miniatura. Ještě si řekneme, co který parametr znamená. První je název nové miniatury, druhý parametr je šířka obrázku, čtvrtý parametr je výška obrázku a posledním parametrem je volba ořezání.
Nastavení vlastní velikosti do voleb
add_filter( 'image_size_names_choose', 'moje_velikosti' );
function moje_velikosti( $sizes ) {
return array_merge( $sizes, array(
'prvni-velikost' => __( 'Moje nová velikost' ),
'druha-velikost' => __( 'Druhá velikost ořezaná' ),
) );
}
Tato část kódu nám vloží volbu miniatury v galerii médií. Na levé straně uvádíme náš název velikosti z předchozího kódu. Do závorky uvádíme název, který chceme zobrazit v galerii médií při výběru. K názvu se automaticky přiřadí i velikost miniatury, jako je tomu u základní velikostí ve wordpressu.
Vytvoření miniatur pro starší obrázky
Jelikož miniatury se vytváří při ukládání souboru, tak se nám nová velikost miniatur nevytvoří u starších obrázků, které jsou již nahrané. Pokud však chceme vytvořit miniatury i u těchto obrázků, tak využijeme následující kód.
add_action( 'after_setup_theme', 'vytvoreni_miniatur' );
function vytvoreni_miniatur() {
$args = array( 'post_type' => 'attachment', 'numberposts' => 20, 'post_status' => null, 'post_parent' => null, 'post_mime_type' => 'image' );
$attachments = get_posts( $args );
if ($attachments) {
foreach ( $attachments as $post ) {
$file = get_attached_file( $post->ID );
wp_update_attachment_metadata( $post->ID, wp_generate_attachment_metadata( $post->ID, $file ) );
}}}
Tento kód má jen jeden parametr a to je číslo 20 ten udává, kolik obrázků se má zpracovat. Při ukládání tohoto kódu se vytváří nové miniatury, tak že to může chvíli trvat a je také možné, že nebude mít dostatečný výkon serveru. Při normálním počtu do pár stovek obrázků, by však neměl být problém. Kód potom smažte, jelikož se při každém načtení stránky wordpress snaží vygenerovat nové miniatury.
Tak a to by bylo k dnešnímu návodu vše. Již máte své vlastní miniatury, můžete si je zvolit v galerii médií a také si umíte vygenerovat náhledy ke starým obrázkům. Budu rád za sdílení 🙂 .