Woocommerce API上传商品图片不生效 格式错误相关问题咨询
问题原因
你出现的问题是参数格式不符合Woocommerce REST API的要求,核心错误有3个:
- 不需要对图片参数做JSON编码:Woocommerce官方PHP库会自动处理请求参数的序列化,传入原始PHP数组即可,JSON字符串会被识别为普通文本,无法被解析为图片配置。
images字段格式错误:API要求images为索引数组,每个元素是包含src属性的关联数组,哪怕只有1张图片也需要用数组包裹,你之前的代码直接给images赋值了单个关联数组,不符合要求。- 参数未挂载到正确键位:你直接把函数返回值放到
$item_data数组中,导致参数变成了索引为0的无效字段,Woocommerce无法识别到images配置。
修正方案
第一步:调整图片生成函数
function carga_imagenes($sku){ $db = conectaBBDD(); $query = "SELECT MAX(`ancho`),`Sku`,`imagenId`,`url` FROM `imagenes_productos` WHERE `Sku`='".$sku."' GROUP by `imagenes_productos`.`imagenId`"; $sql_response = $db->query($query); $rows = $sql_response->fetchAll(); $imagenes = []; foreach($rows as $key => $val) { // 追加单张图片配置到索引数组 $imagenes[] = [ 'src' => $val['url'] ]; } // 直接返回PHP数组,不需要JSON编码 return $imagenes; }
第二步:调整参数组装逻辑
$item_data = [ 'name' => $search_item['Description'], 'type' => 'simple', 'regular_price' => strval($search_item['precio']), 'stock_quantity' => strval($search_item['stock']), 'sku' => $search_item['sku'], 'description' => $search_item['Description'], 'weight' => $search_item['peso'], // 明确把图片数组赋值给images字段 'images' => carga_imagenes($search_item['sku']) ];
调整后生成的参数会符合API要求,图片即可正常上传。
内容的提问来源于stack exchange,提问作者Sergio Gonzalez Prieto
相关产品推荐
相关产品推荐

