Click to initialize TinyMCE
The Option Action is a template to create or update options 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 |
Target | The options page to update |
Source | The options page to retrieve fields from |
Load values | Fill inputs with values |
Save ACF fields | Choose which ACF fields should be saved to this options page |
Load ACF fields | Choose which ACF fields should have their values loaded |
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/option
hook and throw errors with the acfe_add_validation_error()
function. Usage example:
/*
* Option Validation
*
* @array $form Form settings
* @string $post_id Post ID (where the form is displayed)
* @string $action Action name
*/
action('acfe/form/validation/option', $form, $post_id, $action);
action('acfe/form/validation/option/form=my-form', $form, $post_id, $action);
action('acfe/form/validation/option/action=my-option', $form, $post_id, $action);
add_action('acfe/form/validation/option/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:
/*
* Option 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/option', $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/option/form=my-form', $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/option/action=my-option', $prepare, $form, $post_id, $action);
add_filter('acfe/form/prepare/option/form=my-form', 'my_form_prepare', 10, 4);
function my_form_prepare($prepare, $form, $post_id, $action){
// Stop the action if the user isn't logged in
if(!is_user_logged_in()){
$prepare = false;
}
// return
return $prepare;
}
Alter the option ID where meta values are loaded from. Usage example:
/*
* Option Values Source
*
* @int $option_id Option ID Source
* @array $form Form settings
* @string $action Action name
*/
filter('acfe/form/load/option_id', $option_id, $form, $action);
filter('acfe/form/load/option_id/form=my-form', $option_id, $form, $action);
filter('acfe/form/load/option_id/action=my-option', $option_id, $form, $action);
add_filter('acfe/form/load/option_id/form=my-form', 'my_form_option_source', 10, 3);
function my_form_option_source($option_id, $form, $action){
// Get field input value
$my_field = get_field('my_field');
if($my_field === 'Company'){
// Force to load values from the Option Post ID 'my_options'
$option_id = 'my_options';
}
// return
return $option_id;
}
Alter the option ID before database insert/update. Usage example:
/*
* Option Arguments
*
* @array $option_id Targeted Option Post ID
* @array $form Form settings
* @string $action Action name
*/
filter('acfe/form/submit/option_id', $option_id, $form, $action);
filter('acfe/form/submit/option_id/form=my-form', $option_id, $form, $action);
filter('acfe/form/submit/option_id/action=my-option', $option_id, $form, $action);
add_filter('acfe/form/submit/option_id/form=my-form', 'my_form_option_id', 10, 3);
function my_form_option_id($option_id, $form, $action){
/*
* Get the form input value named 'my_field'
*/
$my_field = get_field('my_field');
if($my_field === 'Company'){
// Change Option Post ID
$option_id = 'my_options';
}
/*
* 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 Option Post ID
$option_id = 'my_options';
}
}
// So not save option
// return false;
// return
return $option_id;
}
Trigger a custom action after the option was created/updated using the acfe/form/submit/option
hook. Usage example:
/*
* Option Submit
*
* @int $option_id Targeted Option Post ID
* @array $form Form settings
* @string $action Action name
*/
action('acfe/form/submit/option', $option_id, $form, $action);
action('acfe/form/submit/option/form=my-form', $option_id, $form, $action);
action('acfe/form/submit/option/action=my-option', $option_id, $form, $action);
add_action('acfe/form/submit/option/form=my-form', 'my_form_submit', 10, 3);
function my_form_submit($option_id, $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();
}
}
}