You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WordPress/WooCommerce订单按取货点触发呼叫及分址邮件配置需求

WooCommerce取货点触发电话通知+定向邮件推送解决方案

嘿,针对你们小型食品企业的这个场景,我整理了一套实用的WooCommerce适配方案,既能解决线下没法频繁查邮件的痛点,又能在客户线上下单后立刻触发对应取货点的电话通知+定向邮件,确保你们能及时收到订单提醒,缩短客户等待时间!

核心实现思路

我们会利用WooCommerce的woocommerce_thankyou钩子(这个钩子会在客户完成付款后立即触发),在钩子函数里完成以下几步:

  1. 提取订单的取货点信息
  2. 根据预设规则匹配对应取货点的邮件地址和电话号码
  3. 发送定向订单邮件到对应收件人
  4. 调用电话通知服务触发语音提醒

代码实现(添加到主题functions.php或自定义插件)

以下是完整的代码示例,你可以根据自己的实际配置调整细节:

add_action( 'woocommerce_thankyou', 'trigger_pickup_point_notifications', 10, 1 );
function trigger_pickup_point_notifications( $order_id ) {
    // 校验订单ID有效性
    if ( ! $order_id ) return;

    // 获取订单对象
    $order = wc_get_order( $order_id );
    if ( ! $order ) return;

    // 获取取货点信息(这里替换为你实际存储取货点的字段名)
    // 示例:如果是自定义字段存储,用get_meta;如果是官方本地取货扩展,可能需要调整获取方式
    $pickup_location = $order->get_meta( 'pickup_location', true ); 

    // 定义取货点与通知信息的映射规则
    $notification_map = array(
        '取货点A' => array(
            'email' => 'x@yourdomain.com',
            'phone' => '1234567890' // 电话号码格式根据你的电话服务要求调整
        ),
        '取货点B' => array(
            'email' => 'y@yourdomain.com',
            'phone' => '0987654321'
        ),
        // 默认规则:匹配不到取货点时使用
        'default' => array(
            'email' => 'z@yourdomain.com',
            'phone' => '1122334455'
        )
    );

    // 匹配对应的通知信息
    $notify_details = isset( $notification_map[$pickup_location] ) 
        ? $notification_map[$pickup_location] 
        : $notification_map['default'];

    // 1. 发送定向订单邮件
    $email_subject = "新取货订单通知:{$pickup_location}";
    $email_content = "您好,有新的线上取货订单需要处理:\n\n";
    $email_content .= "订单号:{$order->get_order_number()}\n";
    $email_content .= "客户姓名:{$order->get_billing_first_name()} {$order->get_billing_last_name()}\n";
    $email_content .= "下单时间:{$order->get_date_created()->format('Y-m-d H:i:s')}\n";
    $email_content .= "订单详情链接:{$order->get_view_order_url()}\n";

    // 使用WooCommerce内置邮件函数发送,确保样式统一
    wc_mail( $notify_details['email'], $email_subject, $email_content );

    // 2. 触发电话呼叫(以Twilio云电话服务为例,需先配置账号)
    $target_phone = $notify_details['phone'];
    $call_voice_message = "您好,{$pickup_location}收到新的线上取货订单,请尽快完成烘焙打包。";

    // 以下是Twilio API集成示例(需先安装Twilio PHP库)
    /*
    require_once get_template_directory() . '/lib/twilio-php/src/Twilio/autoload.php';
    use Twilio\Rest\Client;

    $twilio_sid = '你的Twilio账号SID';
    $twilio_token = '你的Twilio授权令牌';
    $twilio_from_phone = '你的Twilio电话号码';

    $client = new Client($twilio_sid, $twilio_token);
    $client->calls->create(
        $target_phone,
        $twilio_from_phone,
        array(
            'url' => 'https://yourdomain.com/call-message.xml' // 存放语音内容的XML文件地址
        )
    );
    */

    // 如果你暂时没有云电话服务,也可以替换为短信通知(逻辑类似,调用短信API即可)
}

关键细节调整说明

  • 取货点字段适配:如果你的取货点是用WooCommerce官方「本地取货」功能设置的,需要调整取货点的获取逻辑,比如通过$order->get_shipping_method()或者检查配送地址的自定义字段,确保能正确拿到取货点名称。
  • 电话服务选择:推荐用Twilio、Plivo这类成熟的云电话服务,集成简单且稳定,适合小型企业快速部署;如果预算有限,也可以用短信通知替代电话,代码逻辑类似。
  • 邮件内容定制:你可以根据需要添加更多订单信息,比如商品列表、付款金额等,通过$order->get_items()循环遍历商品即可。

额外优化建议

  • 添加订单状态标记:触发通知后,给订单添加自定义状态(比如「待烘焙」),方便线下人员跟踪订单进度。
  • 延迟触发选项:如果担心客户下单后立刻到店,可以设置5分钟的延迟触发通知,给车间预留一点缓冲时间(用wp_schedule_single_event实现延迟执行)。
  • 失败重试机制:给邮件和电话通知添加失败重试逻辑,避免因网络波动导致通知丢失。

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

火山引擎 最新活动