我们的商店销售软件,我们正在为每个购买的软件添加一个软件凭证代码。购买完成后(通过woocommerce_payment_complete
hook)我们生成凭证代码并将其添加到通过wc_add_order_item_meta 方法
汇总代码:
add_filter(\'woocommerce_payment_complete\', \'add_voucher_code\');
function add_voucher_code( $order_id ) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ($items as $item) {
for ($i = 1; $i <= $item[\'qty\']; $i++) {
$voucher_code = \'API request based on order information to get voucher code\';
wc_add_order_item_meta($item->get_id(), \'Voucher Code\', $voucher_code);
}
}
}
出于某种原因,项目自定义元会显示在订单确认页面上,但不会显示在确认电子邮件中。(
problem 1 拍打额头)所以我们利用
woocommerce_order_item_meta_end
钩子将其添加到确认电子邮件中。(
wc_get_order_item_meta)
汇总代码:
add_action(\'woocommerce_order_item_meta_end\', \'email_confirmation_display_order_items\', 10, 4);
function email_confirmation_display_order_items($item_id, $item, $order, $plain_text) {
echo \'<div>Voucher Code: \'. wc_get_order_item_meta( $item_id, \'Voucher Code\') .\'</div>\';
}
Problem 2 添加的代码片段显示在订单确认页面(现在显示两次)和订单确认电子邮件中。(又拍了拍额头)
Current Problem 2 Solution
现在,我们通过添加一个if语句来解决这个问题here. 像这样:
// Only on emails notifications
if( ! (is_admin() || is_wc_endpoint_url() )) {
echo \'<div>Voucher Code: \'. wc_get_order_item_meta( $item_id, \'Voucher Code\') .\'</div>\';
}
这感觉就像是一个创可贴,任何见解/建议都将不胜感激。谢谢