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

如何为WooCommerce商品图片添加分类术语至Alt与Title属性

解决WooCommerce商品图片Alt/Title添加标题与分类术语的问题

你需要给WooCommerce商品图片的alt和title属性添加商品标题、默认商品分类(product_cat)、自定义分类artwork-category和artwork-materials的术语,原代码仅实现了标题部分,以下是修改后的完整解决方案:

add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);

function change_attachement_image_attributes( $attr, $attachment ){
    // 获取商品ID(图片所属的父级商品)
    $parent = get_post_field( 'post_parent', $attachment);

    // 后台环境或非商品直接返回原属性
    $type = get_post_field( 'post_type', $parent);
    if( is_admin() || $type != 'product' ){
        return $attr;
    }

    // 获取商品标题
    $title = get_post_field( 'post_title', $parent);

    // 处理商品分类(product_cat)
    $product_cat_terms = get_the_terms($parent, 'product_cat');
    $product_cat = '';
    if ( !is_wp_error($product_cat_terms) && $product_cat_terms ) {
        $product_cat_names = wp_list_pluck($product_cat_terms, 'name');
        $product_cat = implode(', ', $product_cat_names);
    }

    // 处理自定义分类artwork-category
    $artwork_cat_terms = get_the_terms($parent, 'artwork-category');
    $artwork_cat = '';
    if ( !is_wp_error($artwork_cat_terms) && $artwork_cat_terms ) {
        $artwork_cat_names = wp_list_pluck($artwork_cat_terms, 'name');
        $artwork_cat = implode(', ', $artwork_cat_names);
    }

    // 处理自定义分类artwork-materials
    $artwork_material_terms = get_the_terms($parent, 'artwork-materials');
    $artwork_material = '';
    if ( !is_wp_error($artwork_material_terms) && $artwork_material_terms ) {
        $artwork_material_names = wp_list_pluck($artwork_material_terms, 'name');
        $artwork_material = implode(', ', $artwork_material_names);
    }

    // 构建目标格式的文本
    $alt_title_text = $title;
    // 添加artwork-category和product_cat部分
    if ( $artwork_cat || $product_cat ) {
        $artwork_part = $artwork_cat ? "a $artwork_cat" : '';
        $product_part = $product_cat ? "by $product_cat" : '';
        $middle_part = trim("$artwork_part $product_part");
        if ( $middle_part ) {
            $alt_title_text .= ", $middle_part";
        }
    }
    // 添加artwork-materials部分
    if ( $artwork_material ) {
        $alt_title_text .= ". $artwork_material";
    }

    // 赋值给alt和title属性
    $attr['alt'] = $alt_title_text;
    $attr['title'] = $alt_title_text;

    return $attr;
}

关键修改说明

  • 修正分类获取的ID:将原代码中的$post->ID替换为$parent,确保获取的是当前商品的分类数据,避免上下文错误
  • 分类术语安全处理:对每个分类的返回结果做错误校验,使用wp_list_pluck提取术语名称,再用implode转为逗号分隔的字符串,支持多分类场景
  • 动态格式适配:根据各分类是否存在,自动调整输出内容,避免出现"a by ..."或多余标点的异常格式
  • 容错机制:针对get_the_terms可能返回的错误或空值做判断,防止PHP警告输出

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:54:27