Изменить размер изображения лупы в Woocommerce 3

Я очень долго борюсь за то, чтобы увеличенное изображение или изображение лайтбокса было настроено на другой (нестандартный) размер вместо загруженного изображения в полном размере.

Я обнаружил, что он контролируется этой строкой кода в wc-template-functions .php в строке 1399:

$full_size         = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'full' ) );

Я попытался создать функцию, чтобы изменить «полный» на «предварительный просмотр» или «большой», но я не могу заставить свой код работать. См. Мой код ниже:

function change_magnifier_lightbox_image_size(){
echo "De post" , $post;

$post_thumbnail_id = get_post_thumbnail_id( $post->ID );
echo "De ID ", $post_thumbnail_id;
$filemeta = wp_get_attachment_metadata( $post_thumbnail_id, FALSE );
echo "De filemeta ", $filemeta;

if ($filemeta['width']>3071 || $filemeta['height']>3071){
$full_size         = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'preview' ) );
}else{
$full_size         = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'large' ) );
};
};
apply_filters( 'woocommerce_product_thumbnails_large_size', 'change_magnifier_lightbox_image_size' );

$ post установлен как глобальный.

Я не получаю никакого эха вообще, также не от строк, и код находится в моих дочерних темах functions.php. Что мне не хватает?

1

Решение

В вашем коде есть ошибки и ошибки. Вместо этого попробуйте следующее:

add_filter( 'woocommerce_gallery_full_size', 'change_magnifier_lightbox_image_size', 20, 1 );
function change_magnifier_lightbox_image_size( $size ){
$thumbnail_id = get_post_thumbnail_id( get_the_id() );
$attachment   = wp_get_attachment_metadata( $thumbnail_id, FALSE );

// Always return a value in a filter hook
return ( $attachment['width'] > 3071 || $attachment['height'] > 3071 ) ? 'preview' : 'large';
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

2

Другие решения

Я полагаю, вам может понадобиться отменить действие WooCommerce по умолчанию

remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20);

а затем вы положили свой код.

0

Так должно быть add_filter not apply_filters

add_filter( 'woocommerce_product_thumbnails_large_size', 'change_magnifier_lightbox_image_size' );

и вы должны вернуть значение в фильтрах, проверьте add_filter() https://developer.wordpress.org/reference/functions/add_filter/

0
По вопросам рекламы [email protected]