【问题标题】:Woocommerce display product category thumbnail above product thumbnailWoocommerce 在产品缩略图上方显示产品类别缩略图
【发布时间】:2020-06-20 13:07:06
【问题描述】:

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

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

        /**
     * 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 ); ?>

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:
    /**
     * 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 仅检索第一个术语对象并将其分配给变量 @ 987654328@
    4. WooCommerce 函数 wc_get_image_size 以数组形式检索维度详细信息
    5. 下一个if-else block 用于指定产品类别图片或默认图片
    6. 最后的if condition用于输出标题前的图片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2020-12-25
      • 2019-01-07
      • 2021-06-24
      • 2014-04-06
      • 2019-01-24
      • 2014-12-05
      相关资源
      最近更新 更多