Chciałbym wiedzieć, czy istnieje prosty sposób (niestandardowy kod lub wtyczka), aby utworzyć rozmiary miniaturek tylko dla obrazów, które zamierzam wykorzystać jako polecane obrazy (index.php, archive.php itp.), Ale nie dla obrazów używane w postach (single.php). Moim głównym celem jest zmniejszenie wykorzystania miejsca na serwerze, nie tworząc miniatur, których mój motyw nigdy nie użyje.
Moje miniatury w rzeczywistości miałyby tylko dwa rozmiary, szerokość 720px i szerokość 328px, a obrazki o szerokości 720px (tylko strona główna) miałyby również rozmiar 328px (dla archive.php i sidebar.php)
Obecnie jedynym programowym sposobem, jaki znam, jest generowanie miniaturek dla każdego przesłanego obrazu , co jest niepożądane, ponieważ większość moich przesyłanych obrazów to posty i musiałbym ręcznie usunąć wiele obrazów z serwera.
Wolałbym niestandardowy kod niż wtyczki, ale wtyczka byłaby do przyjęcia. Wiem, że istnieją pewne wtyczki do zmiany rozmiaru obrazu, ale nie były one aktualizowane od dłuższego czasu (TimThumb, Dynamic Image Resizer ).
Znalazłem również podobne pytanie tutaj na Wordpress SE, ale zaakceptowana odpowiedź tak naprawdę nie rozwiązuje mojego problemu.
EDYCJA: Muszę usunąć lub zablokować miniatury zdjęć w poście, a nie polecanych zdjęć, tj .:
(1) Wyróżniony obraz : dodatkowe miniatury generowane automatycznie przez WP są OK.
(2) Obrazy użyte w postach : Prześlij oryginalny obraz i nie generuj żadnych dodatkowych rozmiarów. Przed przesłaniem będę go przycinać, zmieniać rozmiar i optymalizować, a jeden rozmiar będzie pasował do moich potrzeb.
źródło
_thumbnail_id
-, który powinien wystarczyć,save_post
a podobne haki mogą być dobrym rozwiązaniem. Ale nie zapominaj, że te obrazy w twoim poście mogą być użyte w innych postach jako miniatura, możesz chcieć mieć mechanizm, który to uwzględni.add_filter('intermediate_image_sizes_advanced', '__return_false')
a następnie zmień rozmiar miniatury w locie za pomocą GlideOdpowiedzi:
Ta funkcja wygeneruje obraz, tymczasowo rejestrując rozmiar obrazu, generując obraz (jeśli to konieczne) i usuwając rozmiar, aby nowe obrazy nie były tworzone w tym rozmiarze.
Jest „leniwy”, ponieważ obrazy nie są generowane, dopóki nie są potrzebne.
W twoim przypadku użycia nazwałbyś to
lazy_image_size
identyfikatorem miniatury postu, aby uzyskać obraz o pożądanym rozmiarze. Obraz zostanie wygenerowany przy pierwszym połączeniu. Kolejne wywołania pobierałyby istniejący obraz.Gist: https://gist.github.com/mtinsley/be503d90724be73cdda4
źródło
Możesz zobaczyć ten link . jest taki przykład
źródło
1. Przejdź do Pulpitu nawigacyjnego> Ustawienia> Media 2.
Odznacz Przytnij miniaturę do dokładnych wymiarów (zwykle miniatury są proporcjonalne)
3. Wprowadź 0 dla wszystkich danych wejściowych (0 dla wszystkich rozmiarów)
4. Dodaj je do swoich funkcji. Php
5.Upewnij się, że w twoich funkcjach nie ma linii kodu. Zacznij od
add_imge_size
Uwaga: Przypuszczam, że używasz rozmiaru 400 x 400 dla swojej miniatury Teraz, gdy prześlesz zdjęcie, utworzą tylko 2 wersje zamiast co najmniej 4 wersji zdjęcia jak poprzednio.źródło
aby uniemożliwić WordPressowi tworzenie dodatkowych rozmiarów tylko dla niektórych obrazów, musisz mieć sposób na wskazanie, że obraz, który PRZESYŁASZ, zostanie wykorzystany tylko do określonego celu. musi to nastąpić PRZED przesłaniem go.
ponieważ nie ma takiego interfejsu (gotowego do użycia) wskazującego takie opcje podczas operacji przesyłania, nie można zapobiec dodatkowemu generowaniu obrazu - chyba że istnieje wtyczka, która dodała tę funkcję.
ale dlaczego na świecie nie chcesz dodatkowych rozmiarów obrazu? nigdy nie wiadomo, kiedy możesz spotkać się z sytuacją, gdy chcesz użyć innego rozmiaru dowolnego obrazu. martwisz się o miejsce do przechowywania?
czy nie możesz użyć własnych specyfikacji rozmiaru takiego jak ten?
the_post_thumbnail( array(100, 100) );
większość odpowiedzi i komentarzy, które przeczytałem tutaj, wyjaśnia, jak dostosować środowisko WordPress do rozmiarów obrazów, ale żadna z nich nie wspomina o tym warunkowo. poza tym żaden z nich nie odnosi się do faktu, że musisz być w stanie wskazać użycie obrazu przed jego przesłaniem.
jeśli próbujesz zrekompensować zbyt mały obraz lub zbyt duży obraz w poście, możesz użyć kilku rzeczy.
CSS: możesz dodawać wpisy do arkusza stylów, takie jak:
.post-entry img { max-width:200px; max-height:300px; }
jest to bardziej uniwersalne i skuteczne niż poleganie na rozmiarze samego obrazu - TO DUŻO czasu na Photoshop.Szablon: możesz zmienić plik szablonu, w którym generowane są dane wyjściowe HTML i określić rozmiar obrazu:
zobacz tę dokumentację na WordPress: https://codex.wordpress.org/Function_Reference/the_post_thumbnail
źródło
Cześć - miałem podobny problem. WooCommerce używa obrazów katalogu do katalogów i powiązanych obrazów produktów. To nie jest idealne, ponieważ tracisz jakość obrazu lub szybkość. Próbowałem więc dodać czwartą kategorię zdjęć dla moich powiązanych produktów. Howdy McGee rozwiązał problem. Proszę spojrzeć na odpowiedź Howdy McGees:
Sprawdziło się doskonale dla moich potrzeb. W przypadku twojego problemu można zastosować tę samą logikę. Mam nadzieję że to pomoże.
Pozdrowienia,
Theo
** Dodatek: **
Znalazłem rozwiązanie, które działa.
Krok 1: Przypisz nowy rozmiar miniatury w pliku functions.php. Sprawdź referencję: wp codex !
Uwaga: „kciuk”, później użyjesz tej nazwy zmiennej
Krok 2: Następnie dodaj następujący kod wszędzie tam, gdzie chcesz wyświetlać polecane produkty:
Odnośnik i informacje: ( www.haloseeker.com/display-woocommerce-featured-products-with--shortcode/ )
Umieściłem go w index.php (mojej stronie głównej) mistyle wootheme. Nie zapomnij użyć „kciuka” on-line:
Krok 3: Ponownie wygeneruj miniatury, użyj wtyczki https://wordpress.org/plugins/regenerate-thumbnails/
Krok 4: Odśwież przeglądarkę, sprawdź DOM i porównaj wartości
W zależności od motywu możesz zmienić nazwy znaczników i klas. Przetestowałem powyższą metodę i działa ona dobrze.
Jedyne, czego do tej pory nie mogłem zrobić, to dodać przycisk „dodaj do koszyka”, ponieważ nie wiem, jak zapisać zmienną w skrócie przycisku „dodaj do koszyka”. To jest kod:
Mam nadzieję, że to pomoże.
Z pewnością jest to bardziej elegancki sposób. Na przykład z funkcją w pliku functions.php
Pozdrowienia,
Theo
źródło