Korzystam z pliku załącznika.php, aby wyświetlić duże wersje obrazów, które zostały kliknięte w innym miejscu. Chciałbym wyciągnąć tekst alternatywny obrazu jako podpis pod obrazem za pomocą javascript, ale tekst alternatywny nie jest uwzględniany, gdy używana jest wp_get_attachment_image_src (). Nie sądzę, że WP ma funkcję jej odzyskiwania, więc potrzebuję własnej. Aby napisać tę funkcję, muszę wiedzieć ... Gdzie jest przechowywany tekst alternatywny dla obrazu?
Używa mojej strony załącznika wp_get_attachment_image_src()
, która nie zawiera tekstu alternatywnego.
<div class = "entry">
<?php
if ( wp_attachment_is_image( $post->id ) ) :
$att_image = wp_get_attachment_image_src( $post->id, "large");?>
<a href="<?php echo wp_get_attachment_url($post->id); ?>"
title="<?php the_title(); ?>"
rel="attachment">
<img class="attached_img"
src="<?php echo $att_image[0];?>"
width="<?php echo $att_image[1];?>"
height="<?php echo $att_image[2];?>"
class="attachment-medium"
alt="<?php $post->post_excerpt; ?>" />
</a>
} <?php endif;?>
</div>
To pokazuje:
<div class = "entry">
<a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg"
title="My_Photo_Title"
rel="attachment">
<img class="attached_img"
src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg"
width="393"
height="500"
class="attachment-medium"
alt="" />
</a>
</div>
Wiem, że $post->post_excerpt
jest wywoływany w powyższym kodzie, ale nie jestem pewien, co go zastąpić, aby uzyskać atrybut alt obrazu.
źródło
wp_get_attachment_imgage()
wcześniej i zupełnie o tym zapomniałem. Masz rację co do tego, co myślałem, że tak naprawdę potrzebuję. Dzięki za informację. Masz również rację co do miejsca, w którym przechowywana jest alt meta ... Spojrzałem właśnie w to miejsce, ale uniknęło mnie to, chociaż musiałem się na to gapić. To właśnie dostaję za to, że dostaję się do niego pod koniec dnia. Dzięki jeszcze raz!wp_get_attachment_image()
zwraca tablicę obrazu src i atrybutów. Wygląda na to, że zwraca tylko HTML zawierający obraz i jego atrybuty. Nadal wykonuje to zadanie, po prostu nie wiedziałem, czy wiesz coś, czego nie ma w funkcji ref: codex.wordpress.org/Function_Reference/wp_get_attachment_imageZastanów się
wp_prepare_attachment_for_js( $attachment )
, gdzie$attachment
jest obiekt WP_Post samego załącznika.Jest to trochę funkcja „zlewu kuchennego”, ale zapewnia bardzo ładny skrót z mnóstwem metadanych, w tym „alt”:
Jest to szczególnie przydatne (jak sama nazwa wskazuje), do wysyłania meta obrazu załącznika do wp.media View przez
wp_send_ajax()
, ale to nie znaczy, że nie można go użyć do innych celów.Lubię abstrakcji od
_wp_attachment_image_alt
pola meta post, na wypadek gdyby metoda pobierania tekstu alternatywnego kiedykolwiek się zmieniła (mało prawdopodobne, ale możliwe).Wydaje mi się jednak, że istnieje
wp_get_attachment_image_alt()
metoda na tę metodę.źródło
Odpowiedź Mike'a jest oczywiście poprawna, ale
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
może zwrócić pusty ciąg znaków.wp_get_attachment_image jednak zawsze otrzymuje tekst alt_text.
Zespół Wordpress stosuje następującą sztuczkę, najpierw sprawdzając post_except, a następnie uzyskując tytuł.
źródło
Dowiedziałem się, że tekst alternatywny dla załączników był przechowywany w niestandardowej meta o nazwie „_wp_attachment_image_alt”
Mając identyfikator załącznika, udało mi się uzyskać tekst alternatywny za pomocą tego kodu:
źródło
Jeśli używasz WP_Customize_Media_Control (), twoja metoda get_theme_mod () zwróci identyfikator postu, ale jeśli używasz nowej WP_Customize_Image_Control (), get_theme_mod () zwróci adres URL obrazu, dzięki temu mogłem uzyskać tekst alternatywny za pomocą WP_Customize_Image_Control ()
Oto jak mogłem to zrobić. Mam nadzieję, że to pomoże komuś tam
Narzut
źródło
Aby dodać do odpowiedzi Mike'a, ktoś może uznać to za przydatne. Może być konieczne uzyskanie określonego identyfikatora załącznika, aby to zrobić, przekazując identyfikator posta na
get_post_thumbnail_id
przykład:źródło