结帐字段:隐藏和显示现有字段

Checkout fields: Hiding and showing existing fields(结帐字段:隐藏和显示现有字段)
本文介绍了结帐字段:隐藏和显示现有字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

基于此有效答案:

//注册外部 jQuery/JS 文件函数 cfields_scripts() {//重要的提示://对于子主题,将 get_template_directory_uri() 替换为 get_stylesheet_directory_uri()//外部 cfields.js 文件位于活动子主题或主题的子文件夹js"中.wp_enqueue_script('checkout_script', get_template_directory_uri().'/js/cfields.js', array('jquery'), '1.0', true );}add_action('wp_enqueue_scripts', 'cfields_scripts');add_filter('woocommerce_checkout_fields', 'ba_custom_checkout_billing_fields');功能 ba_custom_checkout_billing_fields( $fields ) {//1. 创建额外的自定义计费字段//状态"选择器$fields['billing']['billing_status']['type'] = 'select';$fields['billing']['billing_status']['class'] = array('form-row-wide, status-select');$fields['billing']['billing_status']['required'] = true;$fields['billing']['billing_status']['label'] = __('Statut Juridic', 'theme_domain');$fields['billing']['billing_status']['placeholder'] = __('Alege statutul', 'theme_domain');$fields['billing']['billing_status']['options'] = array('1' =>__( 'Persona Fizica', 'theme_domain' ),'2' =>__( 'Persoana Juridica', 'theme_domain' ));//Nr.registrul comertului"文本字段(这个字段很常见)$fields['billing']['billing_ser_id']['type'] = 'text';$fields['billing']['billing_ser_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_ser_id']['required'] = true;//<== HERE 必须是true",因为它总是被显示并且需要验证$fields['billing']['billing_ser_id']['label'] = __('Nr. Reg. Comert', 'theme_domain');$fields['billing']['billing_ser_id']['placeholder'] = __('Introdu numarul', 'theme_domain');//银行"文本字段$fields['billing']['billing_bt_id']['type'] = 'text';$fields['billing']['billing_bt_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_bt_id']['required'] = false;$fields['billing']['billing_bt_id']['label'] = __('Banca', 'theme_domain');$fields['billing']['billing_bt_id']['placeholder'] = __('Adauga Banca', 'theme_domain');//IBAN"文本字段$fields['billing']['billing_ib_id']['type'] = 'text';$fields['billing']['billing_ib_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_ib_id']['required'] = false;$fields['billing']['billing_ib_id']['label'] = __('IBAN', 'theme_domain');$fields['billing']['billing_ib_id']['placeholder'] = __('Adauga IBAN-ul', 'theme_domain');//CIF"文本字段$fields['billing']['billing_cf_id']['type'] = 'text';$fields['billing']['billing_cf_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_cf_id']['required'] = false;$fields['billing']['billing_cf_id']['label'] = __('Cod Fiscal', 'theme_domain');$fields['billing']['billing_cf_id']['placeholder'] = __('Adauga CIF-ul', 'theme_domain');//2. 对计费字段进行排序$fields_order = 数组('billing_first_name', 'billing_last_name', 'billing_email','billing_phone', 'billing_address_1', 'billing_address_2','billing_postcode', 'billing_city', 'billing_country','billing_status', 'billing_company', 'billing_ser_id','billing_bt_id', 'billing_ib_id', 'billing_cf_id');foreach($fields_order 作为 $field)$ordered_fields[$field] = $fields['billing'][$field];$fields['billing'] = $ordered_fields;//4. 返回 Checkout 自定义计费字段返回 $fields;}//处理结帐(检查必填字段是否不为空)add_action('woocommerce_checkout_process', 'ba_custom_checkout_field_process');功能 ba_custom_checkout_field_process() {如果(!$_POST['billing_ser_id'])wc_add_notice( __( '<strong>Nr. Reg. Comert</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_bt_id'])wc_add_notice( __( '<strong>Banca</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_ib_id'])wc_add_notice( __( '<strong>IBAN</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_cf_id'])wc_add_notice( __( '<strong>Cod Fiscal</strong> 是必填字段.', 'theme_domain' ), 'error' );}//使用自定义字段值向订单添加/更新元数据add_action('woocommerce_checkout_update_order_meta', 'ba_custom_checkout_field_update_order_meta');功能 ba_custom_checkout_field_update_order_meta( $order_id ) {$billing_company = $_POST['billing_company'];$billing_ser_id = $_POST['billing_ser_id'];$billing_bt_id = $_POST['billing_bt_id'];$billing_ib_id = $_POST['billing_ib_id'];$billing_cf_id = $_POST['billing_cf_id'];//对于个人将计费公司重置为"(无值)而不是否"如果 ( !empty($billing_company) && 'no' == $billing_company )update_post_meta( $order_id, '_billing_company', '' );如果 ( !empty($billing_ser_id) )update_post_meta( $order_id, '_billing_ser_id', sanitize_text_field( $billing_ser_id) );//只为公司添加/更新数据如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id )update_post_meta( $order_id, '_billing_bt_id', sanitize_text_field( $billing_bt_id) );//只为公司添加/更新数据如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id )update_post_meta( $order_id, '_billing_ib_id', sanitize_text_field( $billing_ib_id) );//只为公司添加/更新数据如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id )update_post_meta( $order_id, '_billing_cf_id', sanitize_text_field( $billing_cf_id) );}//在订单编辑页面上显示自定义字段标题/值add_action('woocommerce_admin_order_data_after_billing_address', 'ba_custom_checkout_field_display_admin_order_meta', 10, 1);功能 ba_custom_checkout_field_display_admin_order_meta( $order ){$输出 = '';$billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );$billing_bt_id = get_post_meta( $order->id, '_billing_bt_id', true );$billing_ib_id = get_post_meta( $order->id, '_billing_ib_id', true );$billing_cf_id = get_post_meta( $order->id, '_billing_cf_id', true );如果(!空($billing_ser_id)){$output .='

