Click to initialize TinyMCE
The Email Action is a template to generate and send advanced e-mails on form submission.
Add actions on form submission
(Optional) Target this action using hooks.
The URL to redirect to. See "Cheatsheet" tab for all available template tags.
(Optional) Target this action using hooks.
Fill inputs with values
Setting name | Description |
Action name | Alias name allowing to use targeted hook |
From | The sender e-mail address Format: Name <[email protected]> |
To | The recipient address |
Reply to | The address to reply to |
Cc | Copy carbon |
Bcc | Blind copy carbon |
Subject | The e-mail subject |
Content | The e-mail content |
Dynamic files | E-mail attachments (mapping a field) |
Static files | Static e-mail attachments |
By default, there is no validation for this Action. You can use the acf/validate_value
hook to validate each fields individually.
To validate the whole form, you can use the acfe/form/validation/email
hook and throw errors with the acfe_add_validation_error()
function. Usage example:
/*
* E-mail Validation
*
* @array $form Form settings
* @string $post_id Post ID (where the form is displayed)
* @string $action Action name
*/
action('acfe/form/validation/email', $form, $post_id, $action);
action('acfe/form/validation/email/form=my-form', $form, $post_id, $action);
action('acfe/form/validation/email/action=my-email', $form, $post_id, $action);
add_action('acfe/form/validation/email/form=my-form', 'my_form_validation', 10, 3);
function my_form_validation($form, $post_id, $action){
// Get field input value
$my_field = get_field('my_field');
if($my_field === 'Company'){
// Add validation error
acfe_add_validation_error('my_field', 'The value Company is not allowed');
}
}
The preparation phase is triggered after the form validation and before its submission. Returning false
will stop the Action and go to the next one. Usage example:
/*
* E-mail Prepare
*
* @bool $prepare True/false
* @array $form Form settings
* @string $post_id Post ID (where the form is displayed)
* @string $action Action name
*/
filter('acfe/form/prepare/email', $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/email/form=my-form', $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/email/action=my-email', $prepare, $form, $post_id, $action);
add_filter('acfe/form/prepare/email/form=my-form', 'my_form_prepare', 10, 4);
function my_form_prepare($prepare, $form, $post_id, $action){
// Do not send e-mail if user isn't logged in
if(!is_user_logged_in()){
$prepare = false;
}
// return
return $prepare;
}
The acfe/form/submit/email_args
hook let you change the e-mail arguments right before it is sent by wp_mail()
. Returning false
will stop the e-mail from being sent. Usage example:
/*
* E-mail Arguments
*
* @array $args Email arguments
* @array $form Form settings
* @string $action Action name
*/
filter('acfe/form/submit/email_args', $args, $form, $action);
filter('acfe/form/submit/email_args/form=my-form', $args, $form, $action);
filter('acfe/form/submit/email_args/action=my-email', $args, $form, $action);
add_filter('acfe/form/submit/email_args/action=my-email', 'my_form_email_args', 10, 3);
function my_form_email_args($args, $form, $action){
/*
* $args = array(
* 'from' => '[email protected]',
* 'reply_to' => '[email protected]',
* 'to' => '[email protected]',
* 'cc' => '[email protected]',
* 'bcc' => '[email protected]',
* 'subject' => 'Subject',
* 'content' => 'Content',
* 'headers' => array(
* 'From: [email protected]',
* 'Reply-to: [email protected]',
* 'Cc: [email protected]',
* 'Bcc: [email protected]',
* 'Content-Type: text/html',
* 'charset=UTF-8'
* ),
* 'attachments' => array(
* '/path/to/file.jpg'
* )
* );
*/
/*
* Get the form input value named 'my_field'
*/
$my_field = get_field('my_field');
if($my_field === 'Company'){
// Change Recipient
$args['to'] = '[email protected]';
}
/*
* Get previous Post Action output
*/
$prev_post_action = acfe_form_get_action('post');
if(!empty($prev_post_action)){
if($prev_post_action['post_title'] === 'Company'){
// Change Recipient
$args['to'] = '[email protected]';
}
}
// Do not send E-mail
// return false;
// return
return $args;
}
Trigger a custom action after the e-mail was sent using the acfe/form/submit/email
hook. Usage example:
/*
* E-mail Submit
*
* @array $args Email arguments
* @array $form Form settings
* @string $action Action name
*/
action('acfe/form/submit/email', $args, $form, $action);
action('acfe/form/submit/email/form=my-form', $args, $form, $action);
action('acfe/form/submit/email/action=my-email', $args, $form, $action);
add_action('acfe/form/submit/email/form=my-form', 'my_form_submit', 10, 3);
function my_form_submit($args, $form, $action){
/*
* Get the form input value named 'my_field'
*/
$my_field = get_field('my_field');
if($my_field === 'Company'){
// do_something();
}
/*
* Get previous Post Action output
*/
$prev_post_action = acfe_form_get_action('post');
if(!empty($prev_post_action)){
if($prev_post_action['post_title'] === 'Company'){
// do_something();
}
}
}
The Action Output let developers retrieve the action data in a future action within the Form UI or a PHP hook. For example, the Template Tag {action:email:content}
will output the latest E-mail Action “Content” setting.
If the action is named, the Template Tag will use it. Ie: {action:my-email:content}
. The equivalent function in PHP is acfe_form_get_action('email')
.
It is possible to change the output of an E-mail Action using the acfe/form/output/email
filter. Usage example:
/* * E-mail Output * * @array $data Email arguments * @array $form Form settings * @string $action Action name */ filter('acfe/form/output/email', $data, $form, $action); filter('acfe/form/output/email/form=my-form', $data, $form, $action); filter('acfe/form/output/email/action=my-email', $data, $form, $action);
add_filter('acfe/form/output/email/form=my-form', 'my_form_output', 10, 3);
function my_form_output($data, $form, $action){
/*
* $data = array(
* 'from' => '[email protected]',
* 'reply_to' => '[email protected]',
* 'to' => '[email protected]',
* 'cc' => '[email protected]',
* 'bcc' => '[email protected]',
* 'subject' => 'Subject',
* 'content' => 'Content',
* 'headers' => array(
* 'From: [email protected]',
* 'Reply-to: [email protected]',
* 'Cc: [email protected]',
* 'Bcc: [email protected]',
* 'Content-Type: text/html',
* 'charset=UTF-8'
* ),
* 'attachments' => array(
* '/path/to/file.jpg'
* )
* );
*/
// Get field input value
$my_field = get_field('my_field');
if($my_field === 'Company'){
// Set a custom key
$data['custom_key'] = 'custom_value';
}
// return
return $data;
}