name = esc_html__( 'Name', 'wpforms-lite' ); $this->type = 'name'; $this->icon = 'fa-user'; $this->order = 150; // Define additional field properties. add_filter( 'wpforms_field_properties_name', array( $this, 'field_properties' ), 5, 3 ); // Set field to default to required. add_filter( 'wpforms_field_new_required', array( $this, 'default_required' ), 10, 2 ); } /** * Define additional field properties. * * @since 1.3.7 * * @param array $properties Field properties. * @param array $field Field data and settings. * @param array $form_data Form data and settings. * * @return array */ public function field_properties( $properties, $field, $form_data ) { $format = ! empty( $field['format'] ) ? esc_attr( $field['format'] ) : 'first-last'; // Simple format. if ( 'simple' === $format ) { $properties['inputs']['primary']['attr']['placeholder'] = ! empty( $field['simple_placeholder'] ) ? $field['simple_placeholder'] : ''; $properties['inputs']['primary']['attr']['value'] = ! empty( $field['simple_default'] ) ? apply_filters( 'wpforms_process_smart_tags', $field['simple_default'], $form_data ) : ''; return $properties; } // Expanded formats. // Remove primary for expanded formats since we have first, middle, last. unset( $properties['inputs']['primary'] ); $form_id = absint( $form_data['id'] ); $field_id = absint( $field['id'] ); $props = array( 'inputs' => array( 'first' => array( 'attr' => array( 'name' => "wpforms[fields][{$field_id}][first]", 'value' => ! empty( $field['first_default'] ) ? apply_filters( 'wpforms_process_smart_tags', $field['first_default'], $form_data ) : '', 'placeholder' => ! empty( $field['first_placeholder'] ) ? $field['first_placeholder'] : '', ), 'block' => array( 'wpforms-field-row-block', 'wpforms-first', ), 'class' => array( 'wpforms-field-name-first', ), 'data' => array(), 'id' => "wpforms-{$form_id}-field_{$field_id}", 'required' => ! empty( $field['required'] ) ? 'required' : '', 'sublabel' => array( 'hidden' => ! empty( $field['sublabel_hide'] ), 'value' => esc_html__( 'First', 'wpforms-lite' ), ), ), 'middle' => array( 'attr' => array( 'name' => "wpforms[fields][{$field_id}][middle]", 'value' => ! empty( $field['middle_default'] ) ? apply_filters( 'wpforms_process_smart_tags', $field['middle_default'], $form_data ) : '', 'placeholder' => ! empty( $field['middle_placeholder'] ) ? $field['middle_placeholder'] : '', ), 'block' => array( 'wpforms-field-row-block', 'wpforms-one-fifth', ), 'class' => array( 'wpforms-field-name-middle', ), 'data' => array(), 'id' => "wpforms-{$form_id}-field_{$field_id}-middle", 'required' => '', 'sublabel' => array( 'hidden' => ! empty( $field['sublabel_hide'] ), 'value' => esc_html__( 'Middle', 'wpforms-lite' ), ), ), 'last' => array( 'attr' => array( 'name' => "wpforms[fields][{$field_id}][last]", 'value' => ! empty( $field['last_default'] ) ? apply_filters( 'wpforms_process_smart_tags', $field['last_default'], $form_data ) : '', 'placeholder' => ! empty( $field['last_placeholder'] ) ? $field['last_placeholder'] : '', ), 'block' => array( 'wpforms-field-row-block', ), 'class' => array( 'wpforms-field-name-last', ), 'data' => array(), 'id' => "wpforms-{$form_id}-field_{$field_id}-last", 'required' => ! empty( $field['required'] ) ? 'required' : '', 'sublabel' => array( 'hidden' => ! empty( $field['sublabel_hide'] ), 'value' => esc_html__( 'Last', 'wpforms-lite' ), ), ), ), ); $properties = array_merge_recursive( $properties, $props ); $has_common_error = ! empty( $properties['error']['value'] ) && is_string( $properties['error']['value'] ); // Input First: add error class if needed. if ( ! empty( $properties['error']['value']['first'] ) || $has_common_error ) { $properties['inputs']['first']['class'][] = 'wpforms-error'; } // Input First: add required class if needed. if ( ! empty( $field['required'] ) ) { $properties['inputs']['first']['class'][] = 'wpforms-field-required'; } // Input First: add column class. $properties['inputs']['first']['block'][] = 'first-last' === $format ? 'wpforms-one-half' : 'wpforms-two-fifths'; // Input Middle: add error class if needed. if ( $has_common_error ) { $properties['inputs']['middle']['class'][] = 'wpforms-error'; } // Input Last: add error class if needed. if ( ! empty( $properties['error']['value']['last'] ) || $has_common_error ) { $properties['inputs']['last']['class'][] = 'wpforms-error'; } // Input Last: add required class if needed. if ( ! empty( $field['required'] ) ) { $properties['inputs']['last']['class'][] = 'wpforms-field-required'; } // Input Last: add column class. $properties['inputs']['last']['block'][] = 'first-last' === $format ? 'wpforms-one-half' : 'wpforms-two-fifths'; return $properties; } /** * Name fields should default to being required. * * @since 1.0.8 * * @param bool $required * @param array $field * * @return bool */ public function default_required( $required, $field ) { if ( 'name' === $field['type'] ) { return true; } return $required; } /** * Field options panel inside the builder. * * @since 1.0.0 * * @param array $field */ public function field_options( $field ) { // Define data. $format = ! empty( $field['format'] ) ? esc_attr( $field['format'] ) : 'first-last'; /* * Basic field options. */ // Options open markup. $args = array( 'markup' => 'open', ); $this->field_option( 'basic-options', $field, $args ); // Label. $this->field_option( 'label', $field ); // Format. $lbl = $this->field_element( 'label', $field, array( 'slug' => 'format', 'value' => esc_html__( 'Format', 'wpforms-lite' ), 'tooltip' => esc_html__( 'Select format to use for the name form field', 'wpforms-lite' ), ), false ); $fld = $this->field_element( 'select', $field, array( 'slug' => 'format', 'value' => $format, 'options' => array( 'simple' => esc_html__( 'Simple', 'wpforms-lite' ), 'first-last' => esc_html__( 'First Last', 'wpforms-lite' ), 'first-middle-last' => esc_html__( 'First Middle Last', 'wpforms-lite' ), ), ), false ); $args = array( 'slug' => 'format', 'content' => $lbl . $fld, ); $this->field_element( 'row', $field, $args ); // Description. $this->field_option( 'description', $field ); // Required toggle. $this->field_option( 'required', $field ); // Options close markup. $args = array( 'markup' => 'close', ); $this->field_option( 'basic-options', $field, $args ); /* * Advanced field options. */ // Options open markup. $args = array( 'markup' => 'open', ); $this->field_option( 'advanced-options', $field, $args ); // Size. $this->field_option( 'size', $field ); echo '