Neil K
Neil K

Reputation: 1328

Add meta field just after post is published

I'm trying to add a custom field of event_month when a post is published or saved. I'm using the save_post action and getting the contents of a custom field containing the date and trying to store this in a separate custom field with just the month. This works perfectly when saving a post that has already been created. I've shown my code below.

add_action('save_post', 'update_event_date');

function update_event_date($post_id){

    $post_type = get_post_type($post_id);
    $event_datee = get_post_meta($post_id, '_EventStartDate', true);

    if ($post_type == 'tribe_events'){

        $month = date("m",strtotime($event_datee));
        update_post_meta($post_id, 'event_month', $month);

    }

}

The problem arises when creating a new post. I think this is because the action fires before the _EventStartDate meta has been created and therefore the month can't be taken from this.

The hook is firing correctly and as intended when saving/updating a post but doesn't correctly get the month from the meta when creating a new post.

I'd really appreciate it if someone could provide me with some guidance.

Upvotes: 0

Views: 857

Answers (1)

mokiSRB
mokiSRB

Reputation: 1162

To access post meta passed together with yours, you can do something like this:

$event_datee = get_post_meta($post_id, '_EventStartDate', true);
foreach($_POST['meta'] as $meta){
     if($meta['key'] == '_EventStartDate'){
           $event_datee = $meta['value'];
      }
};

Upvotes: 1

Related Questions