脚本宝典收集整理的这篇文章主要介绍了php – woocommerce自定义结帐字段添加费用以订购ajax,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
add_action( 'woocommerce_after_checkout_billing_form','add_Box_option_to_checkout' ); function add_Box_option_to_checkout( $checkout ) { echo '<div id="message_fields">'; woocommerce_form_field( 'add_gift_Box',array( 'tyPE' => 'checkBox','class' => array('add_gift_Box form-row-wide'),'label' => __('Ilość pudełek ozdobnych - 25 PLN/szt'),'placeholder' => __(''),),$checkout->get_value( 'add_gift_Box' )); }
jquery( document ).ready(function( $) { $('#add_gift_Box').click(function(){ VAR data = { action: 'woocommerce_add_gift_Box',state: '200',}; jQuery.ajax({ type: 'POST',url: wc_checkout_params.ajax_url,data: data,success: function (code) { console.LOG(code); jQuery('body').trigger('update_checkout'); },dataType: 'htML' }); }); });
function woo_add_cart_fee( $data ){ if ( is_admin() && ! defined( 'DOING_AJAX' ) || ! $_POST ) return; $extracost = 0; if (isset($_POST['state'])) { $extracost = intval($_POST['state']); } WC()->cart->add_fee( 'Ozdobne pudełka:',$extracost ); } add_action( 'woocommerce_cart_calculate_fees','woo_add_cart_fee' ); add_action('wp_ajax_woocommerce_add_gift_Box','woo_add_cart_fee',10); add_action('wp_ajax_noPRiv_woocommerce_add_gift_Box',10);
由于某些原因,$_POST [‘state’]的值没有添加,当我给出一个硬编码值时,该函数有效,我尝试了很多选项,但是无法使其工作.
我见过类似的帖子,但没有一个人有答案.
parse_str( $_POST['post_data'],$post_data );
然后你可以从$post_data [‘add_gift_Box’]获得’add_gift_Box’选项.请注意,订单完成后,此’post_data’元素不再可用,所有内容都在$_POST中.
完整示例,基于您的代码:
1)将复选框添加到结帐中
add_action( 'woocommerce_after_checkout_billing_form',$checkout->get_value( 'add_gift_Box' )); echo '</div>'; }
2)单击复选框时更新购物车的脚本(无需额外的AJAX请求!)
add_action( 'wp_footer','woocommerce_add_gift_Box' ); function woocommerce_add_gift_Box() { if (is_checkout()) { ?> <script type="text/javascript"> jQuery( document ).ready(function( $) { $('#add_gift_Box').click(function(){ jQuery('body').trigger('update_checkout'); }); }); </script> <?PHP } }
3)增加费用的行动
add_action( 'woocommerce_cart_calculate_fees','woo_add_cart_fee' ); function woo_add_cart_fee( $cart ){ if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) { return; } if ( isset( $_POST['post_data'] ) ) { parse_str( $_POST['post_data'],$post_data ); } else { $post_data = $_POST; // fallback for final checkout (non-ajax) } if (isset($post_data['add_gift_Box'])) { $extracost = 25; // not sure why you used intval($_POST['state']) ? WC()->cart->add_fee( 'Ozdobne pudełka:',$extracost ); } }
以上是脚本宝典为你收集整理的php – woocommerce自定义结帐字段添加费用以订购ajax全部内容,希望文章能够帮你解决php – woocommerce自定义结帐字段添加费用以订购ajax所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。