【发布时间】:2021-06-02 15:54:03
【问题描述】:
我正在尝试将会员卡集成到 WooCommerce 网上商店。订单完成后,我调用他们的 API 来生成忠诚度积分,并将令牌存储在订单的元标记中。 在订单确认页面和电子邮件中,我想使用存储在元标记中的令牌显示忠诚度积分的二维码。
一切正常,除了在生成令牌之前显示确认页面,因此无法显示二维码。
- 我使用
woocommerce_payment_complete操作创建令牌。
add_action( 'woocommerce_payment_complete', 'get_loyalty_token');
function get_loyalty_token( $order_id ){
$order = wc_get_order( $order_id );
if ( $order ) {
$total = $order->get_total();
$loyalty= new Loyalty();
$loyalty->create_code( $total, 'webshop-' . $order->get_id() );
$token = $loyalty->get_token() ?: '';
add_post_meta( $order->get_id(), 'meta_loyalty_token', $token );
}
}
- 在
order-details.php模板中,我添加了此代码以加载并显示二维码(与确认电子邮件相同。
$token = get_post_meta( $order->get_id(), 'meta_loyalty_token', TRUE);
$loyalty= new Loyalty();
$loyalty->get_code($token);
echo $loyalty->html_block();
显示订单确认时,没有二维码,因为meta_loyalty_token尚未设置。如果我重新加载确认页面,则会显示 QR 码,因为此时会生成并存储令牌。
我应该使用其他操作来代替woocommerce_payment_complete 吗?或者有没有办法仅在此操作完成后显示确认页面?
【问题讨论】:
标签: php wordpress woocommerce metadata hook-woocommerce