我正在覆盖WooCommerce中的管理员电子邮件通知模板,当订单交易成功时,我想在电子邮件中添加交易ID。
我在管理员电子邮件模板中尝试了$order->get_transaction_id()
as explained here,但它返回一个空结果。
然后我在管理员电子邮件模板中尝试了这个:
do_action('getOrderTransactionID', $order->id);
在我的主题的functions.php中我添加了这个但是这个函数也没有返回任何内容。
add_action('getOrderTransactionID', 'getOrderTransactionIDForEmail');
function getOrderTransactionIDForEmail($orderId){
echo get_metadata('post', $orderId, '_transaction_id', true);
//get_post_data doesn't return anything either
//get_post_meta( $orderId, '_transaction_id', true);
}
在wp_postmeta
表中,每次成功交易后都会保存_transaction_id
元键。为什么我无法检索数据库中已有的_transaction_id
?
答案 0 :(得分:1)
您使用的网关是什么?如果您没有看到_transaction_id
,则需要在网关插件中手动保存返回的transaction_id。 Check out this page
尝试在付款网关文件中保存交易ID,然后在var_dump(get_post_custom($order->id));
add_post_meta( $order->id, '_transaction_id', YOUR_TRANSACTION_ID, true );
答案 1 :(得分:0)
以下是如何使用现有挂钩向电子邮件模板添加数据的示例。
function kia_display_email_order_meta( $order, $sent_to_admin, $plain_text ) {
$some_field = get_post_meta( $order->id, '_some_field', true ),
$another_field = get_post_meta( $order->id, '_another_field', true ),
if( $plain_text ){
echo 'The value for some field is ' . $some_field . ' while the value of another field is ' . $another_field;
} else {
echo '<p>The value for <strong>some field</strong> is ' . $some_field. ' while the value of <strong>another field</strong> is ' . $another_field;</p>;
}
}
add_action( 'woocommerce_email_order_meta', 'kia_display_email_order_meta', 30, 3 );