You can put something like this in a theme template:
<?php
switch ( get_current_blog_id() ) {
case 9:
$category = 'alignment';
break;
case 13:
$category = 'lists';
break;
case 14:
$category = 'comments';
break;
default:
$category = '';
break;
}
switch_to_blog( BLOG_ID_CURRENT_SITE ); // root site.
$category_posts = get_posts(
array(
'category_name' => $category,
)
);
if ( $category_posts ) {
?>
<ul>
<?php foreach ( $category_posts as $category_post ) : ?>
<li>
<a href="<?php echo esc_url( get_permalink( $category_post->ID ) ); ?>">
<?php echo esc_html( get_the_title( $category_post->ID ) ); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php
}
restore_current_blog();
?>
That switches to the main site, grabs the posts that correspond to the sub-site’s category, displays them, then restores the sub-site.
Update the case
statements to match your blog IDs and category slugs. If you need it in a widget, etc, it should be pretty straightforward to adapt to other contexts.