WooCommerce 장바구니에 첫 번째 갤러리 이미지를 제품 썸네일로 표시
첫 번째 갤러리 이미지를 통해 매장 이미지를 변경하는 짧은 코드가 있습니다.
이것은 훌륭하게 작동하지만 카트 썸네일을 첫 번째 갤러리 이미지로 표시하기 위해이 코드를 어떻게 변경합니까?
이것을 달성하기 위해해야 할 일에 대한 도움이나 조언은 대단히 감사하겠습니다.
내 코드 :
add_action( 'woocommerce_init', 'new_replace_loop_product_thumbnail' );
function new_replace_loop_product_thumbnail() {
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
function new_replace_product_thumbnail() {
global $product; $attachment_id = $product->get_gallery_attachment_ids()[0]; echo "<img src='" . wp_get_attachment_url( $attachment_id ) . "'>";
}
add_action( 'woocommerce_before_shop_loop_item_title', 'new_replace_product_thumbnail', 10 );
}
답변
woocommerce_cart_item_thumbnail
필터 후크를 사용할 수 있습니다 .
참고 : wp_get_attachment_image () 에는 반환되는 HTML img 요소를 조정할 수있는 몇 가지 (선택적) 매개 변수가 포함되어 있습니다.
매개 변수
$attachment_id
(int) (필수) 이미지 첨부 ID입니다.
$size
(문자열 | 배열) (선택 사항) 이미지 크기. 유효한 이미지 크기 또는 픽셀 단위의 너비 및 높이 값 배열 (순서대로)을 허용합니다.
기본값 : 'thumbnail'
$icon
(bool) (선택 사항) 이미지를 아이콘으로 처리해야하는지 여부입니다.
기본값 : false
$attr
(string | array) (선택 사항) 이미지 마크 업의 속성입니다.
'src'
(문자열) 이미지 첨부 URL.
'수업'
(문자열) CSS 클래스 이름 또는 공백으로 구분 된 클래스 목록입니다. 기본 첨부 파일$size_class size-$여기서 $ size_class는 요청되는 이미지 크기입니다.
'alt'
(문자열) alt 속성에 대한 이미지 설명입니다.
'srcset'
(문자열) 'srcset'속성 값입니다.
'크기'
(문자열) 'sizes'속성 값입니다.
'로딩'
(string | false) 'loading'속성 값입니다. false 값을 전달하면 이미지에 대한 속성이 생략됩니다. wp_lazy_loading_enabled () 에 따라 기본값은 'lazy' 입니다.
기본값: ''
반환
(문자열) HTML img 요소 또는 실패시 빈 문자열.
따라서 질문에 대답하려면 다음을 사용할 수 있습니다.
function filter_woocommerce_cart_item_thumbnail( $thumbnail, $cart_item, $cart_item_key ) {
// Get product
$product = $cart_item['data'];
// Get gallery image ids
$attachment_ids = $product->get_gallery_image_ids();
// NOT empty
if ( ! empty ( $attachment_ids ) ) { // First $attachment_id = $attachment_ids[0]; // New thumbnail $thumbnail = wp_get_attachment_image( $attachment_id, 'woocommerce_thumbnail' ); } return $thumbnail;
}
add_filter( 'woocommerce_cart_item_thumbnail', 'filter_woocommerce_cart_item_thumbnail', 10, 3 );