Index: src/wp-includes/template.php
===================================================================
--- src/wp-includes/template.php	(revision 41234)
+++ src/wp-includes/template.php	(working copy)
@@ -113,6 +113,12 @@
 
 	if ( count( $post_types ) == 1 ) {
 		$post_type = reset( $post_types );
+
+		// Look for post type template with hyphens.
+		if ( false !== strpos( $post_type, '_' ) ) {
+			$templates[] = 'archive-' . str_replace( '_', '-', $post_type ) . '.php';
+		}
+
 		$templates[] = "archive-{$post_type}.php";
 	}
 	$templates[] = 'archive.php';
@@ -315,6 +321,12 @@
 		}
 
 		$templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
+
+		// Look for taxonomy template with hyphens.
+		if ( false !== strpos( $taxonomy, '_' ) ) {
+			$templates[] = 'taxonomy-' . str_replace( '_', '-', $taxonomy ) . '.php';
+		}
+
 		$templates[] = "taxonomy-$taxonomy.php";
 	}
 	$templates[] = 'taxonomy.php';
@@ -495,9 +507,14 @@
 		}
 
 		$templates[] = "single-{$object->post_type}-{$object->post_name}.php";
+
+		// Look for single template with hyphens.
+		if ( false !== strpos( $object->post_type, '_' ) ) {
+			$templates[] = 'single-' . str_replace( '_', '-', $object->post_type ) . '.php';
+		}
+
 		$templates[] = "single-{$object->post_type}.php";
 	}
-
 	$templates[] = "single.php";
 
 	return get_query_template( 'single', $templates );
