ACF Extended is bundled with an advanced version of the famous acf/save_post
hook. It allows developers to hook in any Post, User, Term and Options Pages save process, on the back-end and front-end.
It is possible to hook on all object save (Post, User, Term and Options Pages) using the global acfe/save
. Usage example:
/*
* ACFE Save
*
* @string $post_id 12 | term_46 | user_22 | my-options | comment_89
* @object/array $object The corresponding WP Object (Post, Term, User, Options Page or Comment)
*/
action('acfe/save', $post_id, $object);
action('acfe/save/id=12', $post_id, $object);
action('acfe/save/id=term_46', $post_id, $object);
action('acfe/save/id=user_22', $post_id, $object);
action('acfe/save/id=my-options', $post_id, $object);
action('acfe/save/id=comment_89', $post_id, $object);
add_action('acfe/save', 'my_acfe_save', 10, 2);
function my_acfe_save($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}
#Global Pre-Save (before save to database)
Just like acf/save_post
allows to hook in before the value is saved in the DB, ACF Extended allows to use acfe/pre_save
hook, and still use functions like get_field()
or have_rows()
to interact with values in the $_POST['acf']
dataset. Usage example:
/*
* ACFE Pre-Save
*
* @string $post_id 12 | term_46 | user_22 | my-options | comment_89
* @object/array $object The corresponding WP Object (Post, Term, User, Options Page or Comment)
*/
action('acfe/pre_save', $post_id, $object);
action('acfe/pre_save/id=12', $post_id, $object);
action('acfe/pre_save/id=term_46', $post_id, $object);
action('acfe/pre_save/id=user_22', $post_id, $object);
action('acfe/pre_save/id=my-options', $post_id, $object);
action('acfe/pre_save/id=comment_89', $post_id, $object);
It is possible to target specifically post saves using the following syntax: acfe/save_post
. This new hook also comes with a variation to target one specific post type.
Just like the Global Save hook, developers can use acfe/pre_save_post
and all its variations to hook in before the values are saved in database. Usage example:
/*
* ACFE Save Post Type
*
* @string $post_id The Post ID
* @object $object The WP Post Object
*/
action('acfe/save_post', $post_id, $object);
action('acfe/save_post/id=12', $post_id, $object);
action('acfe/save_post/post_type=page', $post_id, $object);
add_action('acfe/save_post/post_type=page', 'my_acfe_save_page', 10, 2);
function my_acfe_save_page($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}
It is possible to target specifically term saves using the following syntax: acfe/save_term
. This new hook also comes with a variation to target one specific taxonomy.
Just like the Global Save hook, developers can use acfe/pre_save_term
and all its variations to hook in before the values are saved in database. Usage example:
/*
* ACFE Save Term
*
* @string $post_id The ACF Term ID
* @object $object The WP Term Object
*/
action('acfe/save_term', $post_id, $object);
action('acfe/save_term/id=term_46', $post_id, $object);
action('acfe/save_term/taxonomy=category', $post_id, $object);
add_action('acfe/save_term/taxonomy=category', 'my_acfe_save_category', 10, 2);
function my_acfe_save_category($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}
It is possible to target specifically user saves using the following syntax: acfe/save_user
. This new hook also comes with a variation to target one specific role.
Just like the Global Save hook, developers can use acfe/pre_save_user
and all its variations to hook in before the values are saved in database. Usage example:
/*
* ACFE Save User
*
* @string $post_id The ACF User ID
* @object $object The WP User Object
*/
action('acfe/save_user', $post_id, $object);
action('acfe/save_user/id=user_22', $post_id, $object);
action('acfe/save_user/role=editor', $post_id, $object);
add_action('acfe/save_user/role=editor', 'my_acfe_save_editor', 10, 2);
function my_acfe_save_editor($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}
It is possible to target specifically options pages saves using the following syntax: acfe/save_option
. This new hook also comes with a variation to target one specific options page slug.
Just like the Global Save hook, developers can use acfe/pre_save_option
and all its variations to hook in before the values are saved in database. Usage example:
/*
* ACFE Save Options Page
*
* @string $post_id The ACF Options Page Post ID
* @array $object The ACF Options Page Settings array
*/
action('acfe/save_option', $post_id, $object);
action('acfe/save_option/id=my-options', $post_id, $object);
action('acfe/save_option/slug=my-options-page', $post_id, $object);
add_action('acfe/save_option/slug=my-options-page', 'my_acfe_save_options_page', 10, 2);
function my_acfe_save_options_page($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}
It is possible to target specifically comments saves using the following syntax: acfe/save_comment
.
Just like the Global Save hook, developers can use acfe/pre_save_comment
and all its variations to hook in before the values are saved in database. Usage example:
/*
* ACFE Save Comment
*
* @string $post_id The ACF Comment ID
* @object $object The WP Comment Object
*/
action('acfe/save_comment', $post_id, $object);
action('acfe/save_comment/id=comment_89', $post_id, $object);
add_action('acfe/save_comment/id=comment_89', 'my_acfe_save_comment', 10, 2);
function my_acfe_save_comment($post_id, $object){
// Retrieve the user input from "my_field" field
get_field('my_field');
// Retrieve "my_field" field value from DB
get_field('my_field', $post_id);
// Loop thru the user input from "my_repeater" field
if(have_rows('my_repeater')):
while(have_rows('my_repeater')): the_row();
get_sub_field('my_sub_field');
endwhile;
endif;
}