web/wp-includes/template.php
changeset 204 09a1c134465b
parent 194 32102edaa81b
--- a/web/wp-includes/template.php	Wed Dec 19 12:35:13 2012 -0800
+++ b/web/wp-includes/template.php	Wed Dec 19 17:46:52 2012 -0800
@@ -59,11 +59,11 @@
  * @return string
  */
 function get_archive_template() {
-	$post_type = get_query_var( 'post_type' );
+	$post_types = get_query_var( 'post_type' );
 
 	$templates = array();
 
-	if ( $post_type )
+	foreach ( (array) $post_types as $post_type )
 		$templates[] = "archive-{$post_type}.php";
 	$templates[] = 'archive.php';
 
@@ -82,8 +82,10 @@
 
 	$templates = array();
 
-	$templates[] = "author-{$author->user_nicename}.php";
-	$templates[] = "author-{$author->ID}.php";
+	if ( $author ) {
+		$templates[] = "author-{$author->user_nicename}.php";
+		$templates[] = "author-{$author->ID}.php";
+	}
 	$templates[] = 'author.php';
 
 	return get_query_template( 'author', $templates );
@@ -106,8 +108,10 @@
 
 	$templates = array();
 
-	$templates[] = "category-{$category->slug}.php";
-	$templates[] = "category-{$category->term_id}.php";
+	if ( $category ) {
+		$templates[] = "category-{$category->slug}.php";
+		$templates[] = "category-{$category->term_id}.php";
+	}
 	$templates[] = 'category.php';
 
 	return get_query_template( 'category', $templates );
@@ -130,8 +134,10 @@
 
 	$templates = array();
 
-	$templates[] = "tag-{$tag->slug}.php";
-	$templates[] = "tag-{$tag->term_id}.php";
+	if ( $tag ) {
+		$templates[] = "tag-{$tag->slug}.php";
+		$templates[] = "tag-{$tag->term_id}.php";
+	}
 	$templates[] = 'tag.php';
 
 	return get_query_template( 'tag', $templates );
@@ -156,12 +162,14 @@
  */
 function get_taxonomy_template() {
 	$term = get_queried_object();
-	$taxonomy = $term->taxonomy;
 
 	$templates = array();
 
-	$templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
-	$templates[] = "taxonomy-$taxonomy.php";
+	if ( $term ) {
+		$taxonomy = $term->taxonomy;
+		$templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
+		$templates[] = "taxonomy-$taxonomy.php";
+	}
 	$templates[] = 'taxonomy.php';
 
 	return get_query_template( 'taxonomy', $templates );
@@ -280,7 +288,8 @@
 
 	$templates = array();
 
-	$templates[] = "single-{$object->post_type}.php";
+	if ( $object )
+		$templates[] = "single-{$object->post_type}.php";
 	$templates[] = "single.php";
 
 	return get_query_template( 'single', $templates );
@@ -303,15 +312,21 @@
  */
 function get_attachment_template() {
 	global $posts;
-	$type = explode('/', $posts[0]->post_mime_type);
-	if ( $template = get_query_template($type[0]) )
-		return $template;
-	elseif ( $template = get_query_template($type[1]) )
-		return $template;
-	elseif ( $template = get_query_template("$type[0]_$type[1]") )
-		return $template;
-	else
-		return get_query_template('attachment');
+
+	if ( ! empty( $posts ) && isset( $posts[0]->post_mime_type ) ) {
+		$type = explode( '/', $posts[0]->post_mime_type );
+
+		if ( ! empty( $type ) ) {
+			if ( $template = get_query_template( $type[0] ) )
+				return $template;
+			elseif ( $template = get_query_template( $type[1] ) )
+				return $template;
+			elseif ( $template = get_query_template( "$type[0]_$type[1]" ) )
+				return $template;
+		}
+	}
+
+	return get_query_template( 'attachment' );
 }
 
 /**