diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index 8c8d66ac95..d72e90d76b 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -640,17 +640,17 @@ function wp_title($sep = '»', $display = true, $seplocation = '') { * @return string|null Title when retrieving, null when displaying or failure. */ function single_post_title($prefix = '', $display = true) { - global $wpdb, $post; - if ( ! $post ) { - $p = get_query_var('p'); - $name = get_query_var('name'); - if ( intval($p) || '' != $name ) { - if ( !$p ) - $p = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name)); - $post = & get_post($p); - } - } - $title = apply_filters('single_post_title', $post->post_title, $post); + global $wp_query, $post; + + if ( ! $post ) + $_post = $wp_query->get_queried_object(); + else + $_post = $post; + + if ( !isset($_post->post_title) ) + return; + + $title = apply_filters('single_post_title', $_post->post_title, $_post); if ( $display ) echo $prefix . $title; else