From 11ed527c0db76aa3ea1d726bab061918a1252ebb Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Tue, 11 Sep 2007 18:06:52 +0000 Subject: [PATCH] Set tag_id to first tag in multi tag queries. Have single_cat_title() fallback to single_tag_title() if is_tag so that existing category templates will work with tags. fixes #4506 git-svn-id: https://develop.svn.wordpress.org/trunk@6074 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/general-template.php | 12 +++++++++--- wp-includes/query.php | 23 ++++++++++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index 49020844c2..ebea8c0372 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -275,20 +275,26 @@ function single_cat_title($prefix = '', $display = true ) { else return strip_tags($my_cat_name); } + } else if ( is_tag() ) { + return single_tag_title($prefix, $display); } } function single_tag_title($prefix = '', $display = true ) { + if ( !is_tag() ) + return; + $tag_id = intval( get_query_var('tag_id') ); + if ( !empty($tag_id) ) { - $my_tag = &get_term($tag_id, 'post_tag'); + $my_tag = &get_term($tag_id, 'post_tag', OBJECT, 'display'); $my_tag_name = apply_filters('single_tag_title', $my_tag->name); if ( !empty($my_tag_name) ) { if ( $display ) - echo $prefix.strip_tags($my_tag_name); + echo $prefix . $my_tag_name; else - return strip_tags($my_tag_name); + return $my_tag_name; } } } diff --git a/wp-includes/query.php b/wp-includes/query.php index f4547c6abd..fa7a9d10d3 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -605,7 +605,7 @@ class WP_Query { $this->is_tag = true; } - if ( !is_array($qv['tag_slug__and']) || empty($qv['tag_slug__amd']) ) { + if ( !is_array($qv['tag_slug__and']) || empty($qv['tag_slug__and']) ) { $qv['tag_slug__and'] = array(); } else { $qv['tag_slug__and'] = array_map('sanitize_title', $qv['tag_slug__and']); @@ -1026,6 +1026,9 @@ class WP_Query { $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' "; $include_tags = "'" . implode("', '", $q['tag__in']) . "'"; $whichcat .= " AND $wpdb->term_taxonomy.term_id IN ($include_tags) "; + $reqtag = is_term( $q['tag__in'][0], 'post_tag' ); + if ( !empty($reqtag) ) + $q['tag_id'] = $reqtag['term_id']; } if ( !empty($q['tag_slug__in']) ) { @@ -1033,6 +1036,9 @@ class WP_Query { $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' "; $include_tags = "'" . implode("', '", $q['tag_slug__in']) . "'"; $whichcat .= " AND $wpdb->terms.slug IN ($include_tags) "; + $reqtag = is_term( $q['tag_slug__in'][0], 'post_tag' ); + if ( !empty($reqtag) ) + $q['tag_id'] = $reqtag['term_id']; } if ( !empty($q['tag__not_in']) ) { @@ -1043,6 +1049,18 @@ class WP_Query { } } + if ( !empty($q['tag__and']) ) { + $count = 0; + foreach ( $q['tag__and'] as $tag_and ) { + $join .= " LEFT JOIN $wpdb->term_relationships AS tr$count ON ($wpdb->posts.ID = tr$count.object_id) LEFT JOIN $wpdb->term_taxonomy AS tt$count ON (tr$count.term_taxonomy_id = tt$count.term_taxonomy_id) "; + $whichcat .= " AND tt$count.term_id = '$tag_and' "; + $count++; + } + $reqtag = is_term( $q['tag__and'][0], 'post_tag' ); + if ( !empty($reqtag) ) + $q['tag_id'] = $reqtag['term_id']; + } + if ( !empty($q['tag_slug__and']) ) { $count = 0; foreach ( $q['tag_slug__and'] as $tag_and ) { @@ -1050,6 +1068,9 @@ class WP_Query { $whichcat .= " AND term$count.slug = '$tag_and' "; $count++; } + $reqtag = is_term( $q['tag_slug__and'][0], 'post_tag' ); + if ( !empty($reqtag) ) + $q['tag_id'] = $reqtag['term_id']; } // Author/user stuff