programing

WooCommerce - 사용자 지정 썸네일 및 기본 폴백 이미지 자리 표시자

telecom 2023. 10. 7. 09:26
반응형

WooCommerce - 사용자 지정 썸네일 및 기본 폴백 이미지 자리 표시자

wocommerce_get_product_thumbnail에 포장지를 삽입하고 싶습니다. 제 포장지가 나타났지만 이미지가 없으면 폴백 이미지가 없습니다.

기본 우커머스 썸네일을 출력하려면 어떻게 해야 합니까?

이것은 나의 불완전한 코드입니다.

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
    function woocommerce_template_loop_product_thumbnail() {
        echo woocommerce_get_product_thumbnail();
    } 
}
if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {   
    function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0  ) {
        global $post, $woocommerce;
        $output = '<div class="col-lg-4">';

        if ( has_post_thumbnail() ) {               
            $output .= get_the_post_thumbnail( $post->ID, $size );
        } else {
            how to show the default woocommerce thumb 
        }                       
        $output .= '</div>';
        return $output;
    }
}

추가할 것이 있습니다.init을 낚아채다remove_action&add_actionWordPress/WooCommerce Initializing 시 초기에 발사할 수 있습니다.

~하듯이$placeholder_width = 0, $placeholder_height = 0는 wocommerce 버전 2.0 이후로 더 이상 사용되지 않습니다(이것 참조).더 이상 필요 없고 문제의 일부가 될 수도 있습니다.

참고: 팔라비의 정답은 다음과 같습니다.$output .= wc_placeholder_img( $size );당신의 다른 진술에서.저는 이미 이에 대해 그에게 찬성표를 던졌습니다.

그래서 당신의 코드를 조금 바꿨습니다.

add_action('init', function(){
    remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
    add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
});

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
    function woocommerce_template_loop_product_thumbnail() {
        echo woocommerce_get_product_thumbnail();
    } 
}

if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {   
    function woocommerce_get_product_thumbnail( $size = 'shop_catalog' ) {
        global $post, $woocommerce;
        $output = '<div class="col-lg-4">';

        if ( has_post_thumbnail() ) {               
            $output .= get_the_post_thumbnail( $post->ID, $size );
        } else {
             $output .= wc_placeholder_img( $size );
             // Or alternatively setting yours width and height shop_catalog dimensions.
             // $output .= '<img src="' . woocommerce_placeholder_img_src() . '" alt="Placeholder" width="300px" height="300px" />';
        }                       
        $output .= '</div>';
        return $output;
    }
}

아래 코드로 시도

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
    function woocommerce_template_loop_product_thumbnail() {
        echo woocommerce_get_product_thumbnail();
    } 
}
if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {   
    function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0  ) {
        global $post, $woocommerce;
        $output = '<div class="col-lg-4">';

        if ( has_post_thumbnail() ) {               
            $output .= get_the_post_thumbnail( $post->ID, $size );
        } else {
             $output .= wc_placeholder_img( $size );
        }                       
        $output .= '</div>';
        return $output;
    }
}

언급URL : https://stackoverflow.com/questions/38320744/woocommerce-custom-thumbnails-and-default-fall-back-image-placeholder

반응형