如何通过Hook在WooCommerce REST API产品图片数组添加自定义字段
如何通过Hook在WooCommerce REST API产品图片中添加自定义键值对
无需修改WooCommerce核心文件,你可以使用woocommerce_rest_prepare_product过滤器实现需求——这个钩子会在产品REST响应准备完成前触发,让你安全修改返回数据,且不受版本更新影响。
实现代码
将以下代码添加到主题functions.php文件或自定义插件中:
add_filter( 'woocommerce_rest_prepare_product', 'add_custom_key_to_product_images_rest', 10, 3 ); function add_custom_key_to_product_images_rest( $response, $product, $request ) { // 获取响应中的原始数据 $data = $response->get_data(); // 检查是否存在图片数组 if ( isset( $data['images'] ) && is_array( $data['images'] ) ) { // 遍历每张图片,添加自定义键值对 foreach ( $data['images'] as &$image ) { $image['CUSTOM_KEY'] = 'VALUE Image Link'; // 可选:如果需要根据图片ID动态获取值,比如读取图片元数据 // $custom_value = get_post_meta( $image['id'], 'your_image_meta_key', true ); // $image['CUSTOM_KEY'] = $custom_value ?: 'VALUE Image Link'; } unset( $image ); // 解除数组引用,避免后续意外修改 // 更新响应数据 $response->set_data( $data ); } return $response; }
针对特定产品的扩展
如果你只需要给指定ID的产品(比如17559)添加自定义键值对,可在函数开头增加判断:
// 仅处理ID为17559的产品 if ( $product->get_id() !== 17559 ) { return $response; }
将这段代码插入到$data = $response->get_data();语句之后即可。
效果验证
添加代码后,调用example.com/wp-json/wc/v3/products/17559接口,返回的images数组中每个图片对象都会包含"CUSTOM_KEY":"VALUE Image Link"键值对。
内容的提问来源于stack exchange,提问作者Sajal Koley
相关产品推荐
相关产品推荐

