在任何主题中显示 WooCommerce 产品类别缩略图的短代码

问题描述 投票:0回答:1

我想用简短的代码在我的类别页面上显示类别缩略图。原谅我,我的 PHP 技术很差...

系统简介: WordPress 6.4.3 woocommerce 8.6.1 主题:迪维 4.24.2

我发现了这个主题,对我帮助很大:如何使用 DIVI 主题显示 Woocommerce 类别描述

我想要一个类似的代码,但用于显示活动类别缩略图。

我尝试将其添加到functions.php,但没有成功:

add_shortcode('cat_img', 'cat_img_shortcode');
function cat_img_shortcode() {
    
    global $wp_query;
    $cat = $wp_query->get_queried_object();
    
    if( $cat == null ) return;

    $output = nl2br($cat->thumbnail);
    return $output;
}

如果有人可以帮助我,那就太好了:)

php wordpress woocommerce shortcode divi
1个回答
0
投票

您可以使用以下短代码在产品类别存档页面上显示产品类别图像(如果可用):

add_shortcode('term_img', 'term_image_shortcode');
function term_image_shortcode() {
    $term = get_queried_object();
    
    if( ! is_a($term, 'WP_Term') ) return;

    $thumbnail_id = get_term_meta( $term->term_id, 'thumbnail_id', true );

    if ( ! $thumbnail_id ) return;

    $image_size   = 'woocommerce_thumbnail';
    $dimensions   = wc_get_image_size( $image_size );
    $image        = wp_get_attachment_image_src( $thumbnail_id, $image_size );
    $image        = $image[0];

    if ( ! $image ) return;

    $image = str_replace( ' ', '%20', $image ); // Prevent esc_url from breaking spaces in urls for image embeds.
    $image_srcset = wp_get_attachment_image_srcset( $thumbnail_id, $image_size );
    $image_sizes  = wp_get_attachment_image_sizes( $thumbnail_id, $image_size );

    // Add responsive image markup if available.
    if ( $image_srcset && $image_sizes ) {
        return '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $term->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" srcset="' . esc_attr( $image_srcset ) . '" sizes="' . esc_attr( $image_sizes ) . '" />';
    } else {
        return '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $term->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" />';
    }
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.