Our code base has a ton of logic that executes as the post is inserted/created. However, some of that logic depends on custom post meta. The only way I know of to add post meta to a new post is like so:
$post_id = wp_insert_post($post_obj);
add_post_meta($post_id, 'key', "value");
However, this means that the post meta is not present when hooks on post insertion happen.
Is there any way to set up or include post meta as part of $post_obj
?
I tried making up new properties of the post object with $post_obj->custom_key = 'value'
but it didn’t seem to actually end up in the database. The only thing I can think of is to hijack an existing property of the post object that I’m not using, like menu_order
, and store some information there. That’s an ugly hack.
You can hook your function to the
wp_insert_post
action hook:To make sure your metadata has been added before any other insert hooks run, give it a higher priority:
By default
add_action()
uses a priority of10
; the lower the number, the earlier it runs.Here is a solution.