'.__( 'Nr. Reg. Comert', 'theme_domain' ) .':' .$billing_ser_id .'</p>';}如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id ){$output .='

'.__( 'Banca', 'theme_domain') .':' .$billing_bt_id .'</p>';}如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id ){$output .='

'.__( 'IBAN', 'theme_domain') .':' .$billing_ib_id .'</p>';}如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id ){$output .='

'.__( '鳕鱼财政', 'theme_domain') .':' .$billing_cf_id .'</p>';}回声$输出;}

要在客户订单视图、Thankyou 页面、我的帐户订单视图和电子邮件通知上显示数据,请在 myfunction.php 文件中添加以下 2 个代码片段:

//在客户详细信息"区域显示订单视图数据add_action('woocommerce_order_details_after_customer_details','ba_add_values_to_order_item_meta', 10, 1 );功能 ba_add_values_to_order_item_meta( $order ) {$输出 = '';$billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );$billing_bt_id = get_post_meta( $order->id, '_billing_bt_id', true );$billing_ib_id = get_post_meta( $order->id, '_billing_ib_id', true );$billing_cf_id = get_post_meta( $order->id, '_billing_cf_id', true );如果 ( !empty($billing_ser_id) )$输出.= '<tr><th>'.__( "Nr. Reg. Comert:", "woocommerce") .'<td>'.$billing_ser_id .'</td></tr>';如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id )$输出.= '<tr><th>'.__( "Banca:", "woocommerce") .'<td>'.$billing_bt_id .'</td></tr>';如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id )$输出.= '<tr><th>'.__( "IBAN:", "woocommerce") .'<td>'.$billing_ib_id .'</td></tr>';如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id )$输出.= '<tr><th>'.__( "鳕鱼财政:", "woocommerce" ) .'<td>'.$billing_cf_id .'</td></tr>';回声$输出;}//显示有关电子邮件通知的数据add_action('woocommerce_email_customer_details','ba_add_values_to_emails_notifications', 15, 4);功能 ba_add_values_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {$output = '
    ';$billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );$billing_bt_id = get_post_meta( $order->id, '_billing_bt_id', true );$billing_ib_id = get_post_meta( $order->id, '_billing_ib_id', true );$billing_cf_id = get_post_meta( $order->id, '_billing_cf_id', true );如果 ( !empty($billing_ser_id) )$output .='
  • '.__( "Nr. Reg. Comert:", "woocommerce") .'</strong><span class="text">'.$billing_ser_id .'</span></li>';如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id )$output .='
  • '.__( "Banca:", "woocommerce") .'</strong><span class="text">'.$billing_bt_id .'</span></li>';如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id )$output .='
  • '.__( "IBAN:", "woocommerce") .'</strong><span class="text">'.$billing_ib_id .'</span></li>';如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id )$output .='
  • '.__( "鳕鱼财政:", "woocommerce" ) .'</strong><span class="text">'.$billing_cf_id .'</span></li>';$output .= '</ul>';回声$输出;}

Javascript cfields.js 代码(外部文件):

//这个名为cfields.js"的文件位于您活动子主题或主题的子文件夹js"中jQuery(文档).ready(函数($){//通用序列号字段if(! $("#billing_ser_id_field").hasClass("validate-required") ){$("#billing_ser_id_field").addClass("validate-required");}//开始时要隐藏的 4 个字段(如果不是Persoana Juridica")if($("#billing_status option:selected").val() == "1"){$('#billing_company_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_company').val("no");});$('#billing_bt_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_bt_id').val("no");});$('#billing_ib_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ib_id').val("no");});$('#billing_cf_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_cf_id').val("no");});}//选择器的动作(显示/隐藏和添加/删除类)$("#billing_status").change(function(){//对于Persoana Juridica"if($("#billing_status option:selected").val() == "2"){$('#billing_company_field').show(function(){$(this).addClass("validate-required");$('#billing_company').val("");});$('#billing_bt_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_bt_id').val("");});$('#billing_ib_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_ib_id').val("");});$('#billing_cf_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_cf_id').val("");});}//对于Persona Fizica"else if($("#billing_status option:selected").val() == "1"){$('#billing_company_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_company').val("no");});$('#billing_bt_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_bt_id').val("no");});$('#billing_ib_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ib_id').val("no");});$('#billing_cf_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_cf_id').val("no");});}});});

<块引用>

我的问题是:
选择 Persoana Juridica 时,如何隐藏 First nameLast name 字段?

谢谢

解决方案

我做了一些改动:

  • ba_custom_checkout_billing_fields 钩子函数中轻松
  • 主要在 javascript 外部文件中...

这是您所有的 PHP 代码:

