'1707', 'slug' => 'add-fields-to-checkout-page-woocommerce', 'type' => 'plugin', 'public_key' => 'pk_3abcc29391266d676ac7996328bce', 'is_premium' => false, // If your plugin is a serviceware, set this option to false. 'has_premium_version' => true, 'has_addons' => false, 'has_paid_plans' => true, 'menu' => array( 'slug' => 'checkout_form_editor', 'support' => false, 'parent' => array( 'slug' => 'woocommerce', ), ), // Set the SDK to work in a sandbox mode (for development & testing). // IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT. 'secret_key' => 'sk_N1@Ys(*zUkfBWversion, $version, ">=" ) ) { return true; } } return false; } function wcfe_enqueue_scripts(){ global $wp_scripts; if(is_checkout()){ $in_footer = apply_filters( 'wcfe_enqueue_script_in_footer', true ); wp_register_script('wcfe-field-editor-script', WCFE_ASSETS_URL.'js/wcfe-checkout-field-editor-frontend.js', array('jquery', 'select2'), WCFE_VERSION, $in_footer); wp_enqueue_script('wcfe-field-editor-script'); } } add_action('wp_enqueue_scripts', 'wcfe_enqueue_scripts'); function wcfe_admin_scripts( $hook ) { if ( $hook == 'user-edit.php' ) { wp_enqueue_script( 'wc-checkout-editor', plugin_dir_url( __FILE__ ) . 'assets/js/checkout.js', array( 'jquery', 'jquery-ui-datepicker' ), '', true ); } } add_action( 'admin_enqueue_scripts', 'wcfe_admin_scripts', 10, 1 ); /** * Hide Additional Fields title if no fields available. * * @param mixed $old */ function wcfe_enable_order_notes_field() { global $supress_field_modification; if($supress_field_modification){ return $fields; } $additional_fields = get_option('wc_fields_additional'); if(is_array($additional_fields)){ $enabled = 0; foreach($additional_fields as $field){ if($field['enabled']){ $enabled++; } } return $enabled > 0 ? true : false; } return true; } add_filter('woocommerce_enable_order_notes_field', 'wcfe_enable_order_notes_field', 1000); function wcfe_woo_default_address_fields( $fields ) { $sname = apply_filters('wcfe_address_field_override_with', 'billing'); if($sname === 'billing' || $sname === 'shipping'){ $address_fields = get_option('wc_fields_'.$sname); if(is_array($address_fields) && !empty($address_fields) && !empty($fields)){ $override_required = apply_filters( 'wcfe_address_field_override_required', true ); foreach($fields as $name => $field) { $fname = $sname.'_'.$name; if(wcfe_is_locale_field($fname) && $override_required){ $custom_field = isset($address_fields[$fname]) ? $address_fields[$fname] : false; if($custom_field && !( isset($custom_field['enabled']) && $custom_field['enabled'] == false )){ $fields[$name]['required'] = isset($custom_field['required']) && $custom_field['required'] ? true : false; } } } } } return $fields; } add_filter('woocommerce_default_address_fields' , 'wcfe_woo_default_address_fields' ); function wcfe_prepare_country_locale($fields) { if(is_array($fields)){ foreach($fields as $key => $props){ $override_ph = apply_filters('wcfe_address_field_override_placeholder', true); $override_label = apply_filters('wcfe_address_field_override_label', true); $override_required = apply_filters('wcfe_address_field_override_required', false); $override_priority = apply_filters('wcfe_address_field_override_priority', true); if($override_ph && isset($props['placeholder'])){ unset($fields[$key]['placeholder']); } if($override_label && isset($props['label'])){ unset($fields[$key]['label']); } if($override_required && isset($props['required'])){ $fkey = $sname.'_'.$key; if(is_array($address_fields) && isset($address_fields[$fkey])){ $cf_props = $address_fields[$fkey]; if(is_array($cf_props) && isset($cf_props['required'])){ $fields[$key]['required'] = $cf_props['required'] ? true : false; } } } if($override_priority && isset($props['priority'])){ unset($fields[$key]['priority']); } } } return $fields; } add_filter('woocommerce_get_country_locale_default', 'wcfe_prepare_country_locale'); add_filter('woocommerce_get_country_locale_base', 'wcfe_prepare_country_locale'); function wcfe_woo_get_country_locale($locale) { if(is_array($locale)){ foreach($locale as $country => $fields){ $locale[$country] = wcfe_prepare_country_locale($fields); } } return $locale; } add_filter('woocommerce_get_country_locale', 'wcfe_woo_get_country_locale'); /** * wc_checkout_fields_modify_billing_fields function. * * @param mixed $fields */ function wcfe_billing_fields_lite($fields, $country){ global $supress_field_modification; if($supress_field_modification){ return $fields; } if(is_wc_endpoint_url('edit-address')){ return $fields; } else{ return wcfe_prepare_address_fields(get_option('wc_fields_billing'), $fields, 'billing', $country); } } add_filter('woocommerce_billing_fields', 'wcfe_billing_fields_lite', 1000, 2); /** * wc_checkout_fields_modify_shipping_fields function. * * @param mixed $old */ function wcfe_shipping_fields_lite($fields, $country){ global $supress_field_modification; if ($supress_field_modification){ return $fields; } if(is_wc_endpoint_url('edit-address')){ return $fields; } else { return wcfe_prepare_address_fields(get_option('wc_fields_shipping'), $fields, 'shipping', $country); } } add_filter('woocommerce_shipping_fields', 'wcfe_shipping_fields_lite', 1000, 2); /** * wc_checkout_fields_modify_shipping_fields function. * * @param mixed $old */ function wcfe_checkout_fields_lite( $fields ) { global $supress_field_modification; if($supress_field_modification){ return $fields; } if($additional_fields = get_option('wc_fields_additional')){ if( isset($fields['order']) && is_array($fields['order']) ){ $fields['order'] = $additional_fields + $fields['order']; } // check if order_comments is enabled/disabled if(isset($additional_fields) && !$additional_fields['order_comments']['enabled']){ unset($fields['order']['order_comments']); } } if(isset($fields['order']) && is_array($fields['order'])){ $fields['order'] = wcfe_prepare_checkout_fields_lite($fields['order'], false); } return $fields; } add_filter('woocommerce_checkout_fields', 'wcfe_checkout_fields_lite', apply_filters('wcfe_checkout_fields_priority', 1000)); /** * */ function wcfe_prepare_address_fields($fieldset, $original_fieldset = false, $sname = 'billing', $country){ if(is_array($fieldset) && !empty($fieldset)) { $locale = WC()->countries->get_country_locale(); if(isset($locale[ $country ]) && is_array($locale[ $country ])) { foreach($locale[ $country ] as $key => $value){ if(is_array($value) && isset($fieldset[$sname.'_'.$key])){ if(isset($value['required'])){ $fieldset[$sname.'_'.$key]['required'] = $value['required']; } } } } $fieldset = wcfe_prepare_checkout_fields_lite($fieldset, $original_fieldset, $sname); return $fieldset; } else { return $original_fieldset; } } /** * checkout_fields_modify_fields function. * * @param mixed $data * @param mixed $old */ function wcfe_prepare_checkout_fields_lite($fields, $original_fields, $sname = "") { if(is_array($fields) && !empty($fields)) { foreach($fields as $name => $field) { if(isset($field['enabled']) && $field['enabled'] == false ) { unset($fields[$name]); }else{ $new_field = false; $allow_override = apply_filters('wcfe_allow_default_field_override_'.$name, false); if( $original_fields && isset($original_fields[$name]) && !$allow_override ) { $new_field = $original_fields[$name]; $new_field['label'] = isset($field['label']) ? $field['label'] : ''; $new_field['placeholder'] = isset($field['placeholder']) ? $field['placeholder'] : ''; $new_field['class'] = isset($field['class']) && is_array($field['class']) ? $field['class'] : array(); $new_field['label_class'] = isset($field['label_class']) && is_array($field['label_class']) ? $field['label_class'] : array(); $new_field['validate'] = isset($field['validate']) && is_array($field['validate']) ? $field['validate'] : array(); $new_field['required'] = isset($field['required']) ? $field['required'] : 0; $new_field['clear'] = isset($field['clear']) ? $field['clear'] : 0; }else{ $new_field = $field; } if(isset($new_field['type']) && $new_field['type'] === 'select'){ if(apply_filters('wcfe_enable_select2_for_select_fields', true)){ $new_field['input_class'][] = 'wcfe-enhanced-select'; } } $new_field['order'] = isset($field['order']) && is_numeric($field['order']) ? $field['order'] : 0; if(isset($new_field['order']) && is_numeric($new_field['order'])){ $new_field['priority'] = $new_field['order']; } if(isset($new_field['label'])){ $new_field['label'] = __($new_field['label'], 'woocommerce'); } if(isset($new_field['placeholder'])){ $new_field['placeholder'] = __($new_field['placeholder'], 'woocommerce'); } $fields[$name] = $new_field; } } return $fields; }else { return $original_fields; } } /***************************************** ----- Display Field Values - START ------ *****************************************/ /** * Display custom fields in emails * * @param array $keys * @return array */ function wcfe_display_custom_fields_in_emails_lite($order, $sent_to_admin, $plain_text){ $fields_html = ''; if(get_option( 'wcfe_account_sync_fields') && get_option( 'wcfe_account_sync_fields') == "on"){ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('account'), WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } else { $fields = array_merge(WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } if($plain_text === false){ $fields_html .= '

