save_post() on Menu Save

As Mr. Peattie and Mr. Nowell pointed out, you should check the post type as one of the first things in your save_post function.

Here’s couple of ways how to do it,

add_action( 'save_post', 'prefix_my_save_post_action', 10, 3 );
function prefix_my_save_post_action( $post_id, $post, $update ) {

  // Check for single post type
  if ( 'my_post_type' !== $post->post_type ) {
    return;
  }

  // Check multiple post types with in_array()
  $valid_post_types = array(
    'post' => true,
    'page' => true,
    'post_type_a' => true,
    'post_type_b' => true
  );
  if ( ! in_array( $post->post_type, $valid_post_types ) ) {
    return;
  }
  // or with isset() <-- uses array keys
  if ( ! isset( $valid_post_types[$post->post_type] ) ) {
    return;
  }

  // Do stuff
}

There’s also the save_post_{$post->post_type} action that you could use to directly target a certain post type save action.

add_action( 'save_post_my_post_type', 'prefix_my_save__cpt_post_action', 10, 3 );
function prefix_my_save_post_action( $post_id, $post, $update ) {
  // No need to check for post type as it is already in the action
  // Do stuff
}