true ) ); } function wpcf7_textarea_form_tag_handler( $tag ) { if ( empty( $tag->name ) ) { return ''; } $validation_error = wpcf7_get_validation_error( $tag->name ); $class = wpcf7_form_controls_class( $tag->type ); if ( $validation_error ) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['cols'] = $tag->get_cols_option( '40' ); $atts['rows'] = $tag->get_rows_option( '10' ); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) { unset( $atts['maxlength'], $atts['minlength'] ); } $atts['class'] = $tag->get_class_option( $class ); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true ); $atts['autocomplete'] = $tag->get_option( 'autocomplete', '[-0-9a-zA-Z]+', true ); if ( $tag->has_option( 'readonly' ) ) { $atts['readonly'] = 'readonly'; } if ( $tag->is_required() ) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = empty( $tag->content ) ? (string) reset( $tag->values ) : $tag->content; if ( $tag->has_option( 'placeholder' ) || $tag->has_option( 'watermark' ) ) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option( $value ); $value = wpcf7_get_hangover( $tag->name, $value ); $atts['name'] = $tag->name; $atts = wpcf7_format_atts( $atts ); $html = sprintf( '%4$s', sanitize_html_class( $tag->name ), $atts, esc_textarea( $value ), $validation_error ); return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_textarea', 'wpcf7_textarea_validation_filter', 10, 2 ); add_filter( 'wpcf7_validate_textarea*', 'wpcf7_textarea_validation_filter', 10, 2 ); function wpcf7_textarea_validation_filter( $result, $tag ) { $type = $tag->type; $name = $tag->name; $value = isset( $_POST[$name] ) ? (string) $_POST[$name] : ''; if ( $tag->is_required() && '' == $value ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } if ( '' !== $value ) { $maxlength = $tag->get_maxlength_option(); $minlength = $tag->get_minlength_option(); if ( $maxlength && $minlength && $maxlength < $minlength ) { $maxlength = $minlength = null; } $code_units = wpcf7_count_code_units( stripslashes( $value ) ); if ( false !== $code_units ) { if ( $maxlength && $maxlength < $code_units ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) ); } elseif ( $minlength && $code_units < $minlength ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) ); } } } return $result; } /* Tag generator */ add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_textarea', 20 ); function wpcf7_add_tag_generator_textarea() { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'textarea', __( 'text area', 'contact-form-7' ), 'wpcf7_tag_generator_textarea' ); } function wpcf7_tag_generator_textarea( $contact_form, $args = '' ) { $args = wp_parse_args( $args, array() ); $type = 'textarea'; $description = __( "Generate a form-tag for a multi-line text input field. For more details, see %s.", 'contact-form-7' ); $desc_link = wpcf7_link( __( 'https://contactform7.com/text-fields/', 'contact-form-7' ), __( 'Text Fields', 'contact-form-7' ) ); ?>