2017-10-17 33 views
0

我有一个WooCommerce官方付款(智利交通银行)的插件,但该插件直接在“谢谢”页面打印transaction_id。我做了这个事务并添加到数据库中。在WooCommerce中触发新订单邮件时?在发送之前尝试添加新值

问题是当WooCommerce发送“新订单”邮件transaction_id从不显示。我认为这个邮件在我收到transaction_id号码之前就已经发送了。我想知道,当WooCommerce发送新的订单邮件?

+0

您可以使用操作'woocommerce_email_before_order_table'插入自定义订单元数据,例如您的transaction_id号码。取决于您希望显示交易ID的电子邮件地址。这个视觉指南将帮助你决定把它放在哪里https://businessbloomer.com/woocommerce-visual-hook-guide-emails/ –

回答

0

您可以使用woocommerce_email_after_order_table挂钩将自定义数据添加到电子邮件中。

/** 
* 
* @param instance $order 
* @param bool $sent_to_admin TRUE for admin 
*/ 
function wh_addTransactionIdOrderEmail($order, $sent_to_admin) 
{ 
    $order_id = method_exists($order, 'get_id') ? $order->get_id() : $order->id; 
    $transaction_id = get_post_meta($order_id, "_transaction_id ", true); //<-- replace it with your metakey 
    if(empty($transaction_id)) //if blank i.e for Failed/Cancelled order then do not add transaction ID 
     return; 
    echo '<p></p><p><strong>Transaction ID:</strong> ' . $transaction_id . '</p>'; 
} 

add_action('woocommerce_email_after_order_table', 'wh_addTransactionIdOrderEmail', 10, 2); 

代码放在functions.php文件的活跃儿童主题(或主题)的。或者也可以在任何插件php文件中使用。
代码已经过测试和工作。

希望这会有所帮助!

+0

如果我是正确的,这个代码手动插入邮件形式的'transaction_id'。对? 但问题是,在我进入DB之前发送的邮件是transaction_id。我想先得到身份证,然后发送邮件。 –

+0

@ArmandoGarcía:你用来插入'transaction_id'的钩子?因为在你的插件中,如果你将付款设置为完成'$ order-> payment_complete($ transaction_id);'那么只有新的订单电子邮件被触发,除非你有CoD激活并且客户使用它。 –

+0

是$ order-> payment_complete? –

相关问题