Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /* Add a new checkout field
- *
- * These is our base field group, later on, depending on product quanitiy, $key = 'passenger_title_1' for example
- *
- */
- function supreme_filter_checkout_fields($fields){
- $fields['extra_fields'] = array(
- 'passenger_title' => array(
- 'type' => 'select',
- 'options' => array( 'mr' => __( 'Mr' ), 'mrs' => __( 'Mrs' ), 'miss' => __( 'Miss' ) ),
- 'required' => false,
- 'label' => __( 'Title' )
- ),
- 'passenger_first_name' => array(
- 'type' => 'text',
- 'required' => false,
- 'label' => __( 'First Name' )
- ),
- 'passenger_middle_name' => array(
- 'type' => 'text',
- 'required' => false,
- 'label' => __( 'Middle Name' )
- ),
- 'passenger_last_name' => array(
- 'type' => 'text',
- 'required' => false,
- 'label' => __( 'Last Name' )
- ),
- 'passenger_date_of_birth' => array(
- 'type' => 'text',
- 'class' => array('date-of-birth form-row-wide'),
- 'required' => false,
- 'label' => __('Date of Birth'),
- 'placeholder' => __('Select Date'),
- 'options' => array('' => __('Date of Birth', 'woocommerce' ))
- ),
- 'passenger_dietry_required' => array(
- 'type' => 'select',
- 'class' => array('dietry-required form-row-wide'),
- 'options' => array( '' => __( 'Please Select' ), 'y' => __( 'Yes' ), 'n' => __( 'No' ) ),
- 'required' => false,
- 'label' => __( 'Dietry Requirements?' )
- ),
- 'passenger_dietry_preference' => array(
- 'type' => 'select',
- 'class' => array('dietry-requirements form-row-wide'),
- 'options' => array( 'v' => __( 'Vegetarian' ), 'GF' => __( 'Gluten Free' ) ),
- 'required' => false,
- 'label' => __( 'Meal Preferences' )
- )
- );
- return $fields;
- }
- add_filter( 'woocommerce_checkout_fields', 'supreme_filter_checkout_fields' );
- // display the extra field on the checkout form
- function supreme_extra_checkout_fields(){
- $checkout = WC()->checkout();
- $op_cart_count = WC()->cart->get_cart_contents_count();
- $new_fields_array = array();
- for ( $i = 1; $i <= $op_cart_count; $i++) {
- $op_prepend = '_' . $i;
- foreach ( $checkout->checkout_fields['extra_fields'] as $key => $field ) :
- woocommerce_form_field( $key . $op_prepend, $field, $checkout->get_value( $key . $op_prepend ) );
- /* Why? we've modified the initial extra_fields to have a number appended
- * I'd need to access this new array, containing all of our new fields later on */
- array_push($new_fields_array, $key . $op_prepend);
- endforeach;
- }
- return $new_fields_array;
- }
- add_action( 'woocommerce_after_order_notes' ,'supreme_extra_checkout_fields' );
- // get our new array of field names
- function new_field_array_names(){
- $new_fields_array[] = '';
- $checkout = WC()->checkout();
- $op_cart_count = WC()->cart->get_cart_contents_count();
- echo $op_cart_count . ' Products in cart';
- for ( $i = 1; $i <= $op_cart_count; $i++) {
- $op_prepend = '_' . $i;
- foreach ( $checkout->checkout_fields['extra_fields'] as $key => $field ) :
- array_push($new_fields_array, $key . $op_prepend);
- endforeach;
- }
- return $new_fields_array;
- }
- add_action( 'woocommerce_checkout_update_order_meta', 'supreme_custom_checkout_field_update_order_meta' );
- function supreme_custom_checkout_field_update_order_meta( $order_id ) {
- $new_fields_array = new_field_array_names();
- $checkout = WC()->checkout();
- $op_cart_count = WC()->cart->get_cart_contents_count();
- $i = 1;
- if ( $i <= $op_cart_count ) {
- foreach ( $new_fields_array as $a => $v ) :
- if ( ! empty( $_POST[$v] ) ) {
- update_post_meta( $order_id, $v, $_POST[$v] );
- }
- endforeach;
- $i++;
- }
- }
- // display the extra data in the order admin panel
- function kia_display_order_data_in_admin( $order ){
- ?>
- <div class="order_data_column">
- <h4><?php _e( 'Extra Details', 'woocommerce' ); ?><a href="#" class="edit_address"><?php _e( 'Edit', 'woocommerce' ); ?></a></h4>
- <div class="address">
- <?php
- echo '<p><strong>' . __( 'passenger_title_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_title_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_first_name_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_first_name_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_middle_name_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_middle_name_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_last_name_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_last_name_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_date_of_birth_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_date_of_birth_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_dietry_required_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_dietry_required_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_dietry_preference_1' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_dietry_preference_1', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_title_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_title_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_first_name_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_first_name_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_middle_name_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_middle_name_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_last_name_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_last_name_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_date_of_birth_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_date_of_birth_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_dietry_required_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_dietry_required_2', true ) . '</p>';
- echo '<p><strong>' . __( 'passenger_dietry_preference_2' ) . ':</strong>' . get_post_meta( $order->id, 'passenger_dietry_preference_2', true ) . '</p>';
- ?>
- </div>
- <div class="edit_address">
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_title_1', 'label' => __( 'passenger_title_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_first_name_1', 'label' => __( 'passenger_first_name_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_middle_name_1', 'label' => __( 'passenger_middle_name_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_last_name_1', 'label' => __( 'passenger_last_name_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_date_of_birth_1', 'label' => __( 'passenger_date_of_birth_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_dietry_required_1', 'label' => __( 'passenger_dietry_required_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_dietry_preference_1', 'label' => __( 'passenger_dietry_preference_1' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_title_2', 'label' => __( 'passenger_title_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_first_name_2', 'label' => __( 'passenger_first_name_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_middle_name_2', 'label' => __( 'passenger_middle_name_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_last_name_2', 'label' => __( 'passenger_last_name_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_date_of_birth_2', 'label' => __( 'passenger_date_of_birth_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_dietry_required_2', 'label' => __( 'passenger_dietry_required_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- <?php woocommerce_wp_text_input( array( 'id' => 'passenger_dietry_preference_2', 'label' => __( 'passenger_dietry_preference_2' ), 'wrapper_class' => '_billing_company_field' ) ); ?>
- </div>
- </div>
- <?php }
- add_action( 'woocommerce_admin_order_data_after_order_details', 'kia_display_order_data_in_admin' );
- function kia_save_extra_details( $post_id, $post ){
- update_post_meta( $post_id, '_some_field', wc_clean( $_POST[ 'passenger_title_1' ] ) );
- update_post_meta( $post_id, '_another_field', wc_clean( $_POST[ 'passenger_first_name_1' ] ) );
- }
- add_action( 'woocommerce_process_shop_order_meta', 'kia_save_extra_details', 45, 2 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement