WooCommerce: проверьте, действителен ли купон

Я пытаюсь проверить, действителен ли купон (не достиг ли его предел использования), и отображать содержимое при этом условии.

Причина в том, что я хочу иметь возможность раздавать код купона конкретным посетителям, но, очевидно, не хочу раздавать купон, который уже достиг своего предела использования.

Я пытаюсь достичь этого с помощью PHP и представить код примерно так:

<?php if (coupon('mycouponcode') isvalid) {
echo "Coupon Valid"} else {
echo "Coupon Usage Limit Reached"} ?>

Любая помощь здесь будет отличной 🙂

3

Решение

$code = 'test123';

$coupon = new WC_Coupon($code);
$coupon_post = get_post($coupon->id);
$coupon_data = array(
'id' => $coupon->id,
'code' => $coupon->code,
'type' => $coupon->type,
'created_at' => $coupon_post->post_date_gmt,
'updated_at' => $coupon_post->post_modified_gmt,
'amount' => wc_format_decimal($coupon->coupon_amount, 2),
'individual_use' => ( 'yes' === $coupon->individual_use ),
'product_ids' => array_map('absint', (array) $coupon->product_ids),
'exclude_product_ids' => array_map('absint', (array) $coupon->exclude_product_ids),
'usage_limit' => (!empty($coupon->usage_limit) ) ? $coupon->usage_limit : null,
'usage_count' => (int) $coupon->usage_count,
'expiry_date' => (!empty($coupon->expiry_date) ) ? date('Y-m-d', $coupon->expiry_date) : null,
'enable_free_shipping' => $coupon->enable_free_shipping(),
'product_category_ids' => array_map('absint', (array) $coupon->product_categories),
'exclude_product_category_ids' => array_map('absint', (array) $coupon->exclude_product_categories),
'exclude_sale_items' => $coupon->exclude_sale_items(),
'minimum_amount' => wc_format_decimal($coupon->minimum_amount, 2),
'maximum_amount' => wc_format_decimal($coupon->maximum_amount, 2),
'customer_emails' => $coupon->customer_email,
'description' => $coupon_post->post_excerpt,
);

$usage_left = $coupon_data['usage_limit'] - $coupon_data['usage_count'];

if ($usage_left > 0) {
echo 'Coupon Valid';
}
else {
echo 'Coupon Usage Limit Reached';
}

Код протестирован и полностью функционален.

Ссылка

3

Другие решения

Я считаю, что самый последний метод поощряется WooCommerce использует класс \ WC_Discounts. Вот пример:

function is_referral_coupon_valid( $coupon_code ) {
$coupon = new \WC_Coupon( $coupon_code );
$discounts = new \WC_Discounts( WC()->cart );
$valid_response = $discounts->is_coupon_valid( $coupon );
if ( is_wp_error( $valid_response ) ) {
return false;
} else {
return true;
}
}

Важно помнить, что делать это внутри wp_loaded по крайней мере, вот так:

add_action( 'wp_loaded', function(){
is_referral_coupon_valid('my-coupon-code');
});
1

Ты можешь использовать этот плагин для ваших целей.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector