25 октября 2019

WordPress - Атрибуты миниатюры

title и alt из заголовка записи

Мы можем сделать, чтобы у миниатюры записи (когда мы внутри записи) title и alt прописывались из заголовка записи динамически. Для этого, добавляем следующий сниппет в functions.php
function titles_gallery($attr){
 if ( is_single() ) {  
  $title = get_the_title();
  $attr['title'] = trim(strip_tags( $title ));
  $attr['alt'] = trim(strip_tags( $title )); 
 }  
 return $attr;  
}
add_filter('wp_get_attachment_image_attributes','titles_gallery',10,2);
При использовании функции логотип темы (custom_logo) изображение логотипа принимает свойства миниатюры и в него могут подставится те же alt и title, это неправильно! Нужно изменить вывод логотипа:
<div id="logo"><a href="<?php echo get_site_url(); ?>">
 <?php $custom_logo_id = get_theme_mod( 'custom_logo' );
 $image = wp_get_attachment_image_src( $custom_logo_id , 'full' ); ?>
 <img src="<?php echo $image[0]; ?>" alt="site-logo" title="site-logo">
</a></div>

Микроразметка миниатюры

Добавление миниатюре атрибута itemprop=»image»
if ( !is_admin() ) {
 add_filter( 'wp_get_attachment_image_attributes', 'alter_att_attributes_wpse');
 function alter_att_attributes_wpse($attr) {
  $attr['itemprop'] = 'image';
  return $attr;
 }
}

Размеры миниатюры

add_filter( 'wp_get_attachment_image_attributes', 'alter_att_attributes_wpse');

function alter_att_attributes_wpse($attr) {
 $attr['srcset'] = ' '; // !Отключение вывода вариаций изображения
 return $attr;
}

Можно делать комбинацию атрибутов title и alt + itemprop и т.д. в одной функции

title и alt товара woocommerce

Добавить динамический alt и title в виде заголовка товара изображениям товаров в категории — используем следующую функцию:
add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);

function change_attachement_image_attributes( $attr, $attachment ){
    // Get post parent
    $parent = get_post_field( 'post_parent', $attachment);

    // Get post type to check if it's product
    $type = get_post_field( 'post_type', $parent);
    if( $type != 'product' ){ return $attr; }

    /// Get title
    $title = get_post_field( 'post_title', $parent);

    $attr['alt'] = $title;
    $attr['title'] = $title;

    return $attr;
}
Эта функция добавляет атрибуты и в шаблоне карточки товара

Комментариев нет:

Отправить комментарий