Index: src/wp-includes/nav-menu-template.php
===================================================================
--- src/wp-includes/nav-menu-template.php	(revision 39562)
+++ src/wp-includes/nav-menu-template.php	(working copy)
@@ -431,6 +431,23 @@
 				$classes[] = 'menu-item-home';
 		}
 
+		// Get an array of all public custom post types.
+		$post_types = get_post_types( array(
+			'public'   => true,
+			'_builtin' => false
+		) );
+
+		// Check if a custom post type single item is being viewed.
+		if ( is_singular( $post_types ) ) {
+
+			// Get the post type being viewed.
+			$post_type = get_post_type();
+
+			if ( $post_type === $menu_item->object ) {
+				$classes[] = 'current_page_parent';
+			}
+		}
+
 		// back-compat with wp_page_menu: add "current_page_parent" to static home page link for any non-page query
 		if ( ! empty( $home_page_id ) && 'post_type' == $menu_item->type && empty( $wp_query->is_page ) && $home_page_id == $menu_item->object_id )
 			$classes[] = 'current_page_parent';
Index: tests/phpunit/tests/post/nav-menu.php
===================================================================
--- tests/phpunit/tests/post/nav-menu.php	(revision 39562)
+++ tests/phpunit/tests/post/nav-menu.php	(working copy)
@@ -523,4 +523,63 @@
 
 		$this->assertNotContains( 'menu-item-home', $classes );
 	}
+
+	/**
+	 * @ticket 38836
+	 */
+	function test_class_applied_to_public_custom_post_type_archive_on_single_cpt_post() {
+		$page_id = self::factory()->post->create( array( 'post_type' => 'page', 'post_title' => 'Test Page' ) );
+
+		register_post_type( 'cpt', array( 'public' => true, 'has_archive' => true ) );
+		$cpt_id = self::factory()->post->create( array( 'post_type' => 'cpt', 'post_name' => 'cpt-name' ) );
+
+		wp_update_nav_menu_item( $this->menu_id, 0, array(
+			'menu-item-type'   => 'post_type_archive',
+			'menu-item-object' => 'cpt',
+			'menu-item-status' => 'publish',
+		) );
+
+		wp_update_nav_menu_item( $this->menu_id, 0, array(
+			'menu-item-type'	  => 'post_type',
+			'menu-item-object'	  => 'page',
+			'menu-item-object-id' => $page_id,
+			'menu-item-status'	  => 'publish',
+		) );
+
+		$permalink = get_permalink( $cpt_id );
+		$this->go_to( $permalink );
+
+		$menu_items = wp_get_nav_menu_items( $this->menu_id );
+		_wp_menu_item_classes_by_context( $menu_items );
+
+		$cptarchive_classes = $menu_items[0]->classes;
+		$testpage_classes = $menu_items[1]->classes;
+
+		$this->assertContains( 'current_page_parent', $cptarchive_classes );
+		$this->assertNotContains( 'current_page_parent', $testpage_classes );
+	}
+
+	/**
+	 * @ticket 38836
+	 */
+	function test_class_not_applied_to_custom_post_type_archive_on_single_cpt_post() {
+		register_post_type( 'cpt', array( 'has_archive' => true ) );
+		$cpt_id = self::factory()->post->create( array( 'post_type' => 'cpt', 'post_name' => 'cpt-name' ) );
+
+		wp_update_nav_menu_item( $this->menu_id, 0, array(
+			'menu-item-type'   => 'post_type_archive',
+			'menu-item-object' => 'cpt',
+			'menu-item-status' => 'publish',
+		) );
+
+		$permalink = get_permalink( $cpt_id );
+		$this->go_to( $permalink );
+
+		$menu_items = wp_get_nav_menu_items( $this->menu_id );
+		_wp_menu_item_classes_by_context( $menu_items );
+
+		$cptarchive_classes = $menu_items[0]->classes;
+
+		$this->assertNotContains( 'current_page_parent', $cptarchive_classes );
+	}
 }
