【问题标题】:Get customer order count in new order email notification在新订单电子邮件通知中获取客户订单数
【发布时间】:2017-02-08 23:54:21
【问题描述】:

如果是回头客,我想在 WooCommerce 的“新订单”电子邮件通知中注明。

这看起来很简单,但我尝试了大约 5 种不同的方法,但都没有奏效。我尝试将其放入 2 个不同的钩子中:

  • woocommerce_email_after_order_table
  • woocommerce_email_subject_new_order

似乎 wc_get_customer_order_count($user->ID) 应该可以工作,但似乎 $user 对象没有传递到这些钩子的函数中,对吧?

我还想知道当它是访客而不是注册用户时是否可以通过比较电子邮件地址来实现?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce orders email-notifications


    【解决方案1】:

    WooCommerce 电子邮件通知与订单相关。

    woocommerce_email_after_order_table 挂钩中,您将 Order 对象作为您的挂钩自定义函数中的参数,还有 $email 对象。

    使用 $order 对象,您可以通过以下方式获取 user ID

    $user_id = $user_id = $order->get_user_id();
    

    您可以通过 $email 对象定位新订单电子邮件通知。

    所以工作代码将是:

    add_action( 'woocommerce_email_after_order_table', 'customer_order_count', 10, 4);
    function customer_order_count( $order, $sent_to_admin, $plain_text, $email ){
    
        if ( $order->get_user_id() > 0 ){
    
            // Targetting new orders (that will be sent to customer and to shop manager)
            if ( 'new_order' == $email->id ){
    
                // Getting the user ID
                $user_id = $order->get_user_id();
    
                // Get the user order count
                $order_count = wc_get_customer_order_count( $user_id );
    
                // Display the user order count
                echo '<p>Customer order count: '.$order_count.'</p>';
    
            }
        }
    }
    

    例如,您也可以使用 woocommerce_email_before_order_table 挂钩...

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

    此代码已经过测试并且可以工作。

    【讨论】:

    • 这太好了,谢谢!希望我能早点问。 :-P
    • 有趣的是,无论我使用哪个电子邮件挂钩,wc_get_customer_order_count 似乎总是比实际订单数少 1,就好像它没有涵盖新订单一样。要记住的事情......
    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2018-09-19
    • 2019-07-23
    • 1970-01-01
    • 2019-05-10
    • 2015-07-23
    相关资源
    最近更新 更多