Czy to możliwe, aby ustawić wyróżniony obraz z zewnętrznym adresem URL obrazu
20
Wiem, że istnieją wtyczki, które pobierają obrazy ze zdalnego adresu URL i przechowują lokalnie. Chcę tylko wiedzieć, czy możliwe jest nie do przechowywania obrazu w bibliotece mediów jeszcze używać go jako Ciekawa obrazu ?
Możesz to zrobić za pomocą niestandardowego pola, w którym zapisujesz adres URL obrazu zewnętrznego. Może być trudno sprawić, aby działał za każdym razem, gdy the_post_thumnail()jest obecny (lub podobna funkcja), lub aby działał z różnymi rozmiarami obrazu zdefiniowanymi przez motyw lub wtyczkę.
Czy przechowuje obraz lokalnie lub dzwoni zdalnie?
Volatil3,
@ Volatil3 Nie testowałem, ale czytając opis wtyczki powiedziałbym, że wywołuje ją zdalnie.
Andy Macaulay-Brook
Odpowiedzi:
35
Tak, jest to możliwe i dość łatwe.
Oto przepływ pracy, który sugeruję:
Umieść gdzieś interfejs użytkownika, aby wstawić adres URL polecanego obrazu. Prawdopodobnie najlepszym wyborem jest użycie 'admin_post_thumbnail_html'haka filtrującego
Użyj 'save_post'haka akcji, aby zapisać adres URL (po procedurze bezpieczeństwa i sprawdzania poprawności) w niestandardowej meta postu
Użyj 'post_thumbnail_html'haka filtru, aby wyprowadzić odpowiedni <img>znacznik, zastępując domyślny, jeśli post, dla którego wymagany jest wyróżniony obraz, ma meta postu z zewnętrznym wyróżnionym obrazem
Ponadto musimy upewnić się, że '_thumbnail_id'wartość meta ma niepustą wartość, gdy ustawimy meta dla zewnętrznego adresu URL, w przeciwnym razie has_post_thumbnail()zwróci false dla postów, które mają tylko zewnętrzny wyróżniony obraz.
W rzeczywistości możliwe jest, że post ma zarówno standardowy lokalny obraz polecany, jak i jeden zestaw za pośrednictwem naszego przepływu pracy, w tym przypadku zostanie użyty zewnętrzny.
Aby wdrożyć nasz obieg pracy, potrzebujemy funkcji do sprawdzania poprawności adresu URL używanego jako obraz z wyróżnieniem zewnętrznym, ponieważ musimy upewnić się, że jest to prawidłowy adres URL obrazu.
Istnieją różne sposoby wykonania tego zadania; tutaj używam bardzo prostego sposobu, który patrzy tylko na adres URL, bez pobierania obrazu. Działa to tylko w przypadku statycznych adresów URL obrazów i nie weryfikuje, czy obraz rzeczywiście istnieje, ale jest szybki. W razie potrzeby zmień go na coś bardziej zaawansowanego ( oto pomoc).
Ta funkcja, po sprawdzeniu zabezpieczeń, sprawdza wysłany adres URL i jeśli jest w porządku, zapisuje go w '_thumbnail_ext_url'meta post. Jeśli adres URL jest pusty, a meta została zapisana, jest ona usuwana, umożliwiając usunięcie meta po prostu przez opróżnienie pola zewnętrznego adresu URL.
Ostatnią rzeczą do zrobienia jest wyświetlenie opisanego znacznika obrazu, gdy nasz adres URL obrazu zewnętrznego jest ustawiony w meta:
W prezentowanym obrazie wyjściowym, którego nie użyłem widthani heightwłaściwości, ani klas, które zwykle dodaje WordPress 'attachment-$size'. Wynika to z tego, że wąchanie rozmiaru obrazu wymaga dodatkowej pracy, która spowolni ładowanie strony, zwłaszcza jeśli na stronie znajduje się więcej niż jeden wyróżniony obraz.
Jeśli potrzebujesz tych atrybutów, możesz użyć mojego kodu, dodając wywołanie zwrotne do wp_get_attachment_image_attributes'filtrowania (jest to standardowy hak WordPress ), a może możesz zmienić mój kod, aby wąchać rozmiar obrazu oraz atrybuty i klasy związane z danymi wyjściowymi.
Plugin Gist
Cały kod zamieszczony tutaj, z wyjątkiem dodania właściwej inicjalizacji domeny tekstowej, jest dostępny jako w pełni działająca wtyczka w Gist tutaj . Tam kod używa przestrzeni nazw, więc wymaga PHP 5.3+.
Uwagi
Oczywiście powinieneś mieć pewność, że masz licencję i upoważnienie do używania i umieszczania linków do zdjęć w swojej witrynie od zewnętrznych.
the_post_thumnail()
jest obecny (lub podobna funkcja), lub aby działał z różnymi rozmiarami obrazu zdefiniowanymi przez motyw lub wtyczkę.Odpowiedzi:
Tak, jest to możliwe i dość łatwe.
Oto przepływ pracy, który sugeruję:
'admin_post_thumbnail_html'
haka filtrującego'save_post'
haka akcji, aby zapisać adres URL (po procedurze bezpieczeństwa i sprawdzania poprawności) w niestandardowej meta postu'post_thumbnail_html'
haka filtru, aby wyprowadzić odpowiedni<img>
znacznik, zastępując domyślny, jeśli post, dla którego wymagany jest wyróżniony obraz, ma meta postu z zewnętrznym wyróżnionym obrazemDo pracy ten przepływ pracy wymaga pokazania obrazu w szablonie za pomocą
get_the_post_thumnbail()
lubthe_post_thumbnail()
funkcji.Ponadto musimy upewnić się, że
'_thumbnail_id'
wartość meta ma niepustą wartość, gdy ustawimy meta dla zewnętrznego adresu URL, w przeciwnym raziehas_post_thumbnail()
zwróci false dla postów, które mają tylko zewnętrzny wyróżniony obraz.W rzeczywistości możliwe jest, że post ma zarówno standardowy lokalny obraz polecany, jak i jeden zestaw za pośrednictwem naszego przepływu pracy, w tym przypadku zostanie użyty zewnętrzny.
Aby wdrożyć nasz obieg pracy, potrzebujemy funkcji do sprawdzania poprawności adresu URL używanego jako obraz z wyróżnieniem zewnętrznym, ponieważ musimy upewnić się, że jest to prawidłowy adres URL obrazu.
Istnieją różne sposoby wykonania tego zadania; tutaj używam bardzo prostego sposobu, który patrzy tylko na adres URL, bez pobierania obrazu. Działa to tylko w przypadku statycznych adresów URL obrazów i nie weryfikuje, czy obraz rzeczywiście istnieje, ale jest szybki. W razie potrzeby zmień go na coś bardziej zaawansowanego ( oto pomoc).
Całkiem łatwe. Dodajmy teraz 3 zaczepy opisane w powyższym przepływie pracy:
i powiązane funkcje. Najpierw ten, który wyświetla pole w adminie:
Zauważ, że użyłem
'txtdomain'
jako domeny tekstowej, ale powinieneś użyć właściwej, zarejestrowanej domeny tekstowej.Tak wygląda wyjście, gdy jest puste:
Tak to wygląda po dodaniu adresu URL obrazu i zapisaniu / zaktualizowaniu posta:
Więc teraz nasz interfejs administratora jest gotowy, napiszmy procedurę zapisywania:
Ta funkcja, po sprawdzeniu zabezpieczeń, sprawdza wysłany adres URL i jeśli jest w porządku, zapisuje go w
'_thumbnail_ext_url'
meta post. Jeśli adres URL jest pusty, a meta została zapisana, jest ona usuwana, umożliwiając usunięcie meta po prostu przez opróżnienie pola zewnętrznego adresu URL.Ostatnią rzeczą do zrobienia jest wyświetlenie opisanego znacznika obrazu, gdy nasz adres URL obrazu zewnętrznego jest ustawiony w meta:
Skończyliśmy.
Co pozostało do zrobienia
W prezentowanym obrazie wyjściowym, którego nie użyłem
width
aniheight
właściwości, ani klas, które zwykle dodaje WordPress'attachment-$size'
. Wynika to z tego, że wąchanie rozmiaru obrazu wymaga dodatkowej pracy, która spowolni ładowanie strony, zwłaszcza jeśli na stronie znajduje się więcej niż jeden wyróżniony obraz.Jeśli potrzebujesz tych atrybutów, możesz użyć mojego kodu, dodając wywołanie zwrotne do
wp_get_attachment_image_attributes'
filtrowania (jest to standardowy hak WordPress ), a może możesz zmienić mój kod, aby wąchać rozmiar obrazu oraz atrybuty i klasy związane z danymi wyjściowymi.Plugin Gist
Cały kod zamieszczony tutaj, z wyjątkiem dodania właściwej inicjalizacji domeny tekstowej, jest dostępny jako w pełni działająca wtyczka w Gist tutaj . Tam kod używa przestrzeni nazw, więc wymaga PHP 5.3+.
Uwagi
Oczywiście powinieneś mieć pewność, że masz licencję i upoważnienie do używania i umieszczania linków do zdjęć w swojej witrynie od zewnętrznych.
źródło