微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WooCommerce 自定义结帐复选框字段验证一个强制性复选框

如何解决WooCommerce 自定义结帐复选框字段验证一个强制性复选框

我有三个自定义结帐字段,人们必须至少检查一个才能通过订单。 这仅适用于 1 个产品。

因此,我遍历购物车项目以检查产品是否在购物车中,然后添加字段。这部分工作正常:

add_action( 'woocommerce_before_order_notes','mmm_add_custom_checkout_field' );

function mmm_add_custom_checkout_field( $checkout ) { 
    
       $product_id = 214884;
   $in_cart = false;
  
   foreach( WC()->cart->get_cart() as $cart_item ) {
      $product_in_cart = $cart_item['product_id'];
      if ( $product_in_cart === $product_id ) $in_cart = true;
   }
  
   if ( $in_cart ) {
    echo '<h2>Membership Application</h2>';
    echo '<p>Select all that applies</p>';
   woocommerce_form_field( 'read_wog',array(        
      'type' => 'checkBox','class' => array( 'form-row-wide no-req' ),'required' => true,'label' => 'I accept term 1',),$checkout->get_value( 'read_wog' ) ); 
        woocommerce_form_field( 'one_on_one','label' => 'I accept term 2',$checkout->get_value( 'one_on_one' ) ); 
        woocommerce_form_field( 'mm_sn','label' => 'I accept term 3).',$checkout->get_value( 'mm_sn' ) ); 

      
  
   }

}

该网站使用 Paypal Express 作为支付网关,无论复选框验证如何,验证都允许人们通过 Paypal。认字段的验证工作正常。手动刷新页面时会添加错误提示

这是验证码:

add_action( 'woocommerce_checkout_process','mmm_validate_new_checkout_field' );
  
function mmm_validate_new_checkout_field() {    
   $product_id = 214884;
   $in_cart = false;
  
   foreach( WC()->cart->get_cart() as $cart_item ) {
      $product_in_cart = $cart_item['product_id'];
      if ( $product_in_cart === $product_id ) $in_cart = true;
   }
     if( $in_cart && !isset($_POST['mm_sn']) && !isset($_POST['one_on_one']) && !isset($_POST['read_wog']) ) {
         wc_add_notice( 'You can only have a full membership if you accept at least 1 term','error' );
     }
}

知道如何让它工作吗?

解决方法

“该网站使用 PayPal Express 作为支付网关”

这不够具体,无法提供建议。如果正在使用 PayPal JS SDK 按钮(在 WooCommerce PayPal 插件配置中称为智能按钮),那么您可以添加一个 onClick 处理程序,如下所述:https://developer.paypal.com/docs/business/javascript-sdk/javascript-sdk-reference/#oninitonclick

您需要编辑 WooCommerce 插件如何调用 paypal.Buttons 的输出 JS 以包含此类函数。

,

如果在结账时至少没有选中一个复选框,以下重新访问的代码将抛出一条错误验证消息:

$ sudo yum install -y php-gd
$ sudo systemctl restart php-fpm

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。