Alt и title для миниатюры записи
Я хотел узнать, нужен ли атрибут "Alt title" так же как и "Title" для миниатюр записей, и как его можно добавить в мой код вывода похожих записей... Я использую следующий код для получения миниатюры записи:
<div class="td-module-thumb">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) {
the_post_thumbnail(array(324,235));
} else {
echo '<img src="' . get_bloginfo('template_directory') . '/images/no-thumb/td_324x235.png" />';
}
?>
</a>
</div>

В этом примере используется альтернативный текст, который задан в медиабиблиотеке. Я предпочитаю этот подход, потому что поведение становится более последовательным для пользователей, которые добавляют альтернативный текст с помощью стандартных опций загрузки медиафайлов в WordPress.
$thumbnail_id = get_post_thumbnail_id( $post->ID );
$alt = get_post_meta($thumbnail_id, '_wp_attachment_image_alt', true);
the_post_thumbnail( 'full', array( 'alt' => $alt ) );

Необходимо задать значение alt
для всех изображений на случай, если браузер не сможет загрузить изображение или посетитель использует программу чтения с экрана.
У вас есть два варианта. Либо использовать подпись к featured image (которая иногда может быть пустой), либо использовать заголовок записи в качестве alt
.
Вы можете получить подпись с помощью get_post_meta()
. Использование этой функции очень простое:
$alt = get_post_meta ( $image_id, '_wp_attachment_image_alt', true );
echo '<img alt="' . esc_html ( $alt ) . '" src="URL HERE" />';
Однако, эту функцию следует использовать внутри цикла или передавать ей объект $post
или его ID.
Альтернативный метод - использовать заголовок записи в качестве текста alt
. Для этого можно использовать:
echo '<img alt="' . esc_html ( get_the_title() ) . '" src="URL HERE" />';
Вы можете настроить условие и проверить, есть ли у миниатюры подпись, и использовать её вместо заголовка записи, если она доступна:
if ( $alt = get_the_post_thumbnail_caption() ) {
// Здесь ничего не нужно делать
} else {
$alt = get_the_title();
}
echo '<img alt="' . esc_html ( $alt ) . '" src="URL HERE"/>
ОБНОВЛЕНИЕ
Если вы хотите добавить атрибут alt
непосредственно в get_post_thumbnail()
, вы можете передать его в виде массива в функцию:
the_post_thumbnail( 'thumbnail', [ 'alt' => esc_html ( get_the_title() ) ] );

Самое простое решение — следующий код:
$thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );
$img_alt = get_post_meta ( $thumbnail_id, '_wp_attachment_image_alt', true );
echo $img_alt;
Или более завершенный вариант кода:
$thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );
$img_alt = get_post_meta ( $thumbnail_id, '_wp_attachment_image_alt', true );
if(! $img_alt){
$img_alt = get_the_title();
}

Вы можете использовать следующий код в вашей теме WordPress:
<div class="td-module-thumb">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) {
echo '<img src="' . the_post_thumbnail_url( array(324,235) ) . '" alt="Любой текст" title="Произвольный текст" />';
} else {
echo '<img src="' . get_bloginfo('template_directory') . '/images/no-thumb/td_324x235.png" alt="Любой текст" title="Произвольный текст" />';
}
?>
</a>
</div>
