Я пытаюсь создать «продукт Погасить страницу, как показано в this tutorial на SitePoint.Применить WooCommerce код купона на кассе
Проблема заключается в том, что продукт действительно будет добавлен в корзину, и вы можете приступить к кассе, но скидка, связанная с кодом купона, не применяется автоматически. В кодовом купоне я создал значение, установленное на 100% скидку.
Вы можете снова использовать код купона на купоне через «У вас есть код купона «вылетают на странице проверки, но это побеждает всю цель.
Я также не g и др этот код работает, чтобы начать с, но я был в состоянии понять, что:
// Check coupon to make determine if its valid or not if(! $coupon->id && ! isset($coupon->id)) { ...Rest of code here...
должно быть:
// Check coupon to make determine if its valid or not
if(! $coupon->id && ! isset($coupon_id)) {
Пожалуйста, обратите внимание, что второй не IsSet имя переменной. Может быть, это работает, но это не правильный способ справиться с вещами, все знают, но я.
К сожалению, я вышел из своей зоны комфорта a.t.m. В моем прямом кругу друзей у меня нет никого, что я мог бы получить и получить другой ответ: «А?»? », Поэтому я делаю это здесь, на Stackoverflow.
Ссылка на учебник по SitePoint только, вероятно, не оценили, поэтому здесь полный код, я использую:
обработчики Ajax добавлены в functions.php
add_action('wp_ajax_spyr_coupon_redeem_handler', 'spyr_coupon_redeem_handler');
add_action('wp_ajax_nopriv_spyr_coupon_redeem_handler', 'spyr_coupon_redeem_handler');
Купон Войти также добавлены в functions.php
function spyr_coupon_redeem_handler() {
// Get the value of the coupon code
$code = $_REQUEST['coupon_code'];
// Check coupon code to make sure is not empty
if(empty($code) || !isset($code)) {
// Build our response
$response = array(
'result' => 'error',
'message' => 'Code text field can not be empty.'
);
header('Content-Type: application/json');
echo json_encode($response);
// Always exit when doing ajax
exit();
}
// Create an instance of WC_Coupon with our code
$coupon = new WC_Coupon($code);
// Check coupon to make determine if its valid or not
if(! $coupon->id && ! isset($coupon_id)) {
// Build our response
$response = array(
'result' => 'error',
'message' => 'Invalid code entered. Please try again.'
);
header('Content-Type: application/json');
echo json_encode($response);
// Always exit when doing ajax
exit();
} else {
// Attempting to add the coupon code as a discount.
WC()->cart->add_discount($code);
// Coupon must be valid so we must
// populate the cart with the attached products
foreach($coupon->product_ids as $prod_id) {
WC()->cart->add_to_cart($prod_id);
}
// Build our response
$response = array(
'result' => 'success',
'href' => WC()->cart->get_cart_url()
);
header('Content-Type: application/json');
echo json_encode($response);
// Always exit when doing ajax
exit();
}
}
код формы представления JQuery, через поставлен в очередь зарегистрированных обработчиков Ajax в functions.php
jQuery(document).ready(function() {
jQuery('#ajax-coupon-redeem input[type="submit"]').click(function(ev) {
// Get the coupon code
var code = jQuery('input#coupon').val();
// We are going to send this for processing
data = {
action: 'spyr_coupon_redeem_handler',
coupon_code: code
}
// Send it over to WordPress.
jQuery.post(woocommerce_params.ajax_url, data, function(returned_data) {
if(returned_data.result == 'error') {
jQuery('p.result').html(returned_data.message);
} else {
// Hijack the browser and redirect user to cart page
window.location.href = returned_data.href;
}
})
// Prevent the form from submitting
ev.preventDefault();
});
});
Благодарим за внимание, указав меня в правильном направлении.