WordPress.org

Make WordPress Core

Changeset 13143


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