You could maybe try something like this:
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
function my_special_nav_class( $classes, $item ) {
$posts_to_watch = array(
'A Single Post Title',
'Another Post Title',
'One More Post Title',
);
foreach ( $posts_to_watch as $post ) {
if ( is_single( $post ) && $post === $item->title ) {
$classes[] = 'current-menu-item';
}
}
return $classes;
}
So you’d have to:
1. Keep using custom links where nothing gets highlighted.
2. Update the array of $posts_to_watch with the titles of your posts you want to highlight.
Just a theory – I haven’t tested it.