//注册外部 jQuery/JS 文件函数 cfields_scripts() {//重要的提示://对于子主题,将 get_template_directory_uri() 替换为 get_stylesheet_directory_uri()//外部 cfields.js 文件位于活动子主题或主题的子文件夹js"中.wp_enqueue_script('checkout_script', get_template_directory_uri().'/js/cfields.js', array('jquery'), '1.0', true );}add_action('wp_enqueue_scripts', 'cfields_scripts');add_filter('woocommerce_checkout_fields', 'ba_custom_checkout_billing_fields');功能 ba_custom_checkout_billing_fields( $fields ) {//1. 创建额外的自定义计费字段//状态"选择器$fields['billing']['billing_status']['type'] = 'select';$fields['billing']['billing_status']['class'] = array('form-row-wide, status-select');$fields['billing']['billing_status']['required'] = true;$fields['billing']['billing_status']['label'] = __('Statut Juridic', 'theme_domain');$fields['billing']['billing_status']['placeholder'] = __('Alege statutul', 'theme_domain');$fields['billing']['billing_status']['options'] = array('1' =>__( 'Persona Fizica', 'theme_domain' ),'2' =>__( 'Persoana Juridica', 'theme_domain' ));//Nr.registrul comertului"文本字段(这个字段很常见)$fields['billing']['billing_ser_id']['type'] = 'text';$fields['billing']['billing_ser_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_ser_id']['required'] = false;$fields['billing']['billing_ser_id']['label'] = __('Nr. Reg. Comert', 'theme_domain');$fields['billing']['billing_ser_id']['placeholder'] = __('Introdu numarul', 'theme_domain');//银行"文本字段$fields['billing']['billing_bt_id']['type'] = 'text';$fields['billing']['billing_bt_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_bt_id']['required'] = false;$fields['billing']['billing_bt_id']['label'] = __('Banca', 'theme_domain');$fields['billing']['billing_bt_id']['placeholder'] = __('Adauga Banca', 'theme_domain');//IBAN"文本字段$fields['billing']['billing_ib_id']['type'] = 'text';$fields['billing']['billing_ib_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_ib_id']['required'] = false;$fields['billing']['billing_ib_id']['label'] = __('IBAN', 'theme_domain');$fields['billing']['billing_ib_id']['placeholder'] = __('Adauga IBAN-ul', 'theme_domain');//CIF"文本字段$fields['billing']['billing_cf_id']['type'] = 'text';$fields['billing']['billing_cf_id']['class'] = array('form-row-wide', 'status-group2');$fields['billing']['billing_cf_id']['required'] = false;$fields['billing']['billing_cf_id']['label'] = __('Cod Fiscal', 'theme_domain');$fields['billing']['billing_cf_id']['placeholder'] = __('Adauga CIF-ul', 'theme_domain');//2. 更改一些现有的计费字段//名字和姓氏,禁用必需"$fields['billing']['billing_first_name']['required'] = false;$fields['billing']['billing_last_name']['required'] = false;//3. 对计费字段进行排序$fields_order = 数组('billing_first_name', 'billing_last_name', 'billing_email','billing_phone', 'billing_address_1', 'billing_address_2','billing_postcode', 'billing_city', 'billing_country','billing_status', 'billing_company', 'billing_ser_id','billing_bt_id', 'billing_ib_id', 'billing_cf_id');foreach($fields_order 作为 $field)$ordered_fields[$field] = $fields['billing'][$field];$fields['billing'] = $ordered_fields;//4. 返回 Checkout 自定义计费字段返回 $fields;}//处理结帐(检查必填字段是否不为空)add_action('woocommerce_checkout_process', 'ba_custom_checkout_field_process');功能 ba_custom_checkout_field_process() {如果(!$_POST['billing_ser_id'])wc_add_notice( __( '<strong>Nr. Reg. Comert</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_bt_id'])wc_add_notice( __( '<strong>Banca</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_ib_id'])wc_add_notice( __( '<strong>IBAN</strong> 是必填字段.', 'theme_domain' ), 'error' );如果(!$_POST['billing_cf_id'])wc_add_notice( __( '<strong>Cod Fiscal</strong> 是必填字段.', 'theme_domain' ), 'error' );}//使用自定义字段值向订单添加/更新元数据add_action('woocommerce_checkout_update_order_meta', 'ba_custom_checkout_field_update_order_meta');功能 ba_custom_checkout_field_update_order_meta( $order_id ) {$billing_company = $_POST['billing_company'];$billing_ser_id = $_POST['billing_ser_id'];$billing_bt_id = $_POST['billing_bt_id'];$billing_ib_id = $_POST['billing_ib_id'];$billing_cf_id = $_POST['billing_cf_id'];如果 ( !empty($billing_company) && 'no' == $billing_company )update_post_meta( $order_id, '_billing_company', '' );## 这里我们将'no' == $billing_ser_id 添加到条件中如果 ( !empty($billing_ser_id) && 'no' == $billing_ser_id )update_post_meta( $order_id, '_billing_ser_id', sanitize_text_field( $billing_ser_id) );如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id )update_post_meta( $order_id, '_billing_bt_id', sanitize_text_field( $billing_bt_id) );如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id )update_post_meta( $order_id, '_billing_ib_id', sanitize_text_field( $billing_ib_id) );如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id )update_post_meta( $order_id, '_billing_cf_id', sanitize_text_field( $billing_cf_id) );}//在订单编辑页面上显示自定义字段标题/值add_action('woocommerce_admin_order_data_after_billing_address', 'ba_custom_checkout_field_display_admin_order_meta', 10, 1);功能 ba_custom_checkout_field_display_admin_order_meta( $order ){$输出 = '';$billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );$billing_bt_id = get_post_meta( $order->id, '_billing_bt_id', true );$billing_ib_id = get_post_meta( $order->id, '_billing_ib_id', true );$billing_cf_id = get_post_meta( $order->id, '_billing_cf_id', true );如果(!空($billing_ser_id)){$output .='

'.__( 'Nr. Reg. Comert', 'theme_domain' ) .':' .$billing_ser_id .'</p>';}如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id ){$output .='