'.esc_html('Custom Checkout Fields','wcfe').'

'; $fields_html .= ''; } echo $fields_html; } //add_filter('woocommerce_email_order_meta_fields', 'wcfe_display_custom_fields_in_emails_lite', 10, 3); add_action( 'woocommerce_email_order_meta', 'wcfe_display_custom_fields_in_emails_lite', 10, 3 ); /** * Display custom checkout fields on view order pages * * @param object $order */ function wcfe_order_details_after_customer_details_lite($order){ if( wcfe_woocommerce_version_check() ){ $order_id = $order->get_id(); }else{ $order_id = $order->id; } $fields = array(); if(!wc_ship_to_billing_address_only() && $order->needs_shipping_address()){ if(get_option( 'wcfe_account_sync_fields') && get_option( 'wcfe_account_sync_fields') == "on"){ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('account'), WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } else{ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } }else{ if(get_option( 'wcfe_account_sync_fields') && get_option( 'wcfe_account_sync_fields') == "on") { $fields = array_merge(WC_Checkout_Field_Editor::get_fields('account'), WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('additional')); } else { $fields = array_merge(WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('additional')); } } if(is_array($fields) && !empty($fields)){ $fields_html = ''; // Loop through all custom fields to see if it should be added foreach($fields as $name => $options){ $enabled = (isset($options['enabled']) && $options['enabled'] == false) ? false : true; $is_custom_field = (isset($options['custom']) && $options['custom'] == true) ? true : false; if(isset($options['show_in_order']) && $options['show_in_order'] && $enabled && $is_custom_field){ if($options['type'] == 'select'){ $value = get_post_meta($order_id, $name, true); if(is_array($value)){ $value = implode(",",$value); } else{ $value = get_post_meta($order_id, $name, true); } } else{ $value = get_post_meta($order_id, $name, true); } if(!empty($value)){ $label = isset($options['label']) && !empty($options['label']) ? __( $options['label'], 'wcfe' ) : $name; if(is_account_page()){ if(apply_filters( 'wcfe_view_order_customer_details_table_view', true )){ $fields_html .= ''. esc_attr($label) .':'. wptexturize($value) .''; }else{ $fields_html .= '
'. esc_attr($label) .':
'. wptexturize($value) .'
'; } }else{ if(apply_filters( 'wcfe_thankyou_customer_details_table_view', true )){ $fields_html .= ''. esc_attr($label) .':'. wptexturize($value) .''; } else{ $fields_html .= '
'. esc_attr($label) .':
'. wptexturize($value) .'
'; } } } } } if($fields_html){ do_action( 'wcfe_order_details_before_custom_fields_table', $order ); ?>

