title: WordPress custom meta box using OOP way doesn't save data
body: <p>This is the first time I'm building meta box using OOP way, the problem is when I save the post (product) or update it the input text is not saved to the database. Here is my code:</p>
  
  <pre><code>&lt;?php 
  
  /**
  * 
  */
  class Custom_Meta_Boxes{
  
      public function __construct(){
  
          add_action( 'add_meta_boxes', array( $this, 'iam_add_meta_box' ) );
          add_action( 'save_post', array( $this, 'iam_save_meta_box_data' ) );
  
      }
  
      /**
       * Adds a meta box to the post editing screen
       */
      public function iam_add_meta_box(){
  
          add_meta_box(
              'custom_meta_box',
              __( 'Meta Box Title', 'iamtheme' ),
              array( $this, 'iam_display_custom_meta_box' ),
              'post',
              'normal',
              'high'
          );
  
      }
  
      /**
       * Render Meta Box content.
       */
      public function iam_display_custom_meta_box() {
  
          $html = '';
  
          // Add an nonce field so we can check for it later.
          wp_nonce_field( 'iam_nonce_check', 'iam_nonce_check_value' );
  
          $html = '&lt;label for="link-text" class="prfx-row-title"&gt;Link: &lt;/label&gt;';
          $html .= '&lt;input type="text" name="link-text" id="link-text" value="' . get_post_meta( get_the_ID(), 'link-text', true ) . '" placeholder="Enter your link here." /&gt;';
  
          echo $html;
      }
  
      /**
       * Save the meta when the post is saved.
       */
      public function iam_save_meta_box_data( $post_id ){
  
          var_dump( $post_id );
  
          if ( $this-&gt;iam_user_can_save( $post_id, 'iam_nonce_check_value' ) ){
  
              // Checks for input and sanitizes/saves if needed
              if( isset( $_POST[ 'link-text' ] ) &amp;&amp; 0 &lt; count( strlen( trim( $_POST['link-text'] ) ) ) ) {
  
                  update_post_meta( $post_id, 'link-text', sanitize_text_field( $_POST[ 'link-text' ] ) );
  
              }
  
          }
  
      }
  
      /**
       * Determines whether or not the current user has the ability to save meta 
       * data associated with this post.
       *
       * @param       int     $post_id    The ID of the post being save
       * @param       bool                Whether or not the user has the ability to save this post.
      */
      public function iam_user_can_save( $post_id, $nonce ){
  
          var_dump( $post_id );
  
          // Checks save status
          $is_autosave = wp_is_post_autosave( $post_id );
          $is_revision = wp_is_post_revision( $post_id );
          $is_valid_nonce = ( isset( $_POST[ $nonce ] ) &amp;&amp; wp_verify_nonce( $_POST[ $nonce ], 'iam_nonce_check' ) ) ? 'true' : 'false';
  
          // Return true if the user is able to save; otherwise, false.
          if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
              return;
          }
  
      }
  
  }
  
  // Instantiate theme
  if ( class_exists( 'Custom_Meta_Boxes' ) ){
      $i_am = new Custom_Meta_Boxes();
  }
  
  ?&gt;
  </code></pre>
  
  <p>Please could you tell me what is the problem in this code, thank for any helps.</p>
  
  <p>Best regards.</p>