From 4ddde1ab9d6df8f179475ac8195de11b0a75e6e1 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 8 Feb 2010 22:05:05 +0000 Subject: [PATCH] Look for single-.php templates. Add single- class to get_body_class(). Props ptahdunbar. see #12105 git-svn-id: http://svn.automattic.com/wordpress/trunk@13032 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/post-template.php | 21 ++++++++++++--------- wp-includes/query.php | 17 ++++++++--------- wp-includes/theme.php | 14 +++++++++----- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index 77de7e98d..c8c3fe3b8 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -392,14 +392,17 @@ function get_body_class( $class = '' ) { $classes[] = 'error404'; if ( is_single() ) { - $postID = $wp_query->get_queried_object_id(); + $post_id = $wp_query->get_queried_object_id(); + $post = $wp_query->get_queried_object(); - $classes[] = 'single postid-' . $postID; + $classes[] = 'single'; + $classes[] = 'single-' . sanitize_html_class($post->post_type, $post_id); + $classes[] = 'postid-' . $post_id; if ( is_attachment() ) { - $mime_type = get_post_mime_type($postID); + $mime_type = get_post_mime_type($post_id); $mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' ); - $classes[] = 'attachmentid-' . $postID; + $classes[] = 'attachmentid-' . $post_id; $classes[] = 'attachment-' . str_replace($mime_prefix, '', $mime_type); } } elseif ( is_archive() ) { @@ -419,13 +422,13 @@ function get_body_class( $class = '' ) { } elseif ( is_page() ) { $classes[] = 'page'; - $pageID = $wp_query->get_queried_object_id(); + $page_id = $wp_query->get_queried_object_id(); - $post = get_page($pageID); + $post = get_page($page_id); - $classes[] = 'page-id-' . $pageID; + $classes[] = 'page-id-' . $page_id; - if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' AND post_status = 'publish' LIMIT 1", $pageID) ) ) + if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' AND post_status = 'publish' LIMIT 1", $page_id) ) ) $classes[] = 'page-parent'; if ( $post->post_parent ) { @@ -434,7 +437,7 @@ function get_body_class( $class = '' ) { } if ( is_page_template() ) { $classes[] = 'page-template'; - $classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', get_post_meta( $pageID, '_wp_page_template', true ) ), '' ); + $classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', get_post_meta( $page_id, '_wp_page_template', true ) ), '' ); } } elseif ( is_search() ) { if ( !empty($wp_query->posts) ) diff --git a/wp-includes/query.php b/wp-includes/query.php index dafbec226..0683100ed 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -2549,28 +2549,27 @@ class WP_Query { * @return object */ function get_queried_object() { - if (isset($this->queried_object)) { + if ( isset($this->queried_object) ) return $this->queried_object; - } $this->queried_object = NULL; $this->queried_object_id = 0; - if ($this->is_category) { + if ( $this->is_category ) { $cat = $this->get('cat'); $category = &get_category($cat); if ( is_wp_error( $category ) ) return NULL; $this->queried_object = &$category; $this->queried_object_id = (int) $cat; - } else if ($this->is_tag) { + } elseif ( $this->is_tag ) { $tag_id = $this->get('tag_id'); $tag = &get_term($tag_id, 'post_tag'); if ( is_wp_error( $tag ) ) return NULL; $this->queried_object = &$tag; $this->queried_object_id = (int) $tag_id; - } else if ($this->is_tax) { + } elseif ( $this->is_tax ) { $tax = $this->get('taxonomy'); $slug = $this->get('term'); $term = &get_terms($tax, array('slug'=>$slug)); @@ -2579,16 +2578,16 @@ class WP_Query { $term = $term[0]; $this->queried_object = $term; $this->queried_object_id = $term->term_id; - } else if ($this->is_posts_page) { + } elseif ( $this->is_posts_page ) { $this->queried_object = & get_page(get_option('page_for_posts')); $this->queried_object_id = (int) $this->queried_object->ID; - } else if ($this->is_single) { + } elseif ( $this->is_single ) { $this->queried_object = $this->post; $this->queried_object_id = (int) $this->post->ID; - } else if ($this->is_page) { + } elseif ( $this->is_page ) { $this->queried_object = $this->post; $this->queried_object_id = (int) $this->post->ID; - } else if ($this->is_author) { + } elseif ( $this->is_author ) { $author_id = (int) $this->get('author'); $author = get_userdata($author_id); $this->queried_object = $author; diff --git a/wp-includes/theme.php b/wp-includes/theme.php index f79bf4840..2e0a45f12 100644 --- a/wp-includes/theme.php +++ b/wp-includes/theme.php @@ -860,7 +860,7 @@ function get_home_template() { function get_page_template() { global $wp_query; - $id = (int) $wp_query->post->ID; + $id = (int) $wp_query->get_queried_object_id(); $template = get_post_meta($id, '_wp_page_template', true); $pagename = get_query_var('pagename'); @@ -909,7 +909,11 @@ function get_search_template() { * @return string */ function get_single_template() { - return get_query_template('single'); + global $wp_query; + + $object = $wp_query->get_queried_object(); + $templates = array('single-' . $object->post_type . '.php', 'single.php'); + return apply_filters('single_template', locate_template($templates)); } /** @@ -974,11 +978,11 @@ function get_comments_popup_template() { * @return string The template filename if one is located. */ function locate_template($template_names, $load = false) { - if (!is_array($template_names)) + if ( !is_array($template_names) ) return ''; $located = ''; - foreach($template_names as $template_name) { + foreach ( $template_names as $template_name ) { if ( file_exists(STYLESHEETPATH . '/' . $template_name)) { $located = STYLESHEETPATH . '/' . $template_name; break; @@ -988,7 +992,7 @@ function locate_template($template_names, $load = false) { } } - if ($load && '' != $located) + if ( $load && '' != $located ) load_template($located); return $located;