Shortcode to display the latest news article within a page

In functions.php file :

 function my_recent_post()
 {
      global $post;

      $html = "";

      $my_query = new WP_Query( array(
           'post_type' => 'post',
           'posts_per_page' => 1
      ));

      if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

           $html .= "<h2>" . get_the_title() . "</h2>";
           $html .= "<p>" . get_the_excerpt() . "</p>";
           $html .= "<a href=\"" . get_permalink() . "\" class=\"button\">Read more</a>";

      endwhile; endif;

      return $html;
 }
 add_shortcode( 'recent', 'my_recent_post' );

And the shortcode would be [recent].

Code is untested, but should look something like that.