Zmiana rozmiaru miniaturek w archiwum subkategorii – Woocommerce

Podczas, gdy rozmiary miniatur Woocommerce możemy zmieniać globalnie w ustawieniach szablonu, następuje problem, gdy chcemy użyć innych rozmiarów dla archiwum o typie wyświetlania “subkategorie”, ponieważ dziedziczony jest ten sam rozmiar i proporcje. Można to zmienić za pomocą filtru subcategory_archive_thumbnail_size:

function category_archive_thumbnail_size($u)
{
    return array(500, 350,true);
}
add_filter('subcategory_archive_thumbnail_size', 'category_archive_thumbnail_size');

Sprawdź jak włączyć przycinanie obrazu głównego na stronie produktu.

Dodatkowo należy zadeklarować nowy rozmiar miniatur oraz zregenerować pliki:

function register_size() {
   add_image_size( 'category_thumb', 500, 350,true );
}

add_action( 'after_setup_theme', 'register_size' );

Przycinanie głównego obrazu w Woocommerce 3.3+

W wersji Woocommerce 3.3 nastąpiło wiele zmian. Jedną z nich jest sposób zmiany rozmiarów obrazu głównego oraz miniaturek. Podczas, gdy do tej pory można było tego dokonać w ustawieniach woocommerce, teraz należy udać się do ustawień szablonu: Wygląd -> Personalizacja -> Woocommerce

Rozmiary obrazów możemy zadeklarować także za pomocą funkcji add_theme_support w następujący sposób:

add_theme_support( 'woocommerce', array(
 'thumbnail_image_width' => 250,
 'single_image_width' => 350,
) );

Problem pojawia się, gdy chcemy, by nasz główny obraz został przycięty w zastępstwie rozmiaru oryginalnego. Niestety jak widać na zrzucie powyżej, widnieje informacja: Rozmiar używany dla głównego obrazka na stronie produktu. Te obrazki nie będą przycinane.

Oznacza to, iż nie mamy wpływu na przycinanie z poziomu ustawień szablonu. W takim przypadku musimy użyć filtru, dodając go do functions.php zmieniając rozmiar obrazu głównego oraz aktywując tryb przycinania:

add_filter( 'woocommerce_get_image_size_single', 'own_size_woocommerce_mainimage_wpgeek' );
function own_size_woocommerce_mainimage_wpgeek()
{
    $size = array(
        'width'  => 300,
        'height' => 300,
        'crop'   => 1,
    );
    return $size;
}

Jeśli przed zmianami posiadaliśmy już produkty w naszym sklepie, należy zregenerować rozmiary obrazów, np. za pomocą wtyczki Regenerate Thumbnails.