WordPress.org

Make WordPress Core

Changeset 13143


Ignore:
Timestamp:
02/14/10 07:38:00 (4 years ago)
Author:
dd32
Message:

Optimize single_post_title(), single_tag_title() & single_cat_title() to use WP_Query globals if available. Removes an extra DB Query in single_post_title() in most cases.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/general-template.php

    r13132 r13143  
    609609 */ 
    610610function single_post_title($prefix = '', $display = true) { 
    611     global $wpdb; 
    612     $p = get_query_var('p'); 
    613     $name = get_query_var('name'); 
    614  
    615     if ( intval($p) || '' != $name ) { 
    616         if ( !$p ) 
    617             $p = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name)); 
    618         $post = & get_post($p); 
    619         $title = $post->post_title; 
    620         $title = apply_filters('single_post_title', $title); 
    621         if ( $display ) 
    622             echo $prefix.strip_tags($title); 
    623         else 
    624             return strip_tags($title); 
    625     } 
     611    global $wpdb, $post; 
     612    if ( ! $post ) { 
     613        $p = get_query_var('p'); 
     614        $name = get_query_var('name'); 
     615        if ( intval($p) || '' != $name ) { 
     616            if ( !$p ) 
     617                $p = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name = %s", $name)); 
     618            $post = & get_post($p); 
     619        } 
     620    } 
     621    $title = apply_filters('single_post_title', $post->post_title, $post); 
     622    if ( $display ) 
     623        echo $prefix . strip_tags($title); 
     624    else 
     625        return strip_tags($title); 
    626626} 
    627627 
     
    644644 */ 
    645645function single_cat_title($prefix = '', $display = true ) { 
    646     $cat = intval( get_query_var('cat') ); 
    647     if ( !empty($cat) && !(strtoupper($cat) == 'ALL') ) { 
    648         $my_cat_name = apply_filters('single_cat_title', get_the_category_by_ID($cat)); 
    649         if ( !empty($my_cat_name) ) { 
    650             if ( $display ) 
    651                 echo $prefix.strip_tags($my_cat_name); 
    652             else 
    653                 return strip_tags($my_cat_name); 
    654         } 
    655     } else if ( is_tag() ) { 
     646    global $wp_query; 
     647    $cat = $wp_query->queried_object; 
     648 
     649    if ( is_tag() ) { 
    656650        return single_tag_title($prefix, $display); 
     651    } elseif ( !empty($cat->name) ) { 
     652        $cat = $cat->name; 
     653    } else { 
     654        $cat = intval( get_query_var('cat') ); 
     655        if ( !empty($cat) ) 
     656            $cat = get_the_category_by_ID($cat); 
     657    } 
     658    $my_cat_name = apply_filters('single_cat_title', $cat); 
     659    if ( !empty($my_cat_name) ) { 
     660        if ( $display ) 
     661            echo $prefix . strip_tags($my_cat_name); 
     662        else 
     663            return strip_tags($my_cat_name); 
    657664    } 
    658665} 
     
    679686        return; 
    680687 
    681     $tag_id = intval( get_query_var('tag_id') ); 
    682  
    683     if ( !empty($tag_id) ) { 
    684         $my_tag = &get_term($tag_id, 'post_tag', OBJECT, 'display'); 
    685         if ( is_wp_error( $my_tag ) ) 
    686             return false; 
    687         $my_tag_name = apply_filters('single_tag_title', $my_tag->name); 
    688         if ( !empty($my_tag_name) ) { 
    689             if ( $display ) 
    690                 echo $prefix . $my_tag_name; 
    691             else 
    692                 return $my_tag_name; 
     688    global $wp_query; 
     689    $tag = $wp_query->queried_object; 
     690 
     691    if ( !empty($tag->name) ) { 
     692        $tag = sanitize_term($tag, 'post_tag', 'display'); 
     693    } else { 
     694        $tag_id = intval( get_query_var('tag_id') ); 
     695        if ( !empty($tag_id) ) { 
     696            $tag = &get_term($tag_id, 'post_tag', OBJECT, 'display'); 
     697            if ( is_wp_error( $tag ) ) 
     698                return false; 
    693699        } 
     700    } 
     701 
     702    $my_tag_name = apply_filters('single_tag_title', $tag->name); 
     703    if ( !empty($my_tag_name) ) { 
     704        if ( $display ) 
     705            echo $prefix . $my_tag_name; 
     706        else 
     707            return $my_tag_name; 
    694708    } 
    695709} 
Note: See TracChangeset for help on using the changeset viewer.