WooCommerce 장바구니에 첫 번째 갤러리 이미지를 제품 썸네일로 표시

Nov 15 2020

첫 번째 갤러리 이미지를 통해 매장 이미지를 변경하는 짧은 코드가 있습니다.

이것은 훌륭하게 작동하지만 카트 썸네일을 첫 번째 갤러리 이미지로 표시하기 위해이 코드를 어떻게 변경합니까?

이것을 달성하기 위해해야 ​​할 일에 대한 도움이나 조언은 대단히 감사하겠습니다.

내 코드 :

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 );
}

답변

1 7uc1f3r Nov 15 2020 at 20:47

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 );