我正在尝试自定义“订单完成”电子邮件。具体来说,我有一些需要许可证密钥的产品(软件)。到目前为止,我已经完成了在数据库中生成和存储许可证密钥(以及验证)的算法。
在我的子主题中,在/woocommerce/order/order-details.php
下,我添加了相应的代码以将许可证密钥添加到数据库中。我不想在order-details
页面上显示它们,因为用户可以关闭此网页然后丢失密钥。所以,我想通过电子邮件发送它们(或在电子邮件和订单详情页面中显示密钥)。我想使用“订单已完成”电子邮件,因为我不想发送多封电子邮件。
我想出了如何添加到order-details.php
模板,因为有预先存在的WC_ORDER
实例:$order = new WC_Order( $order_id )
。在那之后,我只是查看了文档,找到了我需要的正确方法,然后我想出了这个:
foreach( $order->get_items() as $item ) {
$_product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
$item_meta = new WC_Order_Item_Meta( $item['item_meta'] );
?>
// some code that was already included
if ( $_product && $_product->exists() && $_product->is_downloadable() && $order->is_download_permitted() ) {
if ($_product->get_attribute('needs_license_key') == "True") { // custom attribute for my software
// generate and store license keys
我只需添加if ($_product->get_attribute('needs_license_key')...
部分,所以它不是很复杂。
但是,Order-Completed模板中没有这个,所以我不确定这是怎么回事。我需要遍历所有产品,检查它们是否可下载(我已经有了代码),然后找到产品密钥(我知道如何做到这一点)。我的主要问题是:如何找出发送电子邮件的订单号以及该订单的其他统计信息(例如列出的产品及其属性,以便我可以如上所述迭代它们)?我不确定如何使用WooCommerce完成这项工作。