WordPress教程

woocommerce 结帐页面添加自定义费用字段ajax更新

阿里云

我试图在结账时向订单总额支付定制费用,我在 WooCommerce 中添加了一个复选框:

  1. add_action( 'woocommerce_after_checkout_billing_form', 'add_box_option_to_checkout' );
  2. function add_box_option_to_checkout( $checkout ) {
  3.     echo '<div id="message_fields">';
  4.     woocommerce_form_field( 'add_gift_box', array(
  5.         'type'          => 'checkbox',
  6.         'class'         => array('add_gift_box form-row-wide'),
  7.  
  8.         'label'         => __('Ilość pudełek ozdobnych - 25 PLN/szt'),
  9.         'placeholder'   => __(''),
  10.         ), $checkout->get_value( 'add_gift_box' ));
  11.         echo '</div>';
  12. }
也想出现在这里?联系我们
创客主机

单击复选框时更新购物车的脚本(无需额外的 AJAX 请求!):

  1. add_action( 'wp_footer', 'woocommerce_add_gift_box' );
  2. function woocommerce_add_gift_box() {
  3.     if (is_checkout()) {
  4.     ?>
  5.     <script type="text/javascript">
  6.     jQuery( document ).ready(function( $) {
  7.         $('#add_gift_box').click(function(){
  8.             jQuery('body').trigger('update_checkout');
  9.         });
  10.     });
  11.     </script>
  12.     <?php
  13.     }
  14. }

增加费用的行动:

  1. add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
  2. function woo_add_cart_fee( $cart ){
  3.         if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
  4.         return;
  5.     }
  6.  
  7.     if ( isset( $_POST['post_data'] ) ) {
  8.         parse_str( $_POST['post_data'], $post_data );
  9.     } else {
  10.         $post_data = $_POST; // fallback for final checkout (non-ajax)
  11.     }
  12.  
  13.     if (isset($post_data['add_gift_box'])) {
  14.         $extracost = 25; // not sure why you used intval($_POST['state']) ?
  15.         WC()->cart->add_fee( 'Ozdobne pudełka:', $extracost );
  16.     }
  17.  
  18. }

woocommerce 结帐页面添加自定义费用字段 ajax 更新

已有 293 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!