Вы должны вернуть разметку из шорткода, а не выводить ее.Вот правильный код, который будет вести себя как положено.
add_shortcode( 'social-media', 'social_media_icons' );
function social_media_icons( $atts ) {
$markup = '';
if (has_nav_menu( 'social' )) {
$markup = wp_nav_menu(
array(
'container' => false,
'echo' => false,
'theme_location' => 'social',
'menu_class' => 'social-links-menu',
'link_before' => '<span class="screen-reader-text">',
'link_after' => '</span>' . twentynineteen_get_icon_svg( 'link' ),
'depth' => 1,
)
);
}
return $markup;
}