首页 > 解决方案 > Woocommerce 在产品缩略图上方显示产品类别缩略图

问题描述

我想在商店页面的产品缩略图上方显示类别缩略图。我尝试使用此代码,但它不起作用。

请帮助我,我需要完成这项工作。任何帮助将不胜感激。谢谢。

        /**
     * Display product category thumbnail.
     *
     * @param mixed $product_category Category term Id, term name or term slug.
     */
    <?php
$thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_bid', true );
$image_url = wp_get_attachment_url( $thumbnail_id ); ?>

标签: phpwordpresswoocommerce

解决方案


/**
 * Display product category thumbnail.
 *
 */
add_action('woocommerce_before_shop_loop_item_title', 'display_product_category_thumbnail', 20);
function display_product_category_thumbnail()
{
    global $product;

    $productFirstCategory = reset(get_the_terms($product->get_id(), 'product_cat'));

    $small_thumb_size = 'woocommerce_thumbnail';
    $dimensions = wc_get_image_size($small_thumb_size);

    if ($thumbnail_id = get_term_meta($productFirstCategory->term_id, 'thumbnail_id', true)) {
        $image = wp_get_attachment_image_src($thumbnail_id, $small_thumb_size);

        if (is_array($image)) {
            $image = reset($image);
        }

        $image_srcset = function_exists('wp_get_attachment_image_srcset') ? wp_get_attachment_image_srcset($thumbnail_id, $small_thumb_size) : false;
        $image_sizes = function_exists('wp_get_attachment_image_sizes') ? wp_get_attachment_image_sizes($thumbnail_id, $small_thumb_size) : false;
    } else {
        $image = wc_placeholder_img_src();
        $image_srcset = false;
        $image_sizes = false;
    }

    if ($image) {
        
        $src_set = '';
        if ($image_srcset && $image_sizes) {
            $src_set = '" srcset="' . esc_attr($image_srcset) . '" sizes="' . esc_attr($image_sizes);
        }

        echo '<img src="' . esc_url($image) . '" alt="' . esc_attr($productFirstCategory->name) 
            . '" width="' . esc_attr($dimensions['width']) . '" height="' 
            . esc_attr($dimensions['height']) . $src_set . '" />';
    }
}
  1. 您必须使用woocommerce_before_shop_loop_item_title挂钩您的功能的钩子在产品标题之前执行。
  2. 全局变量$product保存当前循环的产品对象。
  3. 获取当前产品 id 并将其传递给 WP 函数get_the_terms以获取与该产品相关的所有术语作为数组并使用 PHP 函数仅检索第一个术语对象reset并将其分配给变量$productFirstCategory
  4. WooCommerce 函数wc_get_image_size以数组形式检索维度详细信息
  5. 下一个if-else block用于分配该产品类别图像或默认图像
  6. finalif condition用于输出标题之前的图像

产品和类别图片


推荐阅读