Mam problem z usunięciem szerokości i wysokości z obrazów załączników podczas korzystania z wp_get_attachment_image. Właśnie tego używam do wyświetlenia obrazu
<?php echo $image = wp_get_attachment_image( $entry['slide_image_id'], true, 'full'); ?>
Jak to wygląda kod źródłowy
<img width="150" height="108" src="http://website:8888/wp-content/uploads/2015/12/cupcakes-and-cosmetics-logo.png" class="attachment-1 size-1" alt="cupcakes-and-cosmetics-logo" />
Chciałbym, aby wyświetlało się w ten sposób
<img src="http://website:8888/wp-content/uploads/2015/12/cupcakes-and-cosmetics-logo.png" class="attachment-1 size-1" alt="cupcakes-and-cosmetics-logo" />
Obraz jest pobierany z powtarzalnego pola pliku z wpisem o identyfikatorze slide_image_id. Rozglądam się i zauważam, że mogę użyć wp_get_attachment_image_url, ale kiedy używam go z powyższym kodem, obraz się nie wyświetla. Czy coś robię źle?
<?php echo $image = wp_get_attachment_image_url( $entry['slide_image_id'], true, 'full'); ?>
Uwaga dodatkowa: $ entry ['slide_image_id'] służy do wywołania pola mojego powtarzalnego pliku.
custom-field
attachments
images
użytkownik3756781
źródło
źródło
wp_get_attachment_image_url()
zwraca adres URL - nie element obrazu.add_filter('wp_get_attachment_image_attributes' ...
wyjątkiem tego, że tylko wysokość i szerokość są zakodowane na stałe.Odpowiedzi:
Twoje argumenty za obie
wp_get_attachment_image_url()
iwp_get_attachment_image()
są w złej kolejności - sprawdź dokumentację związaną szczegóły. Ponadtowp_get_attachment_image_url()
zwraca adres URL - nie rzeczywisty element obrazu.Niestety,
wp_get_attachment_image()
funkcja jest obecnie (od WordPress 4.4.1) zakodowana na stałe , aby wyprowadzać atrybutywidth
iheight
<img>
(patrz bilet # 14110 ), więc musisz sam zbudować znaczniki obrazu. Można to zrobić, pobierając wskazówki zewp_get_attachment_image()
źródła :źródło
<img>
bity generowania atrybutów zwp_get_attachment_image()
- chociaż pominąłem częścisrcset
isizes
użyte do responsywnych obrazów. Jeśli są one potrzebne,get_sizeless_attachment_image()
wskazane byłoby utworzenie funkcji .Obejście
Zrobiłem podstawowe kopanie / testowanie i znalazłem obejście przez
wp_constrain_dimensions
filtr:Wydaje się, że pozwala nam to usunąć wysokość i atrybuty szerokości z wygenerowanego obrazu HTML
wp_get_attachment_image()
, bez wychodzenia z kanonów reg-ex. Możemy również użyćwp_get_attachment_image_src
filtra w podobny sposób, aby usunąć szerokość / wysokość, ale zachować adres URL .Notatki
To rozwiązanie usunie
srcset
isizes
atrybuty, jak również. Ale jest to również możliwe, aby ustawić srcset i rozmiary atrybutów poprzez czwartego$attr
wejściowego argument.Jak wspomniano @bosco, zmieniłeś argumenty wejściowe ikony i rozmiaru w:
Zamiast tego użyj tego:
źródło
Po prostu użyłem CSS do tego. Nie działa we wszystkich scenariuszach, ale często wystarczy. Zróbmy zdjęcie 300 x 300 pikseli:
Ogranicza to wymiary obrazu bez utraty jego stosunku szerokości do wysokości. W przeciwnym razie możesz również użyć REGEX:
To były niektóre alternatywy. Powodzenia.
źródło