In my plugin I want to update sitemap every time page or post is created/modified. To achieve this I use save_post hook:

add_action( 'save_post', 'update_sitemap', 10, 3);

Upon creating/saving/updating/deleting any page my callback method update_sitemap is fired but when i create/save/update/delete any post it doesn't seem to fire callback update_sitemap immediately.

I tested this for custom post types and it works immediately like for pages.

When I add 2 new regular posts, callback method is called once. Only after any further modification callback for 2nd post is fired.

Is this expected behaviour for save_post hook?

  • It's impossible to guess what the update_sitemap() function do.
    – Max Yudin
    Jul 10, 2019 at 10:37

1 Answer 1


save_post is fired at the end of wp_insert_post() which is the core function that's run whenever a post is inserted or updated (wp_update_post() calls it internally). This includes when the post is updated via the classic editor and the block editor (Gutenberg), as well whenever it's updated via the REST API. The only reason it wouldn't fire is if the post was being updated via SQL directly (via a plugin or otherwise), or when only post meta is updated via a function.

So no, this is not the expected behaviour. If your function isn't firing then it could be interference from another theme or plugin, or it could be an issue with the function itself, but there's not enough information in the question to say either way.

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.