按下 WooCommerce 结账按钮时发送自定义电子邮件

2024-01-05

我正在尝试使用 PHP 为 Woocommerce 按下结账按钮时发送自定义电子邮件。

此电子邮件将与 wooCommerce 的电子邮件通知一起发送。 我用过这个answer https://stackoverflow.com/questions/32512552/woocommerce-execute-php-per-product-on-successful-checkout#32512745,并编辑代码如下:

//execute some php on successfull checkout
add_action( 'woocommerce_payment_complete', 'so_32512552_payment_complete' );
function so_32512552_payment_complete( $order_id ){
    $order = wc_get_order( $order_id );

    foreach ( $order->get_items() as $item ) {

        if ( $item['product_id'] > 0 ) {
            $_product = $order->get_product_from_item( $item );

            // the message
            $msg = "First line of text\nSecond line of text";

            // use wordwrap() if lines are longer than 70 characters
            $msg = wordwrap($msg,70);

            // send email
            mail("[email protected] /cdn-cgi/l/email-protection","My subject",$msg);


        }
    }
}

但似乎什么也没有发生。有任何想法吗?

Thanks


这不起作用,因为这个钩子是仅当订单状态完成时触发
也比较好用wp_mail() than mail()功能。

相反,您可以尝试使用挂钩的自定义函数woocommerce_thankyou动作挂钩:

add_action( 'woocommerce_thankyou', 'custom_email_notification', 10, 1 );
function custom_email_notification( $order_id ) {

    if ( ! $order_id ) return;

    ## THE ORDER DATA ##

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    // Iterating through each order items
    foreach ( $order->get_items() as $item_id => $order_item ) {

        // Accessing to the protected data of the WC_Order_Item_Product object
        $order_item_data = $order_item->get_data();

        // Get the associated WC_Product object
        $product = $order_item->get_product();

        // Accessing to the WC_Product object protected data
        $product_data = $product->get_data();
    }


    ## SENDING AN EMAIL (outside the loop is better to send it once) ##

    $to = "[email protected] /cdn-cgi/l/email-protection";
    $subject = "the subject here";
    $content = "Here goes your message";

    // Sending your custom email notification
    wp_mail( $to, $subject, $content );
}

代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

此代码在 WooCommerce 3+ 上经过测试并且有效。

The woocommerce_thankyou钩子在订单接收页面被触发...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下 WooCommerce 结账按钮时发送自定义电子邮件 的相关文章