'.__( 'Banca', 'theme_domain') .':' .$billing_bt_id .'</p>';}如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id ){$output .='

'.__( 'IBAN', 'theme_domain') .':' .$billing_ib_id .'</p>';}如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id ){$output .='

'.__( '鳕鱼财政', 'theme_domain') .':' .$billing_cf_id .'</p>';}回声$输出;}//显示有关电子邮件通知的数据add_action('woocommerce_email_customer_details','ba_add_values_to_emails_notifications', 15, 4);功能 ba_add_values_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {$output = '

    ';$billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );$billing_bt_id = get_post_meta( $order->id, '_billing_bt_id', true );$billing_ib_id = get_post_meta( $order->id, '_billing_ib_id', true );$billing_cf_id = get_post_meta( $order->id, '_billing_cf_id', true );如果 ( !empty($billing_ser_id) )$output .='
  • '.__( "Nr. Reg. Comert:", "woocommerce") .'</strong><span class="text">'.$billing_ser_id .'</span></li>';如果 ( !empty($billing_bt_id) && 'no' != $billing_bt_id )$output .='
  • '.__( "Banca:", "woocommerce") .'</strong><span class="text">'.$billing_bt_id .'</span></li>';如果 ( !empty($billing_ib_id) && 'no' != $billing_ib_id )$output .='
  • '.__( "IBAN:", "woocommerce") .'</strong><span class="text">'.$billing_ib_id .'</span></li>';如果 ( !empty($billing_cf_id) && 'no' != $billing_cf_id )$output .='
  • '.__( "鳕鱼财政:", "woocommerce" ) .'</strong><span class="text">'.$billing_cf_id .'</span></li>';$output .= '</ul>';回声$输出;}

和外部文件cfields.js Javascript代码(更新):

//这个名为cfields.js"的文件位于您活动子主题或主题的子文件夹js"中jQuery(文档).ready(函数($){if($("#billing_status option:selected").val() == "1"){//开始时隐藏字段(不是Persoana Juridica"):$('#billing_company_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_company').val("no");});$('#billing_bt_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_bt_id').val("no");});$('#billing_ib_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ib_id').val("no");});$('#billing_cf_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_cf_id').val("no");});//开始时显示字段(不是Persoana Juridica")://序列号字段$('#billing_ser_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_ser_id').val("");});//在开始时设置所需的字段(不是Persoana Juridica")://名字字段$('#billing_first_name_field').children('label').append(' <abbr class="required" title="required">*</abbr>' );$('#billing_first_name_field').addClass("validate-required");//姓氏字段$('#billing_last_name_field').children('label').append(' <abbr class="required" title="required">*</abbr>' );$('#billing_last_name_field').addClass("validate-required");} 别的 {//隐藏序列号字段$('#billing_ser_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ser_id').val("no");});//隐藏名字字段$('#billing_first_name_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");});//隐藏姓氏字段$('#billing_last_name_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");});}//选择器的动作(显示/隐藏和添加/删除类)$("#billing_status").change(function(){//对于Persoana Juridica"if($("#billing_status option:selected").val() == "2"){//显示字段:$('#billing_company_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_company').val("");});$('#billing_bt_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_bt_id').val("");});$('#billing_ib_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_ib_id').val("");});$('#billing_cf_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_cf_id').val("");});//隐藏字段://隐藏序列号字段$('#billing_ser_id_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ser_id').val("no");});//隐藏名字字段$('#billing_first_name_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_first_name').val("no");});//隐藏姓氏字段$('#billing_last_name_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_last_name').val("no");});}//对于Persona Fizica"else if($("#billing_status option:selected").val() == "1"){//隐藏字段:$('#billing_company_field').hide(function(){$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_company').val("no");});$('#billing_bt_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_bt_id').val("no");});$('#billing_ib_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_ib_id').val("no");});$('#billing_cf_id_field').hide(function(){$(this).children("abbr.required").remove();$(this).removeClass("validate-required");$(this).removeClass("woocommerce-validated");$('#billing_cf_id').val("no");});//显示字段://序列号字段$('#billing_ser_id_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_ser_id').val("");});//显示名字字段$('#billing_first_name_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_first_name').val("");});//显示姓氏字段$('#billing_last_name_field').show(function(){$(this).children('label').append(' <abbr class="required" title="required">*</abbr>' );$(this).addClass("validate-required");$('#billing_last_name').val("");});}});});

Based on this working answer:

 // Registering external jQuery/JS file
function cfields_scripts() {

    // IMPORTANT NOTE:
    // For a child theme replace get_template_directory_uri() by get_stylesheet_directory_uri()
    // The external cfields.js file goes in a subfolder "js" of your active child theme or theme.
    wp_enqueue_script( 'checkout_script', get_template_directory_uri().'/js/cfields.js', array('jquery'), '1.0', true );

}
add_action( 'wp_enqueue_scripts', 'cfields_scripts' );


