在保存订单并发送 WooCommerce 电子邮件通知之前,将订单 ID 添加到订单项目元数据

     2023-03-25     230

关键词:

【中文标题】在保存订单并发送 WooCommerce 电子邮件通知之前,将订单 ID 添加到订单项目元数据【英文标题】:Add the order ID to the order item metadata before the order is saved and WooCommerce email notifications are sent 【发布时间】:2022-01-04 10:57:35 【问题描述】:

我需要将带有订单 ID 和密码的链接添加到订单商品元数据。

目前,我正在使用 woocommerce_checkout_create_order_line_item 操作成功地将其他信息添加到项目元数据,但是当此操作运行时,订单 ID 还无法访问 (?)。

我可以通过其他方式执行此操作,以便在保存订单并向客户发送通知之前添加链接吗?

add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) 
    if( ! isset( $values['test_title'] ) )  return; 

    // add test info as order item metadata
    if( ! empty( $values['test_title'] ) ) 
        $test_pw = wp_generate_password(); // generate a password
        $item->update_meta_data( '_test_id', $values['test_id'] ); // add test id
        $item->update_meta_data( '_test_password', $test_pw ); // add test access password
        $item->update_meta_data( 'Access link', // add test access permalink
            get_permalink( $values['test_id'] ) . '?order=' . $order->get_id() . '&pw=' . $test_pw );
    

【问题讨论】:

【参考方案1】:

您的钩子在订单保存之前执行,并且在“保存”步骤中确定订单 ID。

所以除非你可以在你的钩子中包含这个功能,否则我不相信有办法在那个时候知道订单 ID。

但是,根据您的问题,我了解到它涉及您希望在电子邮件中显示的项目元数据。那么使用woocommerce_order_item_meta_startwoocommerce_order_item_meta_end 钩子不是一个选项,它允许您在wc_display_item_meta() WooCommerce 函数的输出之前或之后添加其他产品信息:

function action_woocommerce_order_item_meta_start( $item_id, $item, $order, $plain_text ) 
    // On email notifications
    if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) 
        echo '<ul class="wc-item-meta"><li><strong class="wc-item-meta-label">Label</strong><p>Value order id = ' . $order->get_id() . '</p></li></ul>';
    

add_action( 'woocommerce_order_item_meta_start', 'action_woocommerce_order_item_meta_start', 10, 4 );

【讨论】:

在 WooCommerce 订单和电子邮件中保存并显示产品自定义元数据

】在WooCommerce订单和电子邮件中保存并显示产品自定义元数据【英文标题】:SaveanddisplayproductcustommetaonWooCommerceordersandemails【发布时间】:2020-11-1111:58:16【问题描述】:好的,所以基本上我们在WooCommerce商店中使用ACF创建了一个自... 查看详情

自定义 WooCommerce 日期选择器结帐字段已保存并显示在订单和电子邮件中

...定义WooCommerce日期选择器结帐字段已保存并显示在订单和电子邮件中【英文标题】:CustomWooCommercedatepickercheckoutfieldsavedanddisplayedonordersandemails【发布时间】:2020-12-0304:25:34【问题描述】:我在WooCommerce结帐页面上添加了一个新的自... 查看详情

在 WooCommerce 中完成订单后向客户发送电子邮件

】在WooCommerce中完成订单后向客户发送电子邮件【英文标题】:SendEmailToTheCustomerOnOrderCompleteinWooCommerce【发布时间】:2014-03-0903:38:25【问题描述】:我的Wordpress安装有问题,或者更具体的说是WooCommerce。我过去几个月一直在工作的... 查看详情

在 Woocommerce 中发送特定运输方式的订单保留电子邮件

】在Woocommerce中发送特定运输方式的订单保留电子邮件【英文标题】:SendOrderOnHoldEmailforaspecificshippingmethodinWoocommerce【发布时间】:2018-12-0301:48:50【问题描述】:我正在使用Wordpress4.9.6和WooCommerce3.4.3版,我需要发送“订单保留”... 查看详情

向管理员发送电子邮件通知,了解 WooCommerce 中的待处理订单状态

】向管理员发送电子邮件通知,了解WooCommerce中的待处理订单状态【英文标题】:SendanEmailnotificationtotheadminforpendingorderstatusinWooCommerce【发布时间】:2018-01-0414:53:57【问题描述】:在WooCommerce中,当客户从购物车结账并提交订单时... 查看详情

在 X 天 WooCommerce 订单后发送自定义电子邮件 [重复]

