Keep display metadata value on backend – Custom Metabox

Modify your news_date() function to be as follows:

function news_date( $post ) {

wp_nonce_field( plugin_basename( __FILE__ ), 'news_date_content_nonce' );

// get the current value of 'news_date' to use in the <input>
$value = get_post_meta ($post->ID, 'news_date', true) ;

echo '<input type="text" id="news_date" name="news_date" placeholder="Enter Date" value="' . $value . '"/>';

}

Another suggestion would be to change

add_action( 'save_post', 'news_date_save' );

to

add_action( 'save_post_news', 'news_date_save' );

and then you’re assured that your news_date_save() function is only called when a post whose post_type == 'news' is saved.

Doing so will allow you to get rid of the if ( 'page' == $_POST['post_type'] ) { if/then/else, because then the condition in that if will never evaluate to true.