如果使用了特定的优惠券,则在WooCommerce收到的订单页面上显示自定义文本

时间:2019-04-23 06:46:52

标签: php wordpress woocommerce orders coupon

如果在结帐过程中使用了三个特定的优惠券代码之一,我试图在Woocommerce收到的订单页面上显示一条定制的谢谢消息。

我们的Woocommerce版本是2.6.11。

我尝试了以下代码的一些变体,但无法正常工作,我做错了什么吗?

//show custom coupon thankyou
function coupon_thankyou($order_id) {
    $coupon_id = '1635';
    $order = wc_get_order($order_id);
    foreach( $order->get_items('coupon') as $coupon_item ){
        if( $coupon_item->get_code() = $coupon_id ){
            echo '<p>This is an custom thank you.</p>';
        }
    }
}
add_action('woocommerce_thankyou','coupon_thankyou');

1 个答案:

答案 0 :(得分:0)

您的IF语句条件中有一个错误,其中=必须替换为=====。同样,对于优惠券,您需要使用优惠券代码slug(而不是帖子ID)。

要更好地使用woocommerce_thankyou_order_received_text过滤器挂钩在订单收到的页面上显示消息,请 (适用于Woocommerce 3 +)

// On "Order received" page (add a message)
add_filter( 'woocommerce_thankyou_order_received_text', 'thankyou_applied_coupon_message', 10, 2 );
function thankyou_applied_coupon_message( $text, $order ) {
    $coupon_code = '1635'; // coupon code name

    foreach( $order->get_items('coupon') as $coupon ){
        if( $coupon->get_code() === $coupon_code ){
            $text .= '<p>'.__("This is an custom thank you.").'</p>';
        }
    }
    return $text;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。现在应该可以使用了。


已更新

对于3.0之前的Woocommerce版本,您应该改用以下代码:

// On "Order received" page (add a message)
add_action( 'woocommerce_thankyou', 'thankyou_applied_coupon_message', 10, 1 );
function thankyou_applied_coupon_message( $order_id ) {
    $coupon_code = '1635'; // coupon code name

    $order = wc_get_order( $order_id );

    foreach( $order->get_items('coupon') as $coupon ){
        if( $coupon['name'] === $coupon_code ){
            echo '<p>'.__("This is an custom thank you.").'</p>';
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。