duanfen9090 2017-10-13 10:13 采纳率: 100%
浏览 83
已采纳

在woocommerce中添加带有默认值的自定义隐藏结帐字段

How to add custom field in checkout Woocommerce with hidden type and default value?

please check below my code:

function pord_checkout_fields( $fields ) {
    $fields['billing']['quickbook'] = array(
        'type' => 'hidden',
        'label'     => __('Purchase Order Number', 'woocommerce'),
        'placeholder'  => _x('Purchase Order Number', 'placeholder', 'woocommerce'),
        'required'  => false,
        'class'     => array('form-row-wide'),
        'clear'     => true
     );

    return $fields;
}
add_filter('woocommerce_checkout_fields','pord_checkout_fields');
  • 写回答

2条回答 默认 最新

  • duandingqi9442 2017-10-13 11:45
    关注

    Hidden type doesn't exist buy default for woocommerce form fields… But you can create it.

    • The first function will create that hidden field type.
    • The 2nd function will add this hidden custom field (where you will set the value)
    • The third function will display this value in order edit page

    Here is the code:

    // Create hidden checkout field type
    add_filter( 'woocommerce_form_field_hidden', 'create_checkout_hidden_field_type', 5, 4 );
    function create_checkout_hidden_field_type( $field, $key, $args, $value ){
        return '<input type="hidden" name="'.esc_attr($key).'" id="'.esc_attr($args['id']).'" value="'.esc_attr($args['default']).'" />';
    }
    
    // Add custom hidden billing checkout field
    add_filter( 'woocommerce_checkout_fields', 'custom_billing_fields' );
    function custom_billing_fields( $fields ){
    
        ## HERE set the value (for this hidden checkout field)
        $value = "The value";
    
        $fields['billing']['billing_quickbook'] = array(
            'type' => 'hidden',
            'label'     => __('Purchase Order Number', 'woocommerce'),
            'placeholder'  => _x('Purchase Order Number', 'placeholder', 'woocommerce'),
            'required'  => false,
            'class'     => array('form-row-wide'),
            'clear'     => true,
            'default'   => $value, // The custom field value
        );
        return $fields;
    }
    
    // Display the field value on the admin order edit page (after billing address)
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_in_admin_order_meta', 10, 1 );
    function display_custom_field_in_admin_order_meta($order){
        echo '<p><strong>'.__('Quickbook').':</strong> ' . get_post_meta( $order->get_id(), '_billing_quickbook', true ) . '</p>';
    }
    

    The Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    USAGE (RETRIEVING THE VALUE):

    To get the value from the Order ID $order_id, you will use (if needed):

    $value = get_post_meta( $order_id, '_billing_quickbook', true );
    

    This code is tested and works in WooCommerce 3+.


    Official developer documentation: Customizing checkout fields using actions and filters

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP