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

如何根据自定义字段值自动设置WooCommerce产品配送类别

原代码存在的3个核心问题

  • 执行顺序错误:调用$product->get_meta()时还未初始化$product对象,需要先通过wc_get_product()获取产品实例再读取自定义字段
  • 条件判断语法错误:if ($title = 'Trenta')是赋值操作,不是相等判断,应该使用==或者===做值比对
  • 变量未定义风险:如果自定义字段值不等于Trenta,$shipping_class_id未初始化,会触发PHP警告,甚至错误清空产品原有配送类别

修正后可直接使用的代码

function woo_on_product_save( $post_id ) {
    // 先获取产品对象,校验有效性
    $product = wc_get_product( $post_id );
    if ( !$product ) return;
    
    // 读取自定义字段值
    $title = $product->get_meta( 'meta_easyfatt_libero_1' );
    // 默认保留原有配送类配置,避免不符合条件时清空已有设置
    $shipping_class_id = $product->get_shipping_class_id();

    // 相等判断使用双等号,需要严格比对值和类型可替换为三等号===
    if ( $title == 'Trenta' ) {
        $shipping_class_id = 1182;
    }

    $product->set_shipping_class_id( $shipping_class_id );
    $product->save();
}
add_action( 'woocommerce_process_product_meta', 'woo_on_product_save', 100 );

如果业务要求匹配不到指定值时清空配送类,把$shipping_class_id的默认值改成0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:18:02