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

如何通过PHP代码为PrestaShop商品添加配送承运商

PrestaShop通过PHP代码给商品绑定配送承运商实现方案

完全可以通过代码实现后台商品配送页的承运商绑定效果,PrestaShop核心内置了商品与承运商的关联操作方法,无需手动编写原生SQL操作数据表。
对应要实现的后台配置效果参考:
PrestaShop后台商品配送承运商配置界面

核心实现逻辑

商品和承运商的关联关系存储在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:24:23