$num( isset( $raw['min'] ) ? $raw['min'] : '' ), 'max' => $num( isset( $raw['max'] ) ? $raw['max'] : '' ), 'step' => ( isset( $raw['step'] ) && is_numeric( $raw['step'] ) && $raw['step'] > 0 ) ? 0 + $raw['step'] : 'any', ); } /** {@inheritdoc} */ public function sanitize_value( $raw, array $field ) { $raw = is_scalar( $raw ) ? str_replace( ',', '.', trim( (string) $raw ) ) : ''; return is_numeric( $raw ) ? $raw : ( '' === $raw ? '' : 'NaN' ); } /** {@inheritdoc} */ public function validate( $value, array $field ) { if ( ! is_numeric( $value ) ) { return __( 'Enter a number.', 'fillaro' ); } if ( '' !== $field['min'] && $value < $field['min'] ) { /* translators: %s: minimum value. */ return sprintf( __( 'Enter %s or more.', 'fillaro' ), $field['min'] ); } if ( '' !== $field['max'] && $value > $field['max'] ) { /* translators: %s: maximum value. */ return sprintf( __( 'Enter %s or less.', 'fillaro' ), $field['max'] ); } return ''; } /** {@inheritdoc} */ protected function extra_attrs( array $field ) { return array( 'min' => '' !== $field['min'] ? $field['min'] : false, 'max' => '' !== $field['max'] ? $field['max'] : false, 'step' => $field['step'], 'inputmode' => 'decimal', ); } }