This is how I solved it:
In functions.php
// Custom Dashboard
function my_custom_dashboard() {
$screen = get_current_screen();
if( $screen->base == 'dashboard' ) {
include 'admin/dashboard-panel.php';
}
}
add_action('admin_notices', 'my_custom_dashboard');
dashboard-panel.php
<!-- Hide Old Wrap with CSS -->
<style type="text/css">
div#wpcontent div.wrap {
display: none;
}
div#wpcontent div.my-dashboard {
display: block;
}
</style>
<!-- New Wrap with custom welcome screen-->
<div class="wrap mjp-dashboard">
<h2>Dashboard</h2>
<div id="welcome-panel" class="welcome-panel">
<?php wp_nonce_field( 'welcome-panel-nonce', 'welcomepanelnonce', false ); ?>
<?php //do_action( 'welcome_panel' ); ?>
<div class="mjp-welcome-content">
<h3>Welcome, <?php echo $name; ?></h3>
<p class="about-description">Your role is...</p>
<div class="welcome-panel-column-container">
<div class="welcome-panel-column">
</div>
</div>
</div>
</div>
<div id="dashboard-widgets-wrap">
<?php wp_dashboard(); ?>
<div class="clear"></div>
</div><!-- dashboard-widgets-wrap -->
</div><!-- wrap -->