add_filter( 'woocommerce_checkout_fields', 'ba_custom_checkout_billing_fields' );
function ba_custom_checkout_billing_fields( $fields ) {

    // 1. Creating the additional custom billing fields

    // The "status" selector
    $fields['billing']['billing_status']['type'] = 'select';
    $fields['billing']['billing_status']['class'] = array('form-row-wide, status-select');
    $fields['billing']['billing_status']['required'] = true;
    $fields['billing']['billing_status']['label'] = __('Statut Juridic', 'theme_domain');
    $fields['billing']['billing_status']['placeholder'] = __('Alege statutul', 'theme_domain');
    $fields['billing']['billing_status']['options'] = array(
        '1' => __( 'Persoana Fizica', 'theme_domain' ),
        '2' => __( 'Persoana Juridica', 'theme_domain' )
    );

    // The "Nr. registrul comertului" text field (this field is common)
    $fields['billing']['billing_ser_id']['type'] = 'text';
    $fields['billing']['billing_ser_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_ser_id']['required'] = true; // <== HERE has to be "true" as it always be shown and need validation
    $fields['billing']['billing_ser_id']['label'] = __('Nr. Reg. Comert', 'theme_domain');
    $fields['billing']['billing_ser_id']['placeholder'] = __('Introdu numarul', 'theme_domain');

    // The "Banca" text field
    $fields['billing']['billing_bt_id']['type'] = 'text';
    $fields['billing']['billing_bt_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_bt_id']['required'] = false;
    $fields['billing']['billing_bt_id']['label'] = __('Banca', 'theme_domain');
    $fields['billing']['billing_bt_id']['placeholder'] = __('Adauga Banca', 'theme_domain');

    // The "IBAN" text field
    $fields['billing']['billing_ib_id']['type'] = 'text';
    $fields['billing']['billing_ib_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_ib_id']['required'] = false;
    $fields['billing']['billing_ib_id']['label'] = __('IBAN', 'theme_domain');
    $fields['billing']['billing_ib_id']['placeholder'] = __('Adauga IBAN-ul', 'theme_domain');

    // The "CIF" text field
    $fields['billing']['billing_cf_id']['type'] = 'text';
    $fields['billing']['billing_cf_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_cf_id']['required'] = false;
    $fields['billing']['billing_cf_id']['label'] = __('Cod Fiscal', 'theme_domain');
    $fields['billing']['billing_cf_id']['placeholder'] = __('Adauga CIF-ul', 'theme_domain');


    // 2. Ordering the billing fields

    $fields_order = array(
        'billing_first_name', 'billing_last_name', 'billing_email',
        'billing_phone',      'billing_address_1', 'billing_address_2',
        'billing_postcode',   'billing_city',      'billing_country',
        'billing_status',     'billing_company',   'billing_ser_id',
        'billing_bt_id',      'billing_ib_id',     'billing_cf_id'
    );

    foreach($fields_order as $field)
        $ordered_fields[$field] = $fields['billing'][$field];

    $fields['billing'] = $ordered_fields;


    // 4. Returning Checkout customized billing fields
    return $fields;

}


// Process the checkout (Checking if required fields are not empty)
add_action('woocommerce_checkout_process', 'ba_custom_checkout_field_process');
function ba_custom_checkout_field_process() {

    if ( ! $_POST['billing_ser_id'] )
        wc_add_notice( __( '<strong>Nr. Reg. Comert</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_bt_id'] )
        wc_add_notice( __( '<strong>Banca</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_ib_id'] )
        wc_add_notice( __( '<strong>IBAN</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_cf_id'] )
        wc_add_notice( __( '<strong>Cod Fiscal</strong> is a required field.', 'theme_domain' ), 'error' );
}


// Adding/Updating meta data to the order with the custom-fields values
add_action( 'woocommerce_checkout_update_order_meta', 'ba_custom_checkout_field_update_order_meta' );
function ba_custom_checkout_field_update_order_meta( $order_id ) {

    $billing_company = $_POST['billing_company'];
    $billing_ser_id  = $_POST['billing_ser_id'];
    $billing_bt_id   = $_POST['billing_bt_id'];
    $billing_ib_id   = $_POST['billing_ib_id'];
    $billing_cf_id   = $_POST['billing_cf_id'];

    // For Individual resetting billing company to "" (no value) instead of 'no'
    if ( !empty($billing_company) && 'no' == $billing_company )
        update_post_meta( $order_id, '_billing_company', '' );

    if ( !empty($billing_ser_id) )
        update_post_meta( $order_id, '_billing_ser_id', sanitize_text_field( $billing_ser_id ) );

    // Adding/updating data only for companies
    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id )
        update_post_meta( $order_id, '_billing_bt_id', sanitize_text_field( $billing_bt_id ) );

    // Adding/updating data only for companies
    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id )
        update_post_meta( $order_id, '_billing_ib_id', sanitize_text_field( $billing_ib_id ) );

    // Adding/updating data only for companies
    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id )
        update_post_meta( $order_id, '_billing_cf_id', sanitize_text_field( $billing_cf_id ) );
}


// Display custom-field Title/values on the order edit page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'ba_custom_checkout_field_display_admin_order_meta', 10, 1 );
function ba_custom_checkout_field_display_admin_order_meta( $order ){

    $output = '';
    $billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );
    $billing_bt_id  = get_post_meta( $order->id, '_billing_bt_id',  true );
    $billing_ib_id  = get_post_meta( $order->id, '_billing_ib_id',  true );
    $billing_cf_id  = get_post_meta( $order->id, '_billing_cf_id',  true );

    if ( !empty($billing_ser_id) ){
        $output .= '<p><strong>' . __( 'Nr. Reg. Comert', 'theme_domain' ) . ':</strong> ' . $billing_ser_id . '</p>';
    }

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id ){
        $output .= '<p><strong>' . __( 'Banca', 'theme_domain' ) . ':</strong> ' . $billing_bt_id . '</p>';
    }

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id ){
        $output .= '<p><strong>' . __( 'IBAN', 'theme_domain' ) . ':</strong> ' . $billing_ib_id . '</p>';
    }

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id ){
        $output .= '<p><strong>' . __( 'Cod Fiscal', 'theme_domain' ) . ':</strong> ' . $billing_cf_id . '</p>';
    }

    echo $output;
}

