Skip to main content

Form Filters

This page documents filters for customizing form processing — from the action URL to the final email.

FilterDescription
unblock/form/actionForm action URL
unblock/form/fieldsSanitized form fields before email
unblock/form/allowed_extensionsAllowed file extensions for attachments
unblock/form/emailEmail arguments before wp_mail()

form/action

Filter the form action URL injected into data-unbk-form forms.

apply_filters( 'unblock/form/action', string $action_url );
ParameterTypeDescription
$action_urlstringREST endpoint URL. Default: rest_url( 'unblock/v1/form' )

Example: Custom Endpoint

add_filter( 'unblock/form/action', function ( $action_url ) {

return home_url( '/custom-form-handler/' );

} );

form/fields

Filter the sanitized form fields before the email is built.

apply_filters( 'unblock/form/fields', array $fields, Context $context );
ParameterTypeDescription
$fieldsarraySanitized field key-value pairs
$context\Unblock\Form\ContextForm context

Example: Add Referer Field

add_filter( 'unblock/form/fields', function ( $fields, $context ) {

$fields['submitted_from'] = $context->referer();

return $fields;

}, 10, 2 );

form/allowed_extensions

Filter allowed file extensions for form attachments.

apply_filters( 'unblock/form/allowed_extensions', array $extensions, Context $context );
ParameterTypeDescription
$extensionsarrayDefault: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'pdf', 'doc', 'docx']
$context\Unblock\Form\ContextForm context

Example: Allow ZIP and CSV

add_filter( 'unblock/form/allowed_extensions', function ( $extensions ) {

$extensions[] = 'zip';
$extensions[] = 'csv';

return $extensions;

} );
Common mistake

Adding executable extensions like php, js, or exe here is a security risk. Only allow file types you actually need.

form/email

Filter all email arguments before sending via wp_mail().

apply_filters( 'unblock/form/email', array $email_args, Context $context );
ParameterTypeDescription
$email_argsarrayKeys: to, subject, body, headers, attachments
$context\Unblock\Form\ContextForm context

Example: Route by Referer

add_filter( 'unblock/form/email', function ( $args, $context ) {

if ( str_contains( $context->referer(), '/careers' ) ) {
$args['to'] = 'hr@example.com';
}

return $args;

}, 10, 2 );

Example: Add CC Header

add_filter( 'unblock/form/email', function ( $args, $context ) {

$args['headers'][] = 'Cc: archive@example.com';

return $args;

}, 10, 2 );

Next steps

  • Actions — form lifecycle hooks (form/processed, form/spam_detected)
  • Security filters — allowed form actions and HTML sanitization