title: Why isn't Wordpress' 'save_post_{$post->post_type}' action hook passing the correct number of arguments?
body: <p>According to the WordPress codex <a href="https://developer.wordpress.org/reference/hooks/save_post_post-post_type/" rel="nofollow noreferrer">save_post_{$post->post_type}</a> should pass three arguments:</p>
  
  <p><code>do_action( "save_post_{$post-&gt;post_type}", int $post_ID, WP_Post $post, bool $update )</code></p>
  
  <p><strong>Here is my code:</strong></p>
  
  <pre><code>add_action( 'save_post_guide', array($this, 'saveGuideMeta') );
  function saveGuideMeta(int $post_ID, WP_Post $post, bool $update) {
      if (isset($_POST['guide_keyword'])) {
          update_post_meta($post_ID, 'guide_keyword', sanitize_text_field($_POST['guide_keyword']));
      }
  }
  </code></pre>
  
  <p>I literally copied the function signature to be sure, but it throws an <code>ArgumentCountError</code> when I save the post (so I know the function is being called and the hook is "working").</p>
  
  <p><strong>The Exception</strong></p>
  
  <p><code>Fatal error: Uncaught ArgumentCountError: Too few arguments to function saveGuideMeta(), 1 passed in public_html/wp-includes/class-wp-hook.php on line 288 and exactly 3 expected</code></p>
  
  <p>It's as if the <code>save_post_guide</code> hook is not passing the three arguments, only one. </p>
  
  <p>I am simply attempting to update post meta when a post is saved. What am I doing wrong here? </p>