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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:00:56