为了账号安全,请及时绑定邮箱和手机立即绑定

Woocommerce 在产品缩略图上方显示产品类别缩略图

Woocommerce 在产品缩略图上方显示产品类别缩略图

PHP
守着一只汪 2023-06-24 15:42:45
我想在商店页面中的产品缩略图上方显示类别缩略图。我尝试使用这段代码,但它不起作用。请帮助我,我需要完成这件事。任何帮助将不胜感激。谢谢。        /**     * 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 ); ?>
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

/**

 * 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. 最终if condition用于输出标题之前的图像

//img1.sycdn.imooc.com//64969e9d0001907309340730.jpg

查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信