Я хочу изменить версию изображения, используемую FlexSlider на странице продукта WooCommerce. На данный момент слайдер использует для навигации по галерее размер thumbnail
. Но этот размер изображения обрезан, и мне нужна версия без кадра. В WooCommerce уже есть размер, который я мог бы использовать: woocommerce_gallery_thumbnail
К сожалению, я не смог найти ни одного крючка или опции для изменения используемого изображения. Я нашел и использовал фильтр woocommerce_single_product_carousel_options
.
На данный момент я использую только один его вариант:
$options['controlNav'] = wp_is_mobile() ? true : 'thumbnails';
Но я не вижу возможности изменить используемое изображение версия. Есть ли что-нибудь, что я мог бы использовать / hook?
Хорошо, я попытался использовать следующий фильтр: (https://github.com/woocommerce/woocommerce/blob/df94b6570df6f6002f61c9e53c8054eb77c2c405/includes/wc-template-functions.php#L1499)
function wc_get_gallery_image_html( $attachment_id, $main_image = false ) {
$flexslider = (bool) apply_filters( 'woocommerce_single_product_flexslider_enabled', get_theme_support( 'wc-product-gallery-slider' ) );
$gallery_thumbnail = wc_get_image_size( 'gallery_thumbnail' );
$thumbnail_size = apply_filters( 'woocommerce_gallery_thumbnail_size', array( $gallery_thumbnail['width'], $gallery_thumbnail['height'] ) );
$image_size = apply_filters( 'woocommerce_gallery_image_size', $flexslider || $main_image ? 'woocommerce_single' : $thumbnail_size );
$full_size = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'full' ) );
$thumbnail_src = wp_get_attachment_image_src( $attachment_id, $thumbnail_size );
$full_src = wp_get_attachment_image_src( $attachment_id, $full_size );
$alt_text = trim( wp_strip_all_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) );
$image = wp_get_attachment_image(
$attachment_id,
$image_size,
false,
apply_filters(
'woocommerce_gallery_image_html_attachment_image_params',
array(
'title' => _wp_specialchars( get_post_field( 'post_title', $attachment_id ), ENT_QUOTES, 'UTF-8', true ),
'data-caption' => _wp_specialchars( get_post_field( 'post_excerpt', $attachment_id ), ENT_QUOTES, 'UTF-8', true ),
'data-src' => esc_url( $full_src[0] ),
'data-large_image' => esc_url( $full_src[0] ),
'data-large_image_width' => esc_attr( $full_src[1] ),
'data-large_image_height' => esc_attr( $full_src[2] ),
'class' => esc_attr( $main_image ? 'wp-post-image' : '' ),
),
$attachment_id,
$image_size,
$main_image
)
);
return '<div data-thumb="' . esc_url( $thumbnail_src[0] ) . '" data-thumb-alt="' . esc_attr( $alt_text ) . '" class="woocommerce-product-gallery__image"><a href="' . esc_url( $full_src[0] ) . '">' . $image . '</a></div>';
}
Есть варианты для $gallery_thumbnail
, $thumbnail_size
и $thumbnail_src
.
Я не знаю, какой из них является правильным для изменения вывода эскиза навигации по галерее.
Я попробовал следующий код но я не уверен, что этот код правильный (он ничего не делает):
add_filter( 'woocommerce_gallery_thumbnail_size', function( $thumbnail_size ) {
return array(
'woocommerce_gallery_thumbnail',
);
} );
Я читал в документации, что есть только хуки для woocommerce_gallery_thumbnail_size
, woocommerce_gallery_image_size
и woocommerce_gallery_full_size
и они принимают размеры изображения на основе имени или массив значений ширины / высоты.
Так что, я думаю, правильным будет woocommerce_gallery_thumbnail_size
?!
Или весь подход неверен?