Wordpress - Remove current_page_parent nav class from blog index when in CPT

You can use the nav_menu_css_class filter to add or remove classes from menu items. Each individual menu item will have this filter applied. An array of classes and the menu item object will be passed to the function, and you will return an array of the classes you want the menu item to have.

PHP's array_diff can be used to remove classes, and adding items can be accomplished by appending class names to the array via $classes[] = 'some-class-name'. You can use the Conditional Tags to check what sort of page is currently being viewed to determine what you need to add or remove.

Here's a quick example that checks if the page currently being viewed is either an archive or single post of the type your-post-type, and the menu item name is Blog. If those conditions are met, the current_page_parent class is removed from the array of classes for that menu item. You can add to or tweak this for your needs.

function wpdev_nav_classes( $classes, $item ) {
    if( ( is_post_type_archive( 'your-post-type' ) || is_singular( 'your-post-type' ) )
        && $item->title == 'Blog' ){
        $classes = array_diff( $classes, array( 'current_page_parent' ) );
    }
    return $classes;
}
add_filter( 'nav_menu_css_class', 'wpdev_nav_classes', 10, 2 );

The current answer is great but it assumes the title of blog's navigation item is "Blog". This could cause problems if the a user ever modifies the nav item in WordPress. The following code is universal as it compares the page id of the nav item against the page id of the blog stored in WordPress options.

function my_custom_post_type_nav_classes( $classes, $item ) {
    $custom_post_type = 'custom-post-type';
        if( ( is_post_type_archive( $custom_post_type) || is_singular( $custom_post_type ) )
        && get_post_meta( $item->ID, '_menu_item_object_id', true ) == get_option( 'page_for_posts' ) ){
            $classes = array_diff( $classes, array( 'current_page_parent' ) );
        }
        return $classes;
    }
    add_filter( 'nav_menu_css_class', 'my_custom_post_type_nav_classes', 10, 2 );