我會這麼做:
定義中的header.php或頁面一個AJAX網址將您添加優惠券
<script type="text/javascript" language="javascript">
var ajax_url = "<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php";
</script>
在function.php你必須定義AJAX調用
function implement_ajax() {
include(TEMPLATEPATH . '/ajax_return.php');
}
add_action('wp_ajax_my_special_action', 'implement_ajax');
add_action('wp_ajax_nopriv_my_special_action', 'implement_ajax');
在ajax_return.php你過去的代碼,爲woocommerce添加優惠券:
if (isset($_POST['couponcode']))
{ apply_coupon($_POST['couponcode']); };
function apply_coupon($couponcode) {
global $woocommerce; WC()->cart->remove_coupons();
$ret = WC()->cart->add_discount($couponcode);
$array = array('return' => $ret); print_r($array);
}
exit;
你jQuery.post將成爲本:
<script type="text/javascript">
jQuery(function(){
coupon = jQuery(this).data('coupon');
jQuery.post(ajax_url, {action : 'my_special_action', couponcode : coupon}, return_function, 'JSON');
});
function return_function(data)
{
console.log(data.return); //contains true if coupon was applied
}
</script>
如果您需要,請致電return_function管理響應。
我已經實現了你的代碼,當我使用上面的代碼時,我得到的return_function沒有定義。我改變了你的代碼,並且服務器已經回覆了0,並且優惠券代碼沒有被添加。 –
有沒有辦法可以做到這一點使用?wc-ajax = apply_coupon。我注意到需要定義一個安全密鑰,有人知道它是如何產生密鑰的嗎? –
我不知道是否存在使用wp-ajax的方式,但我建議你使用正確的方法來使用wordpress進行ajax調用。 ps:我已經正確更新代碼。所以,如果您在return_function上遇到問題,只需聲明它: 函數return_function(data) { console.log(data); } – mariobros