Make WordPress Core


Ignore:
Timestamp:
02/14/2010 07:38:00 AM (17 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.