如何通过PHP代码为PrestaShop商品添加配送承运商
PrestaShop通过PHP代码给商品绑定配送承运商实现方案
完全可以通过代码实现后台商品配送页的承运商绑定效果,PrestaShop核心内置了商品与承运商的关联操作方法,无需手动编写原生SQL操作数据表。
对应要实现的后台配置效果参考:
核心实现逻辑
商品和承运商的关联关系存储在ps_product_carrier表中,直接调用Product类的内置方法即可完成关联的增删改操作,系统会自动处理旧关联的清理、新关联的写入,避免脏数据。
可直接复用的代码示例
// 脚本执行前请确保已经引入PrestaShop核心配置文件,在模块/后台控制器中可省略该步骤 require_once dirname(__FILE__) . '/config/config.inc.php'; // 配置项:替换为你的实际业务参数 $target_product_id = 0; // 你创建的商品ID,即商品入库后拿到的自增ID $need_bind_carrier_ids = [1,2,4]; // 需要绑定给该商品的承运商ID数组,可在后台承运商列表查看对应ID // 加载商品对象 $product = new Product($target_product_id); if (!Validate::isLoadedObject($product)) { exit('错误:商品不存在,请检查商品ID'); } // 绑定承运商,兼容1.7.x、8.x主流版本 $product->setCarriers($need_bind_carrier_ids); // 若你使用1.6及更早版本,请注释上面的setCarriers调用,改用下方方法 // Carrier::addCarrierForProduct($target_product_id, $need_bind_carrier_ids); // 可选:同步配置其他配送相关参数 $product->id_carrier = 1; // 设置商品默认配送承运商ID $product->additional_shipping_cost = 0; // 商品额外配送费,单位为店铺默认货币 $product->free_shipping = 0; // 是否单独免运费:0=否 1=是 $product->weight = 0.5; // 商品重量,单位与后台配送配置保持一致 $product->width = 10; // 商品宽度,单位cm $product->height = 5; // 商品高度,单位cm $product->depth = 15; // 商品深度,单位cm $product->save(); // 清理系统缓存,确保配置立即生效 Tools::clearCache();
注意事项
- 请在商品对象成功入库(即已经生成自增商品ID)之后再执行承运商绑定操作,否则会因为关联ID不存在写入失败
- 绑定的承运商必须是后台已启用状态,且配置了对应配送区域、用户组权限,否则前台结算时不会显示该配送选项
- 如果需要给商品绑定所有可用承运商,直接传入所有启用状态的承运商ID数组即可,和后台勾选全选效果一致
内容的提问来源于stack exchange,提问作者Baptiste L
相关产品推荐
相关产品推荐