To display the data on the customer order view, on Thankyou page, My account order view and on email notifications, add this 2 code snippets in myfunction.php file:

// Displaying data on order view in "customer details" zone
add_action('woocommerce_order_details_after_customer_details','ba_add_values_to_order_item_meta', 10, 1 );
function ba_add_values_to_order_item_meta( $order ) {

    $output = '';
    $billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );
    $billing_bt_id  = get_post_meta( $order->id, '_billing_bt_id',  true );
    $billing_ib_id  = get_post_meta( $order->id, '_billing_ib_id',  true );
    $billing_cf_id  = get_post_meta( $order->id, '_billing_cf_id',  true );

    if ( !empty($billing_ser_id) )
        $output .= '
        <tr>
            <th>' . __( "Nr. Reg. Comert:", "woocommerce" ) . '</th>
            <td>' . $billing_ser_id . '</td>
        </tr>';

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id )
        $output .= '
        <tr>
            <th>' . __( "Banca:", "woocommerce" ) . '</th>
            <td>' . $billing_bt_id . '</td>
        </tr>';

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id )
        $output .= '
        <tr>
            <th>' . __( "IBAN:", "woocommerce" ) . '</th>
            <td>' . $billing_ib_id . '</td>
        </tr>';

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id )
        $output .= '
        <tr>
            <th>' . __( "Cod Fiscal:", "woocommerce" ) . '</th>
            <td>' . $billing_cf_id . '</td>
        </tr>';

    echo $output;
}


// Displaying data on email notifications
add_action('woocommerce_email_customer_details','ba_add_values_to_emails_notifications', 15, 4 );
function ba_add_values_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {

    $output = '<ul>';
    $billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );
    $billing_bt_id  = get_post_meta( $order->id, '_billing_bt_id',  true );
    $billing_ib_id  = get_post_meta( $order->id, '_billing_ib_id',  true );
    $billing_cf_id  = get_post_meta( $order->id, '_billing_cf_id',  true );

    if ( !empty($billing_ser_id) )
        $output .= '<li><strong>' . __( "Nr. Reg. Comert:", "woocommerce" ) . '</strong> <span class="text">' . $billing_ser_id . '</span></li>';

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id )
        $output .= '<li><strong>' . __( "Banca:", "woocommerce" ) . '</strong> <span class="text">' . $billing_bt_id . '</span></li>';

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id )
        $output .= '<li><strong>' . __( "IBAN:", "woocommerce" ) . '</strong> <span class="text">' . $billing_ib_id . '</span></li>';

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id )
        $output .= '<li><strong>' . __( "Cod Fiscal:", "woocommerce" ) . '</strong> <span class="text">' . $billing_cf_id . '</span></li>';
        $output .= '</ul>';

    echo $output;
}

Javascript cfields.js code (external file):

// This file named "cfields.js" goes in a subfolder "js" of your active child theme or theme

jQuery(document).ready(function($){

    // Common Serial ID field
    if(! $("#billing_ser_id_field").hasClass("validate-required") ){
        $("#billing_ser_id_field").addClass("validate-required");
    }


    // The 4 Fields to hide at start (if not "Persoana Juridica")
    if($("#billing_status option:selected").val() == "1"){
        $('#billing_company_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_company').val("no");
        });
        $('#billing_bt_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_bt_id').val("no");
        });
        $('#billing_ib_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_ib_id').val("no");
        });
        $('#billing_cf_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_cf_id').val("no");
        });
     }

    // Action with the selector (Showing/hiding and adding/removing classes)
    $("#billing_status").change(function(){
        // For "Persoana Juridica"
        if($("#billing_status option:selected").val() == "2")
        {
            $('#billing_company_field').show(function(){
                $(this).addClass("validate-required");
                $('#billing_company').val("");
            });
            $('#billing_bt_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_bt_id').val("");
            });
            $('#billing_ib_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_ib_id').val("");
            });
            $('#billing_cf_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_cf_id').val("");
            });
        }
        // For "Persoana Fizica"
        else if($("#billing_status option:selected").val() == "1")
        {
            $('#billing_company_field').hide(function(){
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_company').val("no");
            });
            $('#billing_bt_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_bt_id').val("no");
            });
            $('#billing_ib_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_ib_id').val("no");
            });
            $('#billing_cf_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_cf_id').val("no");
            });
        }

    });

});

My question is:
How can I Hide First name and Last name fields when Persoana Juridica is selected?

Thanks

解决方案

I have make some changes:

  • Lightly in ba_custom_checkout_billing_fields hooked function
  • Mostly in the javascript external file…

So Here is all your PHP code:

// Registering external jQuery/JS file
function cfields_scripts() {

    // IMPORTANT NOTE:
    // For a child theme replace get_template_directory_uri() by get_stylesheet_directory_uri()
    // The external cfields.js file goes in a subfolder "js" of your active child theme or theme.
    wp_enqueue_script( 'checkout_script', get_template_directory_uri().'/js/cfields.js', array('jquery'), '1.0', true );

}
add_action( 'wp_enqueue_scripts', 'cfields_scripts' );


