| name | validator |
| description | Validate and sanitize form data against schema definitions. Use when validating POST data, sanitizing user input, checking field requirements, or applying custom validation rules. |
| license | MIT |
| location | includes/core/class-validator.php |
| metadata | {"author":"code-soup","version":"1.0","package":"codesoup/metabox-schema"} |
Schema Validator
Validate and sanitize form data against schema definitions for WordPress forms.
When to Use
- Validating form submissions
- Sanitizing user input
- Checking data integrity
- Generating validation error messages
- Processing WordPress form data
Basic Usage
See examples/basic-validation.md for complete example.
Public Methods
validate( array $data, array $schema ): array - Validate and sanitize data
get_errors(): array - Get validation errors (field_name => error_message)
has_errors(): bool - Check if validation has errors
Validation Rules
| Rule | Type | Description |
|---|
required | bool | Field is required |
min | int|float | Minimum length (text) or value (number) |
max | int|float | Maximum length (text) or value (number) |
pattern | string | Regular expression pattern |
format | string | Format validation: 'email', 'url', 'ip' |
date_format | string | Date format for date validation (default: 'Y-m-d') |
validate | callable | Custom validation callback |
Format Validation
- Email - Uses WordPress
is_email()
- URL - Uses WordPress
wp_http_validate_url()
- Date - Uses strict
DateTime::createFromFormat()
Custom Validation
See examples/custom-validation.md for examples of:
- Custom validation callbacks
- Custom error messages
- Complex validation logic
Sanitization
Automatic sanitization based on field type:
- email -
sanitize_email()
- url -
esc_url_raw()
- textarea -
sanitize_textarea_field()
- text/other -
sanitize_text_field()
Custom sanitization via sanitize config (single callback or array of callbacks).
Important Notes
- Sanitization happens first, then validation (changed in v1.1.0)
- Date validation is strict (exact format match required)
- Custom validators should return
true or error message string
- Uses WordPress sanitization functions
- Field names auto-formatted for error messages (via String_Formatter)
- Method
validate_value() renamed to has_validation_errors() (returns ?string instead of string|bool)
- Min/max validation now strictly checks for int/float types (prevents array/object injection)
See Also