After I publish a post I want to get a custom field from the plugin advanced custom fields and store it inside a database. tried this:

    function call_after_post_publish($post_id, $post) {

    $tcParentTitle = get_the_title( $post_id );
    $tcChildTitle  = get_field( 'funcion_1_titulo_tc', $post_id ); 

    global $wpdb;
            'parent_title' => $tcParentTitle,
            'title'    => $tcChildTitle,
            'parent_id'    => $post_id,



add_action( 'publish_post', 'call_after_post_publish', 10, 2 );

This doesn't seem to work because I think the function get_field() works only after the post is created. Is there other way I can get the custom field value?

  • Look in $_POST for data or use the acf/save_post action instead.
    – Milo
    Oct 25, 2018 at 3:59
  • 1
    The hook publish_post is fired before save_post that's used by ACF. So it's better to hook into save_post with higher priority value. Oct 25, 2018 at 5:35

1 Answer 1


I would suggest to use wp_insert_post hook to make sure that everything is processed before you hook in.

add_action( 'wp_insert_post', 'my_wp_insert_post_cb', 10, 2 );
function my_wp_insert_post_cb( $post_id, $post ) {
    // Do your stuff here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.