在 WooCommerce 感谢页面中显示优惠券使用次数和限制

Posted

技术标签:

【中文标题】在 WooCommerce 感谢页面中显示优惠券使用次数和限制【英文标题】:Display coupon usage count and limit in WooCommerce thank you page 【发布时间】:2022-01-15 02:27:56 【问题描述】:

我想在 WooCommerce 感谢页面上显示优惠券的剩余数量

例如:您使用了测试优惠券3次,还有还剩10次

这是我的代码:

add_action('woocommerce_after_cart_table', 'coupon_count');
function coupon_count() 
    global $woocommerce;

    if ( ! empty( $woocommerce->cart->applied_coupons ) ) 
         $my_coupon = $woocommerce->cart->get_coupons() ;
         foreach($my_coupon as $coupon)

            if ( $post = get_post( $coupon->id ) ) 

                        $counter = $coupon->get_usage_count();
                        echo "<span class='name-coupon'><b>Total usage for coupon </b><b>'</b><b>".$coupon->code."</b><b>'</b><b>: </b></span>";
                        echo "<span class='coupon-counter'>".($counter)."</span>";

            
        
    

但是我有两个问题:

1.使用此代码,只显示使用次数,不显示剩余次数。

2.在感谢页面将woocommerce_after_cart_table替换为woocommerce_thankyou不会执行代码。

【问题讨论】:

【参考方案1】:

在感谢页面上使用订单对象,而不是使用购物车对象。所以我们将使用那个对象来代替

您可以使用get_usage_limit_per_user() 获取每位客户的优惠券使用限制(针对单个客户)

使用get_usage_limit()获取优惠券使用限额。

所以你得到:

function action_woocommerce_thankyou( $order_id ) 
    // Get $order object
    $order = wc_get_order( $order_id );

    foreach( $order->get_coupon_codes() as $coupon_code ) 
        // Get the WC_Coupon object
        $coupon = new WC_Coupon( $coupon_code );

        // Get usage count
        $count = $coupon->get_usage_count();
        
        // Get coupon usage limit per customer
        $limit = $coupon->get_usage_limit_per_user();
        
        // OR use this instead, to get coupon usage limit.
        // $limit = $coupon->get_usage_limit();
        
        // NOT empty
        if ( ! empty ( $count ) && ! empty ( $limit ) ) 
            // Calculate remaining
            $remaining = $limit - $count;
        
            // Output
            echo sprintf( '<span class="coupon-class">You used the <strong>%s</strong> coupon <strong>%d</strong> times and there are <strong>%d</strong> more left</span>', $coupon_code, $count, $remaining );
        
    

add_action( 'woocommerce_thankyou', 'action_woocommerce_thankyou', 10, 1 );

【讨论】:

能否在同一功能中显示所有使用此优惠码的用户列表? 是的,使用get_used_by() - 获取所有使用过当前优惠券的用户的记录。【参考方案2】:
add_action('woocommerce_after_cart_table', 'coupon_count');
function coupon_count() 
    global $woocommerce;

    if ( ! empty( $woocommerce->cart->applied_coupons ) ) 
         $my_coupon = $woocommerce->cart->get_coupons() ;
         foreach($my_coupon as $coupon)

            if ( $post = get_post( $coupon->id ) ) 

                        $counter = $coupon->get_usage_count();
                        $remaining = $coupon->get_usage_limit()-$counter;
                        echo "<span class='name-coupon'><b>Total usage for coupon </b><b>'</b><b>".$coupon->code."</b><b>'</b><b>: </b></span>";
                        echo "<span class='coupon-counter'>".($counter)."</span>";
                        echo "<span class='coupon-counter'> there are ".($remaining)." more left</span>";

            
        
    

【讨论】:

以上是关于在 WooCommerce 感谢页面中显示优惠券使用次数和限制的主要内容,如果未能解决你的问题,请参考以下文章

选择 BACS 帐户以显示在 WooCommerce 的感谢页面中

Woocommerce 删除订单感谢页面上的银行帐号

Woocommerce 如何将优惠券表格移动到结帐页面的底部

根据在 WooCommerce 中应用的优惠券显示货到付款 (COD)

通过 URL 将免费产品添加到 WooCommerce 自动生成的优惠券

如何根据产品类别拆分 woocommerce 购物车页面