Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示或隐藏其他签出自定义字段的自定义下拉选择器_Php_Jquery_Wordpress_Woocommerce_Checkout - Fatal编程技术网

Php 显示或隐藏其他签出自定义字段的自定义下拉选择器

Php 显示或隐藏其他签出自定义字段的自定义下拉选择器,php,jquery,wordpress,woocommerce,checkout,Php,Jquery,Wordpress,Woocommerce,Checkout,我使用此代码创建自定义签出字段和重新排序字段: add_filter('woocommerce_checkout_fields'、'custom_checkout_billing_fields'); 功能自定义\结账\账单\字段($fields){ //1.创建其他自定义帐单字段 //“状态”选择器 $fields['billing']['billing_status']['type']='select'; $fields['billing']['billing_status']['class'

我使用此代码创建自定义签出字段和重新排序字段:

add_filter('woocommerce_checkout_fields'、'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']=['User status'、'my_theme_slug');
$fields['billing']['billing\u status']['placeholder']=\uuuuuu('selected an option','my\u theme\u slug');
$fields['billing']['billing_status']['options']=array(
''=>'选择了一个选项',
“1”=>“法人实体”,
“2”=>“个人”
);
//“序列ID”文本字段
$fields['billing']['billing_number_id']['type']='text';
$fields['billing']['billing_number_id']['class']=array('form-row-wide','status-group1');
$fields['billing']['billing\u number\u id']['required']=true;
$fields['billing']['billing\u number\u id']['label']=\u('Serial id','my\u theme\u slug');
$fields['billing']['billing\u number\u id']['placeholder']=\uuuuu('输入您的序列号','我的主题');
//自定义“账单公司”字段[“必需”]
$fields['billing']['billing_company']['required']=false;
//“序列ID”文本字段
$fields['billing']['billing_serial']['type']='text';
$fields['billing']['billing_serial']['class']=array('form-row-wide','status-group1');
$fields['billing']['billing_serial']['required']=false;
$fields['billing']['billing_serial']['label']=['serial ID','my_theme_slug');
$fields['billing']['billing\u serial']['placeholder']=\uuuuuu('输入您的序列号','my\u theme\u slug');
//2.自定义“计费电子邮件”和“计费电话”字段['class']
$fields['billing']['billing_email']['class']=array('form-row-first','status-group1');
$fields['billing']['billing_phone']['class']=array('form-row-last','status-group1');
//3.对账单字段进行排序
$fields\u顺序=数组(
“账单名”、“账单姓”、“账单电子邮件”,
‘账单电话’、‘账单地址1’、‘账单地址2’,
'账单邮政编码','账单城市','账单国家',
“账单状态”,
“账单公司”、“账单编号”、“账单序列号”
);
foreach($fields\u order as$field)$ordered\u fields[$field]=$fields['billing'][$field];
$fields['billing']=$ordered\u字段;
//返回结帐自定义帐单字段
返回$fields;
}
条件机制:

  • 默认情况下,
    下拉选择器将打开
    单个
    选项值,并将仅显示计费序列自定义字段
  • billing\u status
    下拉选择器切换到
    “Company”
    **选项值时,将显示另外两个字段:
    • 计费公司
      现有字段(在
      计费序列之前
    • 账单编号\u id
      自定义字段(在末尾)
  • 我怎样才能做到这一点

    谢谢



    参考资料:

    适用于WooCommerce 3+(更新):

    由于WooCommerce 3.0签出字段发生了一些变化,因此无法像以前那样对字段重新排序

    有一个新的'priority'参数,用于处理字段顺序,也用于结帐字段和我的帐户字段

    下面我只是更新与订购字段相关的部分:

    ## 3. Ordering the billing fields
    
    // Set the order of the fields
    $billing_fields_new_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_number_id',  'billing_ser_id'
    );
    
    $count = 0;
    $priority = 10;
    
    // Updating the 'priority' argument
    foreach($billing_fields_new_order as $field_name){
        $count++;
        $fields['billing'][$field_name]['priority'] = $count * $priority;
    }
    
    // END: returning the customized checkout fields
    return $fields;
    
    参考资料:


    原始答案:

    下面是一个带有jQuery/JS脚本的解决方案,可以使条件机制如您所期望的那样工作……php代码通过一些必要的函数完成

    PHP代码(进入function.PHP):

    //注册外部jQuery/JS文件
    函数cfields_scripts(){
    /*重要提示:对于子主题,请将get_template_directory_uri()替换为get_样式表_directory_uri()
    外部cfields.js文件位于活动子主题或主题的子文件夹“js”中*/
    wp_enqueue_script('checkout_script',get_template_directory_uri()。/js/cfields.js',array('jquery'),'1.0',true);
    }
    添加动作('wp_排队_脚本','cfields_脚本');
    添加_过滤器('woocommerce_checkout_fields'、'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']=['User status'、'my_theme_slug');
    $fields['billing']['billing\u status']['placeholder']=\uuuuuu('selected an option','my\u theme\u slug');
    $fields['billing']['billing_status']['options']=array(
    “1”=>u uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
    “2”=>(公司,”)
    );
    //自定义“账单公司”字段[“必需”]
    $fields['billing']['billing_company']['required']=false;
    $fields['billing']['billing_company']['class']=array('form-row-wide','status-group2');
    //“编号ID”文本字段
    $fields['billing']['billing_number_id']['type']='text';
    $fields['billing']['billing_number_id']['class']=array('form-row-wide');
    $fields['billing']['billing\u number\u id']['required']=true;
    $fields['billing']['billing\u number\u id']['label']=\uuu('number id','my\u theme\u slug');
    $fields['bil]