Input()
Description #
The Input type field object.
Valid sub type values are: text, hidden, number, email, password, datetime-local, color, url.
Source #
File: lib/form/class-input.php
class Input extends AnsPressFormField { /** * The field type. * * @var string */ public $type = 'input'; /** * Sub type of input field. * * @var string */ public $subtype = 'text'; /** * Prepare field. * * @return void */ protected function prepare() { $this->args = wp_parse_args( $this->args, array( 'subtype' => 'text', 'label' => __( 'AnsPress Input Field', 'anspress-question-answer' ), ) ); // Remove label if custom html. if ( ! empty( $this->args['html'] ) ) { unset( $this->args['label'] ); } $this->set_subtype(); // Call parent prepare(). parent::prepare(); $sanitize_subtype = array( 'number' => 'intval', 'email' => 'email', 'url' => 'esc_url', ); // Make sure all text field are sanitized. if ( in_array( $this->subtype, array_keys( $sanitize_subtype ), true ) ) { $this->sanitize_cb = array_merge( array( $sanitize_subtype[ $this->subtype ] ), $this->sanitize_cb ); } else { $this->sanitize_cb = array_merge( array( 'text_field' ), $this->sanitize_cb ); } $validate_subtype = array( 'number' => 'is_numeric', 'email' => 'is_email', 'url' => 'is_url', ); if ( in_array( $this->subtype, array_keys( $validate_subtype ), true ) ) { $this->validate_cb = array_merge( array( $validate_subtype[ $this->subtype ] ), $this->validate_cb ); } } /** * Check and set sub type of a field. * * @return void * @since 4.1.8 Added date type. */ private function set_subtype() { $allowed_subtype = array( 'text', 'hidden', 'number', 'email', 'password', 'date', 'datetime-local', 'color', 'url', ); $subtype = 'text'; if ( in_array( $this->args['subtype'], $allowed_subtype, true ) ) { $subtype = $this->args['subtype']; } $this->subtype = $subtype; } /** * Order of HTML markup. * * @return void */ protected function html_order() { if ( 'hidden' === $this->subtype ) { $this->output_order = array( 'wrapper_start', 'errors', 'field_markup', 'wrapper_end' ); } else { parent::html_order(); } // Remove label output if custom HTML. if ( $this->get( 'html' ) && empty( $this->args['label'] ) ) { $this->output_order = array_diff( $this->output_order, array( 'label', 'field_wrap_start', 'field_wrap_end' ) ); } } /** * Field markup. * * @return void */ public function field_markup() { parent::field_markup(); if ( $this->get( 'html' ) ) { $this->add_html( $this->get( 'html' ) ); } else { $this->add_html( '<input type="' . esc_attr( $this->subtype ) . '" value="' . esc_attr( $this->value() ) . '"' . $this->common_attr() . $this->custom_attr() . '/>' ); } /** * Action triggered after rendering field markup. * * @param object $field Field object passed by reference. * @since 4.1.0 */ do_action_ref_array( 'ap_after_field_markup', array( &$this ) ); } }
Expand full source code Collapse full source code View on GitHub: lib/form/class-input.php:30
Add your comment