add_filter( 'woocommerce_checkout_fields', 'ba_custom_checkout_billing_fields' );
function ba_custom_checkout_billing_fields( $fields ) {

    // 1. Creating the additional custom billing fields

    // The "status" selector
    $fields['billing']['billing_status']['type'] = 'select';
    $fields['billing']['billing_status']['class'] = array('form-row-wide, status-select');
    $fields['billing']['billing_status']['required'] = true;
    $fields['billing']['billing_status']['label'] = __('Statut Juridic', 'theme_domain');
    $fields['billing']['billing_status']['placeholder'] = __('Alege statutul', 'theme_domain');
    $fields['billing']['billing_status']['options'] = array(
        '1' => __( 'Persoana Fizica', 'theme_domain' ),
        '2' => __( 'Persoana Juridica', 'theme_domain' )
    );

    // The "Nr. registrul comertului" text field (this field is common)
    $fields['billing']['billing_ser_id']['type'] = 'text';
    $fields['billing']['billing_ser_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_ser_id']['required'] = false;
    $fields['billing']['billing_ser_id']['label'] = __('Nr. Reg. Comert', 'theme_domain');
    $fields['billing']['billing_ser_id']['placeholder'] = __('Introdu numarul', 'theme_domain');

    // The "Banca" text field
    $fields['billing']['billing_bt_id']['type'] = 'text';
    $fields['billing']['billing_bt_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_bt_id']['required'] = false;
    $fields['billing']['billing_bt_id']['label'] = __('Banca', 'theme_domain');
    $fields['billing']['billing_bt_id']['placeholder'] = __('Adauga Banca', 'theme_domain');

    // The "IBAN" text field
    $fields['billing']['billing_ib_id']['type'] = 'text';
    $fields['billing']['billing_ib_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_ib_id']['required'] = false;
    $fields['billing']['billing_ib_id']['label'] = __('IBAN', 'theme_domain');
    $fields['billing']['billing_ib_id']['placeholder'] = __('Adauga IBAN-ul', 'theme_domain');

    // The "CIF" text field
    $fields['billing']['billing_cf_id']['type'] = 'text';
    $fields['billing']['billing_cf_id']['class'] = array('form-row-wide', 'status-group2');
    $fields['billing']['billing_cf_id']['required'] = false;
    $fields['billing']['billing_cf_id']['label'] = __('Cod Fiscal', 'theme_domain');
    $fields['billing']['billing_cf_id']['placeholder'] = __('Adauga CIF-ul', 'theme_domain');


    // 2. Changing some existing billing fields

    // First name and Last name, disabling 'required'
    $fields['billing']['billing_first_name']['required'] = false;
    $fields['billing']['billing_last_name']['required'] = false;


    // 3. Ordering the billing fields

    $fields_order = array(
        'billing_first_name', 'billing_last_name', 'billing_email',
        'billing_phone',      'billing_address_1', 'billing_address_2',
        'billing_postcode',   'billing_city',      'billing_country',
        'billing_status',     'billing_company',   'billing_ser_id',
        'billing_bt_id',      'billing_ib_id',     'billing_cf_id'
    );

    foreach($fields_order as $field)
        $ordered_fields[$field] = $fields['billing'][$field];

    $fields['billing'] = $ordered_fields;


    // 4. Returning Checkout customized billing fields
    return $fields;

}


// Process the checkout (Checking if required fields are not empty)
add_action('woocommerce_checkout_process', 'ba_custom_checkout_field_process');
function ba_custom_checkout_field_process() {

    if ( ! $_POST['billing_ser_id'] )
        wc_add_notice( __( '<strong>Nr. Reg. Comert</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_bt_id'] )
        wc_add_notice( __( '<strong>Banca</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_ib_id'] )
        wc_add_notice( __( '<strong>IBAN</strong> is a required field.', 'theme_domain' ), 'error' );

    if ( ! $_POST['billing_cf_id'] )
        wc_add_notice( __( '<strong>Cod Fiscal</strong> is a required field.', 'theme_domain' ), 'error' );
}


// Adding/Updating meta data to the order with the custom-fields values
add_action( 'woocommerce_checkout_update_order_meta', 'ba_custom_checkout_field_update_order_meta' );
function ba_custom_checkout_field_update_order_meta( $order_id ) {

    $billing_company = $_POST['billing_company'];
    $billing_ser_id  = $_POST['billing_ser_id'];
    $billing_bt_id   = $_POST['billing_bt_id'];
    $billing_ib_id   = $_POST['billing_ib_id'];
    $billing_cf_id   = $_POST['billing_cf_id'];

    if ( !empty($billing_company) && 'no' == $billing_company )
        update_post_meta( $order_id, '_billing_company', '' );

    ## Here we add 'no' == $billing_ser_id to the condition
    if ( !empty($billing_ser_id) && 'no' == $billing_ser_id )
        update_post_meta( $order_id, '_billing_ser_id', sanitize_text_field( $billing_ser_id ) );

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id )
        update_post_meta( $order_id, '_billing_bt_id', sanitize_text_field( $billing_bt_id ) );

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id )
        update_post_meta( $order_id, '_billing_ib_id', sanitize_text_field( $billing_ib_id ) );

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id )
        update_post_meta( $order_id, '_billing_cf_id', sanitize_text_field( $billing_cf_id ) );
}


// Display custom-field Title/values on the order edit page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'ba_custom_checkout_field_display_admin_order_meta', 10, 1 );
function ba_custom_checkout_field_display_admin_order_meta( $order ){

    $output = '';
    $billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );
    $billing_bt_id  = get_post_meta( $order->id, '_billing_bt_id',  true );
    $billing_ib_id  = get_post_meta( $order->id, '_billing_ib_id',  true );
    $billing_cf_id  = get_post_meta( $order->id, '_billing_cf_id',  true );

    if ( !empty($billing_ser_id) ){
        $output .= '<p><strong>' . __( 'Nr. Reg. Comert', 'theme_domain' ) . ':</strong> ' . $billing_ser_id . '</p>';
    }

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id ){
        $output .= '<p><strong>' . __( 'Banca', 'theme_domain' ) . ':</strong> ' . $billing_bt_id . '</p>';
    }

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id ){
        $output .= '<p><strong>' . __( 'IBAN', 'theme_domain' ) . ':</strong> ' . $billing_ib_id . '</p>';
    }

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id ){
        $output .= '<p><strong>' . __( 'Cod Fiscal', 'theme_domain' ) . ':</strong> ' . $billing_cf_id . '</p>';
    }

    echo $output;
}


