add_image_size () dla określonych typów postów


18
set_post_thumbnail_size( 80, 80, true ); // true for all post types

Załóżmy, że mam na blogu dwa typy postów: post, wideo i produkt. Mogę chcieć obrazu 80 x 80 dla moich postów, ale 100 x 100 dla moich filmów i 50 x 100 dla moich Produktów. O ile mi wiadomo, jestem zmuszony tworzyć miniatury dla moich zdjęć w postach o wymiarach 100 x 100, a także 50 x 100. W przypadku moich produktów jestem zmuszony tworzyć miniatury o wymiarach 80 x 80 i 100 x 100, mimo że nigdy ich nie użyję.

Czy istnieje sposób na tworzenie rozmiarów obrazów opartych na typach postów, aby nie stworzyć zestawu zdjęć, których nie planujesz używać, i marnować zasoby, których można by użyć w innym miejscu?


Natrafiłem na dokładnie tę samą potrzebę.
MikeSchinkel

Co się stanie, jeśli użyjesz tej funkcji image_resize w kompozycji w częściach, w których potrzebujesz tego rozmiaru obrazu? Możesz także napisać funkcję skrótu do wielu zastosowań w zależności od kontekstu.

Wydaje mi się to oczywistym niedopatrzeniem, czy to naprawdę nie zostało jeszcze rozwiązane?
Nathan Hornby

Odpowiedzi:


12

Nie ma sposobu, aby oprzeć rozmiary obrazów na typie postu, ponieważ obrazy nie są jeszcze dołączane do postu podczas ich przesyłania, a tworzone są rozmiary pośrednie (po dodaniu ich za pomocą „New Media” nawet nie są dołączane do dowolnego postu).

Jednak niedawno stworzyłem dwie wtyczki, które razem będą robić, co chcesz. Wirtualne obrazy pośrednie przechwycą tworzenie pośrednich rozmiarów obrazów: nie zostaną utworzone na dysku, ale nadal będą istnieć w tablicy metadanych. To sprawia, że ​​WordPress myśli, że istnieją, więc możesz używać ich jak zwykłych obrazów. Wtyczka towarzysząca, On-Demand Resizer , utworzy brakujące rozmiary obrazu, gdy zostaną o to poproszone. Przy pierwszym żądaniu utworzenia obrazu, wszystkie kolejne żądania zostaną obsłużone tylko dla nowo utworzonego obrazu.

Wtyczki te wymagają przepisania przed umieszczeniem ich w katalogu wtyczek WordPress, ale powinny być bezpieczne. Lub przynajmniej mają TODOkomentarze tam, gdzie są niebezpieczne.


Ładny!
MikeSchinkel

2

Umieściłem kod w tym drugim wątku, który ustawia stan przejściowy z typem postu podczas przesyłania obrazu, a następnie sprawdza wartość tego stanu przejściowego i odpowiednio dostosowuje rozmiar miniatury postu po zakończeniu przesyłania. Nie jest idealny ani kuloodporny, ale powinien przynajmniej zademonstrować tę koncepcję.


0

Wymyśliłem następujące rozwiązanie. Tworzy obrazy tylko dla niestandardowego typu postu, bez tworzenia dodatkowych. Jedynym problemem jest to, że jeśli używasz wtyczek takich jak zaawansowane pola niestandardowe, podczas próby renderowania pola galerii wyświetlane są tylko domyślne rozmiary obrazów Wordpress: „miniatura”, „średnia”, „duża” i nie możesz uzyskać dostępu do utworzonych niestandardowych rozmiarów obrazów postów .

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.