【发布时间】:2015-07-11 03:28:46
【问题描述】:
我正在覆盖 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?
【问题讨论】:
-
订单是用“post”类型保存的还是其他类型的?
-
在
wp_post表中,我看到订单记录的post_type是shop_order -
get_metadata的第一个参数是对象类型 (codex.wordpress.org/Function_Reference/get_metadata)。 Woocommerce 的订单肯定不使用默认的 WordPresspost类型吗? -
这就是你试图获取
post类型的元数据但你有shop_order的问题 -
尝试使用
echo get_metadata('shop_order', $orderId, '_transaction_id', true);
标签: php wordpress woocommerce