随机推荐

  • 每次更改控制器后自动重新启动 Rails 服务器

    任何正常更改后都不需要重新启动 Rails 服务器 但是 当我对应用程序控制器进行少量更改时 如果我不重新启动服务器 它们就不会应用 即使我写了糟糕的代码并故意犯了错误 旧的错误仍然存 在 我怎样才能改变它或验证它是否设置良好 我有在con
  • jQuery 自动完成:确定输入的文本是否不匹配

    我已经启动了 jQuery Autocomplete UI 1 6rc2 并运行良好 当用户选择一个项目时 它会使用关联的 ID 更新隐藏的表单值 当输入的文本与自动完成列表中的结果不匹配时 如何将隐藏表单值设置为 0 在本例中 我将创建一
  • 内使用
    几次

    我对 Spring 很陌生 我正在尝试使用 Spring MVC JSP JSTL 我的目标是制作包含用户列表的 JSP 并允许单独编辑每个用户 所以我想我应该使用单独的
  • 如何使用 MongoDB 和 Node.js 更新插入多个对象?

    假设我有一系列电影类型 如下所示 id 28 name Action id 12 name Adventure id 16 name Animation id 35 name Comedy id 80 name Crime id 99 na
  • Php:如何计算两个“相似”对象数组之间的差异?

    我有一个对象数组 tab这是表的 行 即您可以通过 访问每一列 tab i gt columnname 我有另一个对象数组 tab json这是 AJAX 调用的返回 其中包含 too 表的 行 即您可以通过 访问每一列 tab json
  • 将 RMI 限制为一个端口的影响

    我希望能够将我的应用程序使用的端口限制为一些尽可能小的已知集 该应用程序使用 Java RMI 与远程服务器进行通信 注册表在标准端口 1099 上导出 然而 用于导出各种远程对象的端口似乎并不总是一致的 尽管它在短时间内在多个连接中保持不
  • 让 Ruby 程序成为守护进程?

    我想编写一个始终在我的 Mac 后台 守护进程 运行的 Ruby 程序 有人能指出我如何做到这一点的正确方向吗 Ruby 1 9 x 现在具有以下内容 Process daemon 将其放入您的代码中即可 取自 Ruby 中的守护进程 ht
  • 使用IntelliJ数据库客户端连接H2数据库

    我的 Grails 应用程序在开发模式下使用 h2 数据库 Grails 应用程序的默认行为 数据库连接设置DataSource groovy are dataSource pooled true jmxExport true driver
  • java中的静态类

    java中如何声明静态类 eclipse 希望我从声明中删除 static static public class Constants 首先回答你的问题 Only a 嵌套类可以声明为静态 顶级班级不能declared是静态的 第二 内部类
  • 数据库到 GlazedList/Jtable 然后通过 GlazedList/JTable 编辑数据库

    我可以把这个问题分解为两个问题 将数据库 MS Access 的内容放入数据库的最佳方法是什么 GlazedList http www publicobject com glazedlists JTable http java sun co
  • 为什么HashMap要求初始容量是2的幂呢?

    当我浏览Java的HashMap源代码时 我看到了以下内容 The default initial capacity MUST be a power of two static final int DEFAULT INITIAL CAPAC
  • 强制回发 Asp.Net

    请看下面的点击事件 Protected Sub btnDownloadEmpl Click ByVal sender As Object ByVal e As System EventArgs Handles btnDownloadEmpl
  • 非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements

    我有一个律师表 其中 id int 作为主键 而 Country 表则以 Country code String 作为主键 我想在 hibernate 中使用 JoinTable 注释创建第三个表 其中有两个外键 但是当我运行它时 出现了以
  • 如何仅允许在国家/地区内访问

    I found 这个网站 http www blockacountry com 生成 htaccess 以阻止来自特定国家 地区的访问 问题是我只想允许在挪威境内访问 如果我使用此服务 列表将会很长 因为我必须列出所有国家 地区的 IP 地
  • 尝试运行代码时出错:调试器操作失败,本机错误=找不到指定的文件

    我最近完全过渡到 Linux 但很难找到用 C 编写代码的好方法 我发现 Monodevelop 看起来与 Visual Studio 类似 但每当我尝试运行任何代码时 我都会收到此错误 如果重要 我会运行 pop os Debugger
  • 在Android Studio中通过sdkmanager安装SDK时出错

    我试图从 Android Studio 的 sdkmanager 安装 GPU 调试工具 但出现了以下错误 Packages to install GPU Debugging tools extras android gapid 3 Pre
  • 将一个 div 淡入另一个 div:变得更加稳定、消除白色暂停、多次淡入淡出

    我有一个测试设置 http teamworksdesign com v2 tags design branding 虽然缩略图 div 淡入另一个 div 但它存在一些问题 如何消除白色暂停 目前 它会将一个 div 淡出为白色 然后在第二
  • 将 Git Diff 限制为一个或多个函数?

    I set py diff python in git info attributes 所以 Git 知道函数边界在哪里 git diff W 甚至可以确保显示整个函数 但是有没有一种方法可以将 git diff 的输出限制为特定函数 或多
  • 使用数据库表作为队列

    我想使用数据库表作为队列 我想插入其中并按照插入顺序 先进先出 从中取出元素 我主要考虑的是性能 因为每秒有数千个这样的事务 所以我想使用一个 SQL 查询来给出第一个元素 而不需要搜索整个表 当我阅读它时 我不会删除一行 SELECT T
  • 按下 WooCommerce 结账按钮时发送自定义电子邮件

    我正在尝试使用 PHP 为 Woocommerce 按下结账按钮时发送自定义电子邮件 此电子邮件将与 wooCommerce 的电子邮件通知一起发送 我用过这个answer https stackoverflow com questions