You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求适配Divi主题的WooCommerce当前分类缩略图显示短代码

请求适配Divi主题的WooCommerce当前分类缩略图显示短代码

别担心,我来帮你搞定这个短代码!你的思路方向是对的,但之前的代码里直接调用$cat->thumbnail是行不通的——WooCommerce的分类缩略图并不是存在分类对象的直接属性里,得用专门的方式来获取。结合你的WordPress、WooCommerce和Divi版本,我给你调整好了可用的代码:

首先,把你之前添加的那段代码删掉,换成下面这段,添加到子主题的functions.php文件里(如果没用到子主题,也可以用Code Snippets插件来添加,这样主题更新时不会丢失修改):

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

    // 先确认当前是WooCommerce产品分类页面
    if ( ! $cat || ! is_product_category() ) {
        return ''; // 非分类页面直接返回空,避免出错
    }

    // 获取分类缩略图的附件ID
    $thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
    
    // 如果存在缩略图,生成完整的图片HTML
    if ( $thumbnail_id ) {
        // 用WooCommerce标准的缩略图尺寸,也可以换成'full'、'medium'等自定义尺寸
        $image_src = wp_get_attachment_image_url( $thumbnail_id, 'woocommerce_thumbnail' );
        // 获取图片的alt文本,没有的话就用分类名称替代,保证可访问性
        $image_alt = get_post_meta( $thumbnail_id, '_wp_attachment_image_alt', true ) ?: $cat->name;
        
        return '<img src="' . esc_url( $image_src ) . '" alt="' . esc_attr( $image_alt ) . '" class="divi-category-thumbnail" />';
    } else {
        // 如果分类没有设置缩略图,这里可以返回默认图片地址或者空,我默认返回空
        return '';
    }
}

简单说明下代码里的关键点:

  • 增加了is_product_category()判断,确保只有在WooCommerce产品分类页面才会生效,避免在其他页面输出错误内容
  • 用get_term_meta()获取WooCommerce存储的分类缩略图ID(这个字段是WooCommerce专门存分类缩略图的)
  • 处理了图片的alt文本,符合网页可访问性要求
  • 给图片加了自定义classdivi-category-thumbnail,方便你用CSS调整样式(比如大小、边距等)

使用方法:

在Divi编辑器里,添加一个代码模块或者文本模块,直接插入短代码[cat_img],保存后刷新分类页面,就能看到当前分类的缩略图啦~

备注:内容来源于stack exchange,提问作者Lucie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:49:52