】在X天WooCommerce订单后发送自定义电子邮件[重复]【英文标题】:Sendcustome-mailafterXdaysWooCommerceorder[duplicate]【发布时间】:2019-08-2322:31:30【问题描述】:如果“处理订单”超过五天,我正在尝试创建一个应该发送自定义电子邮件... 查看详情

WooCommerce - 从 functions.php 文件发送新订单/客户发票电子邮件

】WooCommerce-从functions.php文件发送新订单/客户发票电子邮件【英文标题】:WooCommerce-SendNewOrder/CustomerInvoiceEmailfromfunctions.phpfile【发布时间】:2016-10-2615:09:39【问题描述】:我正在尝试通过functions.php文件发送新订单电子邮件和客户... 查看详情

Woocommerce:结帐页面后获取订单ID [重复]

...为当订阅即将结束时,会向客户发送一封带有付款链接的电子邮件,并自动添加订单。当客户单击该链接时,它会重定向到结帐 查看详情

过滤 Woocommerce 订单发送的 PayPal“自定义”字段

】过滤Woocommerce订单发送的PayPal“自定义”字段【英文标题】:FilteringPayPal\'Custom\'FieldSentByWoocommerceOrder【发布时间】:2021-07-0521:36:08【问题描述】:我需要在“自定义”字段中处理Woocommerce发送到PayPal的数据。当Woocommerce创建订... 查看详情

WooCommerce - 我们如何在订单电子邮件中将送货地址更改为 N/A?

】WooCommerce-我们如何在订单电子邮件中将送货地址更改为N/A?【英文标题】:WooCommerce-HowcanwechangeShippingAddresstoN/Ainorderemails?【发布时间】:2017-03-0108:55:05【问题描述】:WooCommerce提供了各种钩子和操作来更改预定义的模板。但我... 查看详情

在 WooCommerce 电子邮件通知的订单详细信息表中隐藏自定义费用行

】在WooCommerce电子邮件通知的订单详细信息表中隐藏自定义费用行【英文标题】:HidecustomfeerowfromorderdetailstableinWooCommerceemailnotifications【发布时间】:2021-12-2007:49:12【问题描述】:我在订单表中添加了3项自定义费用,但在发送给... 查看详情

当订单中有缺货商品时,在 WooCommerce 电子邮件通知中显示消息

】当订单中有缺货商品时,在WooCommerce电子邮件通知中显示消息【英文标题】:DisplaymessageinWooCommerceemailnotificationswhenorderhasbackorderitemsinit【发布时间】:2022-01-1719:32:04【问题描述】:如果您订单中的几种产品中有一种产品缺货,... 查看详情

woocommerce:所有新完成的订单暂停(特别是cod)并仅发送一个暂停电子邮件作为标准确认(代码片段)

...是最新的Woocommerce3.2.3。我还使用了一些插件,包括一个电子邮件控件,一个用于感谢和确认银行(furikomi)付款的自定义电子邮件,以及用于日本的WooCommerce插件。我想创建一个类似于其他流行的 查看详情

在woocommerce管理员,订单和电子邮件中显示自定义付款字段(代码片段)

我需要在管理订单页面,thank_you和电子邮件通知中显示我的自定义结帐字段。我使用ValidateandsaveadditionalcheckoutfieldforspecificpaymentgatewayinWoocommerce答案代码来显示,验证和保存我的自定义字段。从Woocommercedisplaycustomfielddataonadminorderde... 查看详情

将默认 WooCommerce 订单状态更改为处理支票和银行付款

...入“处理中”状态,以便在处理订单时直接发送订单处理电子邮件。默认情况下,此行为适用于Paypal和COD订 查看详情

在订单页面 (WooCommerce) 上启用“只读”,以便为商店经理创建订单和客户电子邮件

...Commerce)上启用“只读”,以便为商店经理创建订单和客户电子邮件【英文标题】:Enable\'Readonly\'onorderpage(WooCommerce)forordercreated&customeremailforshopmanageronly【发布时间】:2021-11-2105:04:23【问题描述】:我正在使用WooCommerce:DisableDateo... 查看详情

WooCommerce:确认订单后付款

...情况下订购他们想要的一切。之后,店主应该会收到一封电子邮件并检查订单。店主通过检查订 查看详情

根据 WooCommerce 订单商品产品标签更改 PayPal 电子邮件

】根据WooCommerce订单商品产品标签更改PayPal电子邮件【英文标题】:ChangePayPalemailbasedonWooCommerceorderitemsproducttags【发布时间】:2021-04-2116:41:12【问题描述】:我正在努力寻找解决问题的方法。我想根据WooCommerce产品标签更改PayPal电... 查看详情