如果缺少后缩略图并且至少占位符图像,WooCommerce将第一个图库图像作为后备

时间:2016-09-17 11:24:24

标签: php wordpress image woocommerce fallback

如果缺少帖子缩略图,我有一个问题是收到woocommerce图库的第一张图片。我想显示帖子缩略图,如果缺少,则显示WooCommerce画廊的第一张图片,至少显示占位符图片(如果全部丢失)。

我在WooCommerce Codex中找到了这个功能,但我没有找到令人满意的解决方案。也许有人可以帮助我获得一个好的解决方案

function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $deprecated1 = 0, $deprecated2 = 0 ) {
        global $post;
        $image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );

        if ( has_post_thumbnail() ) {
            $props = wc_get_product_attachment_props( get_post_thumbnail_id(), $post );
            return get_the_post_thumbnail( $post->ID, $image_size, array(
                'title'  => $props['title'],
                'alt'    => $props['alt'],
            ) );
        } elseif ( wc_placeholder_img_src() ) {
            return wc_placeholder_img( $image_size );
        }
    }
}

1 个答案:

答案 0 :(得分:0)

所以,我发现自己是一个灵魂人物。并不像我希望的那样完美,但它确实有效。如果有人正在寻找类似的解决方案,我会发布这个答案。所以,这可能是一种方式:

/* GET PRODUCT IMAGE WITH GALLERY FALLBACK
================================================== */
if ( ! function_exists( 'zet_get_prod_image_fallback_gallery' ) ) {
    function zet_get_prod_image_fallback_gallery() {

        global $post, $woocommerce, $product;
        $image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );
        $thumb_gallery_ids = $product->get_gallery_attachment_ids();

        if ( has_post_thumbnail() || $thumb_gallery_ids ) {

            if ( has_post_thumbnail() ) {
                $image_id = get_post_thumbnail_id();
            } else {
                $image_id = $thumb_gallery_ids[0];
            }

            $thumb_image = wp_get_attachment_url( $image_id, apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ) );
            $image_html = '<img src="'.$thumb_image.'" />';

            echo $image_html;

        // Get the Placeholder image
        } elseif ( wc_placeholder_img_src() ) {
            echo wc_placeholder_img( $image_size );
        }           
    }
}

对于不熟悉wordpress的用户:将此代码段添加到functions.php中 如果你想为整个商店使用这个后备 - &gt;将woocommerce / content-product.php中的 woocommerce_template_loop_product_thumbnail()功能更改为 zet_get_prod_image_fallback_gallery()。希望它有所帮助!