请求适配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文本,符合网页可访问性要求
- 给图片加了自定义class
divi-category-thumbnail,方便你用CSS调整样式(比如大小、边距等)
使用方法:
在Divi编辑器里,添加一个代码模块或者文本模块,直接插入短代码[cat_img],保存后刷新分类页面,就能看到当前分类的缩略图啦~
备注:内容来源于stack exchange,提问作者Lucie
相关产品推荐
相关产品推荐