// Displaying data on email notifications
add_action('woocommerce_email_customer_details','ba_add_values_to_emails_notifications', 15, 4 );
function ba_add_values_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {

    $output = '<ul>';
    $billing_ser_id = get_post_meta( $order->id, '_billing_ser_id', true );
    $billing_bt_id  = get_post_meta( $order->id, '_billing_bt_id',  true );
    $billing_ib_id  = get_post_meta( $order->id, '_billing_ib_id',  true );
    $billing_cf_id  = get_post_meta( $order->id, '_billing_cf_id',  true );

    if ( !empty($billing_ser_id) )
        $output .= '<li><strong>' . __( "Nr. Reg. Comert:", "woocommerce" ) . '</strong> <span class="text">' . $billing_ser_id . '</span></li>';

    if ( !empty($billing_bt_id) && 'no' != $billing_bt_id )
        $output .= '<li><strong>' . __( "Banca:", "woocommerce" ) . '</strong> <span class="text">' . $billing_bt_id . '</span></li>';

    if ( !empty($billing_ib_id) && 'no' != $billing_ib_id )
        $output .= '<li><strong>' . __( "IBAN:", "woocommerce" ) . '</strong> <span class="text">' . $billing_ib_id . '</span></li>';

    if ( !empty($billing_cf_id) && 'no' != $billing_cf_id )
        $output .= '<li><strong>' . __( "Cod Fiscal:", "woocommerce" ) . '</strong> <span class="text">' . $billing_cf_id . '</span></li>';
        $output .= '</ul>';

    echo $output;
}

And the external file cfields.js Javascript code (Updated):

// This file named "cfields.js" goes in a subfolder "js" of your active child theme or theme

jQuery(document).ready(function($){


    if($("#billing_status option:selected").val() == "1"){

        // HIDING FIELDS AT START (NOT "Persoana Juridica"):

        $('#billing_company_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_company').val("no");
        });
        $('#billing_bt_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_bt_id').val("no");
        });
        $('#billing_ib_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_ib_id').val("no");
        });
        $('#billing_cf_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_cf_id').val("no");
        });

        // SHOWING FIELDS AT START (NOT "Persoana Juridica"):

        // Serial ID field
        $('#billing_ser_id_field').show(function(){
            $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
            $(this).addClass("validate-required");
            $('#billing_ser_id').val("");
        });

        // SETTING REQUIRED FIELDS AT START (NOT "Persoana Juridica"):

        // First name field
        $('#billing_first_name_field').children('label').append( ' <abbr class="required" title="required">*</abbr>' );
        $('#billing_first_name_field').addClass("validate-required");

        // Last name field
        $('#billing_last_name_field').children('label').append( ' <abbr class="required" title="required">*</abbr>' );
        $('#billing_last_name_field').addClass("validate-required");

    } else {

        // Hide Serial ID field
        $('#billing_ser_id_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
            $('#billing_ser_id').val("no");
        });
        // Hide First Name field
        $('#billing_first_name_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
        });
        // Hide Last Name field
        $('#billing_last_name_field').hide(function(){
            $(this).removeClass("validate-required");
            $(this).removeClass("woocommerce-validated");
        });

    }

    // Action with the selector (Showing/hiding and adding/removing classes)
    $("#billing_status").change(function(){
        // For "Persoana Juridica"
        if($("#billing_status option:selected").val() == "2")
        {
            // SHOWING FIELDS:

            $('#billing_company_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_company').val("");
            });
            $('#billing_bt_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_bt_id').val("");
            });
            $('#billing_ib_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_ib_id').val("");
            });
            $('#billing_cf_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_cf_id').val("");
            });

            // HIDING FIELDS:

            // Hide Serial ID field
            $('#billing_ser_id_field').hide(function(){
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_ser_id').val("no");
            });
            // Hide First Name field
            $('#billing_first_name_field').hide(function(){
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_first_name').val("no");
            });
            // Hide Last Name field
            $('#billing_last_name_field').hide(function(){
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_last_name').val("no");
            });
        }
        // For "Persoana Fizica"
        else if($("#billing_status option:selected").val() == "1")
        {
            // HIDING FIELDS:

            $('#billing_company_field').hide(function(){
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_company').val("no");
            });
            $('#billing_bt_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_bt_id').val("no");
            });
            $('#billing_ib_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_ib_id').val("no");
            });
            $('#billing_cf_id_field').hide(function(){
                $(this).children("abbr.required").remove();
                $(this).removeClass("validate-required");
                $(this).removeClass("woocommerce-validated");
                $('#billing_cf_id').val("no");
            });

            // SHOWING FIELDS:

            // Serial ID field
            $('#billing_ser_id_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_ser_id').val("");
            });
            // Showing First Name field
            $('#billing_first_name_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_first_name').val("");
            });
            // Showing Last name field
            $('#billing_last_name_field').show(function(){
                $(this).children('label').append( ' <abbr class="required" title="required">*</abbr>' );
                $(this).addClass("validate-required");
                $('#billing_last_name').val("");
            });
        }

    });

});

这篇关于结帐字段:隐藏和显示现有字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)