WordPress.org

Make WordPress Core

Changeset 5149


Ignore:
Timestamp:
03/31/2007 06:16:12 AM (15 years ago)
Author:
matt
Message:

All the query stuff we need for tag= URLs to work.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-content/themes/default/archive.php

    r5105 r5149  
    22
    33    <div id="content" class="narrowcolumn">
    4 
     4<?php is_tag(); ?>
    55        <?php if (have_posts()) : ?>
    66
     
    88<?php /* If this is a category archive */ if (is_category()) { ?>
    99        <h2 class="pagetitle">Archive for the &#8216;<?php single_cat_title(); ?>&#8217; Category</h2>
    10 
     10<?php } elseif( is_tag() ) { ?>
     11<h2 class="pagetitle">Archive for the &#8216;<?php single_cat_title(); ?>&#8217; Tag</h2>
    1112      <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
    1213        <h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2>
     
    4142                </div>
    4243
    43                 <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
     44                <p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
    4445
    4546            </div>
  • trunk/wp-content/themes/default/search.php

    r3517 r5149  
    1919                <small><?php the_time('l, F jS, Y') ?></small>
    2020
    21                 <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
     21                <p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
    2222            </div>
    2323
  • trunk/wp-includes/category-template.php

    r5111 r5149  
    3939    }
    4040    return apply_filters('category_link', $catlink, $category_id);
     41}
     42
     43function get_tag_link( $tag_id ) {
     44    global $wp_rewrite;
     45    $catlink = $wp_rewrite->get_category_permastruct();
     46
     47    $category = &get_category($tag_id);
     48    $category_nicename = $category->category_nicename;
     49
     50    if ( empty($catlink) ) {
     51        $file = get_option('home') . '/';
     52        $catlink = $file . '?tag=' . $category_nicename;
     53    } else {
     54
     55        $catlink = str_replace('%tag%', $category_nicename, $catlink);
     56        $catlink = get_option('home') . user_trailingslashit($catlink, 'category');
     57    }
     58    return apply_filters('tag_link', $catlink, $category_id);
    4159}
    4260
     
    183201    $return = $before;
    184202    foreach ( $tags as $tag )
    185         $tag_links[] = '<a href="' . get_category_link($tag->cat_ID) . '">' . $tag->cat_name . '</a>';
     203        $tag_links[] = '<a href="' . get_tag_link($tag->cat_ID) . '">' . $tag->cat_name . '</a>';
    186204
    187205    $tag_links = join( $sep, $tag_links );
  • trunk/wp-includes/category.php

    r5119 r5149  
    207207}
    208208
     209function get_category_by_slug( $slug  ) {
     210    global $wpdb;
     211    $slug = sanitize_title( $slug );
     212    if ( empty( $slug ) )
     213        return false;
     214    $category = $wpdb->get_var( "SELECT * FROM $wpdb->categories WHERE category_nicename = '$slug' " );
     215    return get_category( $category );
     216}
     217
    209218// Get the ID of a category from its name
    210219function get_cat_ID($cat_name='General') {
  • trunk/wp-includes/classes.php

    r5051 r5149  
    22
    33class WP {
    4     var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots');
     4    var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots');
    55
    66    var $private_query_vars = array('offset', 'posts_per_page', 'posts_per_archive_page', 'what_to_show', 'showposts', 'nopaging', 'post_type');
  • trunk/wp-includes/query.php

    r5087 r5149  
    8484        return true;
    8585
     86    return false;
     87}
     88
     89function is_tag( $slug = '' ) {
     90    global $wp_query;
     91    if ( !$wp_query->is_tag )
     92        return false;
     93
     94    if ( empty( $slug ) )
     95        return true;
     96
     97    $cat_obj = $wp_query->get_queried_object();
     98    if ( $category == $cat_obj->category_nicename )
     99        return true;
    86100    return false;
    87101}
     
    306320    var $is_author = false;
    307321    var $is_category = false;
     322    var $is_tag = false;
    308323    var $is_search = false;
    309324    var $is_feed = false;
     
    330345        $this->is_author = false;
    331346        $this->is_category = false;
     347        $this->is_tag = false;
    332348        $this->is_search = false;
    333349        $this->is_feed = false;
     
    384400            , 'w'
    385401            , 'category_name'
     402            , 'tag'
    386403            , 'author_name'
    387404            , 'feed'
     
    532549            }
    533550
     551            if (  '' != $qv['tag'] )
     552                $this->is_tag = true;
     553
    534554            if ( empty($qv['author']) || ($qv['author'] == '0') ) {
    535555                $this->is_author = false;
     
    542562            }
    543563
    544             if ( ($this->is_date || $this->is_author || $this->is_category) )
     564            if ( ($this->is_date || $this->is_author || $this->is_category || $this->is_tag ) )
    545565                $this->is_archive = true;
    546566        }
     
    838858            $out_cats = substr($out_cats, 0, -2);
    839859            if ( strlen($in_cats) > 0 )
    840                 $in_cats = " AND $wpdb->post2cat.category_id IN ($in_cats)";
     860                $in_cats = " AND $wpdb->post2cat.category_id IN ($in_cats) AND rel_type = 'category' ";
    841861            if ( strlen($out_cats) > 0 ) {
    842862                $ids = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE $wpdb->post2cat.category_id IN ($out_cats)");
     
    855875        }
    856876
     877        if ( '' != $q['tag'] ) {
     878            $reqcat= get_category_by_slug( $q['tag'] );
     879            if ( !empty($reqcat) )
     880                $reqcat = $reqcat->cat_ID;
     881            else
     882                $reqcat = 0;
     883
     884            $q['cat'] = $reqcat;
     885
     886            $tables = ", $wpdb->post2cat, $wpdb->categories";
     887            $join = " LEFT JOIN $wpdb->post2cat ON ($wpdb->posts.ID = $wpdb->post2cat.post_id) LEFT JOIN $wpdb->categories ON ($wpdb->post2cat.category_id = $wpdb->categories.cat_ID) ";
     888            $whichcat = " AND category_id IN ({$q['cat']}) AND rel_type = 'tag' ";
     889            $groupby = "{$wpdb->posts}.ID";
     890        }
     891
    857892        // Category stuff for nice URLs
    858893        if ( '' != $q['category_name'] ) {
     
    882917            $tables = ", $wpdb->post2cat, $wpdb->categories";
    883918            $join = " LEFT JOIN $wpdb->post2cat ON ($wpdb->posts.ID = $wpdb->post2cat.post_id) LEFT JOIN $wpdb->categories ON ($wpdb->post2cat.category_id = $wpdb->categories.cat_ID) ";
    884             $whichcat = " AND category_id IN ({$q['cat']}, ";
     919            $whichcat = " AND category_id IN ({$q['cat']} ";
    885920            $whichcat .= get_category_children($q['cat'], '', ', ');
    886921            $whichcat = substr($whichcat, 0, -2);
    887             $whichcat .= ")";
     922            $whichcat .= ") AND rel_type = 'category'";
    888923            $groupby = "{$wpdb->posts}.ID";
    889924        }
     925
     926
    890927
    891928        // Author/user stuff
  • trunk/wp-includes/template-loader.php

    r5104 r5149  
    3434        return;
    3535    } else if ( is_category() && $template = get_category_template()) {
     36        include($template);
     37        return;
     38    } else if ( is_tag() && $template = get_tag_template()) {
    3639        include($template);
    3740        return;
  • trunk/wp-includes/theme.php

    r5087 r5149  
    329329}
    330330
     331function get_tag_template() {
     332    $template = '';
     333    if ( file_exists(TEMPLATEPATH . "/tag-" . get_query_var('tag') . '.php') )
     334        $template = TEMPLATEPATH . "/tag-" . get_query_var('tag') . '.php';
     335    elseif ( file_exists(TEMPLATEPATH . "/tag.php") )
     336        $template = TEMPLATEPATH . "/tag.php";
     337
     338    return apply_filters('tag_template', $template);
     339}
     340
     341
    331342function get_date_template() {
    332343    return get_query_template('date');
Note: See TracChangeset for help on using the changeset viewer.