ID ); if(wcfe_woocommerce_version_check()){ $order_id = $order->get_id(); }else{ $order_id = $order->id; } $fields = array(); if(!wc_ship_to_billing_address_only() && $order->needs_shipping_address()){ if(get_option( 'wcfe_account_sync_fields') && get_option( 'wcfe_account_sync_fields') == "on"){ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('account'), WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } else{ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('shipping'), WC_Checkout_Field_Editor::get_fields('additional')); } }else{ if(get_option( 'wcfe_account_sync_fields') && get_option( 'wcfe_account_sync_fields') == "on"){ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('account'), WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('additional')); } else{ $fields = array_merge(WC_Checkout_Field_Editor::get_fields('billing'), WC_Checkout_Field_Editor::get_fields('additional')); } } if(is_array($fields) && !empty($fields)){ $fields_html = ''; // Loop through all custom fields to see if it should be added foreach($fields as $name => $options){ $enabled = (isset($options['enabled']) && $options['enabled'] == false) ? false : true; $is_custom_field = (isset($options['custom']) && $options['custom'] == true) ? true : false; if(isset($options['show_in_order']) && $options['show_in_order'] && $enabled && $is_custom_field){ if($options['type'] == 'select'){ $value = get_post_meta($order_id, $name, true); if(is_array($value)){ $value = implode(",",$value); } else { $value = get_post_meta($order_id, $name, true); } } else { $value = get_post_meta($order_id, $name, true); } if(!empty($value)){ $label = isset($options['label']) && !empty($options['label']) ? __( $options['label'], 'wcfe' ) : $name; if(is_account_page()){ $fields_html .= ''. esc_attr($label) .':'. wptexturize($value) .''; }else { $fields_html .= ''. esc_attr($label) .':'. wptexturize($value) .''; } } } } if($fields_html){ ?>
version, $version, ">=" ) ) { return true; } } return false; } }