<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[15825] trunk/wp-includes: Merge Category/Tag URL creation/
 rewriting into general Taxonomy system.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/15825">15825</a></dd>
<dt>Author</dt> <dd>dd32</dd>
<dt>Date</dt> <dd>2010-10-17 05:41:22 +0000 (Sun, 17 Oct 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge Category/Tag URL creation/rewriting into general Taxonomy system. Removes the legacy handling for these url's. See <a href="http://trac.wordpress.org/ticket/12659">#12659</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpincludescategorytemplatephp">trunk/wp-includes/category-template.php</a></li>
<li><a href="#trunkwpincludesclassesphp">trunk/wp-includes/classes.php</a></li>
<li><a href="#trunkwpincludesqueryphp">trunk/wp-includes/query.php</a></li>
<li><a href="#trunkwpincludesrewritephp">trunk/wp-includes/rewrite.php</a></li>
<li><a href="#trunkwpincludestaxonomyphp">trunk/wp-includes/taxonomy.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpincludescategorytemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/category-template.php (15824 => 15825)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/category-template.php        2010-10-17 04:36:26 UTC (rev 15824)
+++ trunk/wp-includes/category-template.php        2010-10-17 05:41:22 UTC (rev 15825)
</span><span class="lines">@@ -10,32 +10,13 @@
</span><span class="cx">  * Retrieve category link URL.
</span><span class="cx">  *
</span><span class="cx">  * @since 1.0.0
</span><del>- * @uses apply_filters() Calls 'category_link' filter on category link and category ID.
</del><ins>+ * @see get_term_link()
</ins><span class="cx">  *
</span><span class="cx">  * @param int $category_id Category ID.
</span><span class="cx">  * @return string
</span><span class="cx">  */
</span><span class="cx"> function get_category_link( $category_id ) {
</span><del>-        global $wp_rewrite;
-        $catlink = $wp_rewrite-&gt;get_category_permastruct();
-
-        if ( empty( $catlink ) ) {
-                $catlink = home_url('?cat=' . $category_id);
-        } else {
-                $category = &amp;get_category( $category_id );
-                if ( is_wp_error( $category ) )
-                        return $category;
-                $category_nicename = $category-&gt;slug;
-
-                if ( $category-&gt;parent == $category_id ) // recursive recursion
-                        $category-&gt;parent = 0;
-                elseif ($category-&gt;parent != 0 )
-                        $category_nicename = get_category_parents( $category-&gt;parent, false, '/', true ) . $category_nicename;
-
-                $catlink = str_replace( '%category%', $category_nicename, $catlink );
-                $catlink = home_url( user_trailingslashit( $catlink, 'category' ) );
-        }
-        return apply_filters( 'category_link', $catlink, $category_id );
</del><ins>+        return get_term_link((int)$category_id, 'category');
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -770,28 +751,13 @@
</span><span class="cx">  * Retrieve the link to the tag.
</span><span class="cx">  *
</span><span class="cx">  * @since 2.3.0
</span><del>- * @uses apply_filters() Calls 'tag_link' with tag link and tag ID as parameters.
</del><ins>+ * @see get_term_link()
</ins><span class="cx">  *
</span><span class="cx">  * @param int $tag_id Tag (term) ID.
</span><span class="cx">  * @return string
</span><span class="cx">  */
</span><span class="cx"> function get_tag_link( $tag_id ) {
</span><del>-        global $wp_rewrite;
-        $taglink = $wp_rewrite-&gt;get_tag_permastruct();
-
-        $tag = &amp;get_term( $tag_id, 'post_tag' );
-        if ( is_wp_error( $tag ) )
-                return $tag;
-        $slug = $tag-&gt;slug;
-
-        if ( empty( $taglink ) ) {
-                $file = get_option( 'home' ) . '/';
-                $taglink = $file . '?tag=' . $slug;
-        } else {
-                $taglink = str_replace( '%tag%', $slug, $taglink );
-                $taglink = get_option( 'home' ) . user_trailingslashit( $taglink, 'category' );
-        }
-        return apply_filters( 'tag_link', $taglink, $tag_id );
</del><ins>+        return get_term_link( (int)$tag_id, 'post_tag');
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span></span></pre></div>
<a id="trunkwpincludesclassesphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/classes.php (15824 => 15825)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/classes.php        2010-10-17 04:36:26 UTC (rev 15824)
+++ trunk/wp-includes/classes.php        2010-10-17 05:41:22 UTC (rev 15825)
</span><span class="lines">@@ -384,7 +384,7 @@
</span><span class="cx">                 foreach( (array) $headers as $name =&gt; $field_value )
</span><span class="cx">                         @header(&quot;{$name}: {$field_value}&quot;);
</span><span class="cx"> 
</span><del>-                if ($exit_required)
</del><ins>+                if ( $exit_required )
</ins><span class="cx">                         exit();
</span><span class="cx"> 
</span><span class="cx">                 do_action_ref_array('send_headers', array(&amp;$this));
</span><span class="lines">@@ -1903,4 +1903,4 @@
</span><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-?&gt;
</del><ins>+?&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesqueryphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/query.php (15824 => 15825)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/query.php        2010-10-17 04:36:26 UTC (rev 15824)
+++ trunk/wp-includes/query.php        2010-10-17 05:41:22 UTC (rev 15825)
</span><span class="lines">@@ -1457,13 +1457,15 @@
</span><span class="cx">                                         'operator' =&gt; 'IN'
</span><span class="cx">                                 );
</span><span class="cx"> 
</span><ins>+                                if ( $t-&gt;rewrite['hierarchical'] ) {
+                                        $q[$t-&gt;query_var] = basename($q[$t-&gt;query_var]);
+                                        if ( $taxonomy == $q['taxonomy'] )
+                                                $q['term'] = basename($q['term']);
+                                }
+
</ins><span class="cx">                                 $term = $q[$t-&gt;query_var];
</span><span class="cx"> 
</span><del>-                                if ( $t-&gt;rewrite['hierarchical'] ) {
-                                        $tax_query[] = array_merge( $tax_query_defaults, array(
-                                                'terms' =&gt; array( basename( $term ) )
-                                        ) );
-                                } elseif ( strpos($term, '+') !== false ) {
</del><ins>+                                if ( strpos($term, '+') !== false ) {
</ins><span class="cx">                                         $terms = preg_split( '/[+\s]+/', $term );
</span><span class="cx">                                         foreach ( $terms as $term ) {
</span><span class="cx">                                                 $tax_query[] = array_merge( $tax_query_defaults, array(
</span></span></pre></div>
<a id="trunkwpincludesrewritephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/rewrite.php (15824 => 15825)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/rewrite.php        2010-10-17 04:36:26 UTC (rev 15824)
+++ trunk/wp-includes/rewrite.php        2010-10-17 05:41:22 UTC (rev 15825)
</span><span class="lines">@@ -381,42 +381,6 @@
</span><span class="cx">         var $use_trailing_slashes;
</span><span class="cx"> 
</span><span class="cx">         /**
</span><del>-         * Customized or default category permalink base ( example.com/xx/tagname ).
-         *
-         * @since 1.5.0
-         * @access private
-         * @var string
-         */
-        var $category_base;
-
-        /**
-         * Customized or default tag permalink base ( example.com/xx/tagname ).
-         *
-         * @since 2.3.0
-         * @access private
-         * @var string
-         */
-        var $tag_base;
-
-        /**
-         * Permalink request structure for categories.
-         *
-         * @since 1.5.0
-         * @access private
-         * @var string
-         */
-        var $category_structure;
-
-        /**
-         * Permalink request structure for tags.
-         *
-         * @since 2.3.0
-         * @access private
-         * @var string
-         */
-        var $tag_structure;
-
-        /**
</del><span class="cx">          * Permalink author request base ( example.com/author/authorname ).
</span><span class="cx">          *
</span><span class="cx">          * @since 1.5.0
</span><span class="lines">@@ -681,8 +645,6 @@
</span><span class="cx">                                         '([0-9]{1,2})',
</span><span class="cx">                                         '([^/]+)',
</span><span class="cx">                                         '([0-9]+)',
</span><del>-                                        '(.+?)',
-                                        '(.+?)',
</del><span class="cx">                                         '([^/]+)',
</span><span class="cx">                                         '([^/]+?)',
</span><span class="cx">                                         '(.+)'
</span><span class="lines">@@ -705,8 +667,6 @@
</span><span class="cx">                                         'second=',
</span><span class="cx">                                         'name=',
</span><span class="cx">                                         'p=',
</span><del>-                                        'category_name=',
-                                        'tag=',
</del><span class="cx">                                         'author_name=',
</span><span class="cx">                                         'pagename=',
</span><span class="cx">                                         's='
</span><span class="lines">@@ -1028,22 +988,7 @@
</span><span class="cx">          * @return bool|string False on failure. Category permalink structure.
</span><span class="cx">          */
</span><span class="cx">         function get_category_permastruct() {
</span><del>-                if ( isset($this-&gt;category_structure) )
-                        return $this-&gt;category_structure;
-
-                if ( empty($this-&gt;permalink_structure) ) {
-                        $this-&gt;category_structure = '';
-                        return false;
-                }
-
-                if ( empty($this-&gt;category_base) )
-                        $this-&gt;category_structure = trailingslashit( $this-&gt;front . 'category' );
-                else
-                        $this-&gt;category_structure = trailingslashit( '/' . $this-&gt;root . $this-&gt;category_base );
-
-                $this-&gt;category_structure .= '%category%';
-
-                return $this-&gt;category_structure;
</del><ins>+                return $this-&gt;get_extra_permastruct('category');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         /**
</span><span class="lines">@@ -1060,22 +1005,7 @@
</span><span class="cx">          * @return bool|string False on failure. Tag permalink structure.
</span><span class="cx">          */
</span><span class="cx">         function get_tag_permastruct() {
</span><del>-                if ( isset($this-&gt;tag_structure) )
-                        return $this-&gt;tag_structure;
-
-                if ( empty($this-&gt;permalink_structure) ) {
-                        $this-&gt;tag_structure = '';
-                        return false;
-                }
-
-                if ( empty($this-&gt;tag_base) )
-                        $this-&gt;tag_structure = trailingslashit( $this-&gt;front . 'tag' );
-                else
-                        $this-&gt;tag_structure = trailingslashit( '/' . $this-&gt;root . $this-&gt;tag_base );
-
-                $this-&gt;tag_structure .= '%tag%';
-
-                return $this-&gt;tag_structure;
</del><ins>+                return $this-&gt;get_extra_permastruct('post_tag');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         /**
</span><span class="lines">@@ -1613,14 +1543,6 @@
</span><span class="cx">                 $search_rewrite = $this-&gt;generate_rewrite_rules($search_structure, EP_SEARCH);
</span><span class="cx">                 $search_rewrite = apply_filters('search_rewrite_rules', $search_rewrite);
</span><span class="cx"> 
</span><del>-                // Categories
-                $category_rewrite = $this-&gt;generate_rewrite_rules($this-&gt;get_category_permastruct(), EP_CATEGORIES);
-                $category_rewrite = apply_filters('category_rewrite_rules', $category_rewrite);
-
-                // Tags
-                $tag_rewrite = $this-&gt;generate_rewrite_rules($this-&gt;get_tag_permastruct(), EP_TAGS);
-                $tag_rewrite = apply_filters('tag_rewrite_rules', $tag_rewrite);
-
</del><span class="cx">                 // Authors
</span><span class="cx">                 $author_rewrite = $this-&gt;generate_rewrite_rules($this-&gt;get_author_permastruct(), EP_AUTHORS);
</span><span class="cx">                 $author_rewrite = apply_filters('author_rewrite_rules', $author_rewrite);
</span><span class="lines">@@ -1630,18 +1552,24 @@
</span><span class="cx">                 $page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
</span><span class="cx"> 
</span><span class="cx">                 // Extra permastructs
</span><del>-                foreach ( $this-&gt;extra_permastructs as $permastruct ) {
</del><ins>+                foreach ( $this-&gt;extra_permastructs as $permastructname =&gt; $permastruct ) {
</ins><span class="cx">                         if ( is_array($permastruct) )
</span><del>-                                $this-&gt;extra_rules_top = array_merge($this-&gt;extra_rules_top, $this-&gt;generate_rewrite_rules($permastruct[0], $permastruct[1]));
</del><ins>+                                $rules = $this-&gt;generate_rewrite_rules($permastruct[0], $permastruct[1]);
</ins><span class="cx">                         else
</span><del>-                                $this-&gt;extra_rules_top = array_merge($this-&gt;extra_rules_top, $this-&gt;generate_rewrite_rules($permastruct, EP_NONE));
</del><ins>+                                $rules = $this-&gt;generate_rewrite_rules($permastruct, EP_NONE);
+
+                        $rules = apply_filters($permastructname . '_rewrite_rules', $rules);
+                        if ( 'post_tag' == $permastructname )
+                                $rules = apply_filters('tag_rewrite_rules', $rules);
+
+                        $this-&gt;extra_rules_top = array_merge($this-&gt;extra_rules_top, $rules);
</ins><span class="cx">                 }
</span><span class="cx"> 
</span><span class="cx">                 // Put them together.
</span><span class="cx">                 if ( $this-&gt;use_verbose_page_rules )
</span><del>-                        $this-&gt;rules = array_merge($this-&gt;extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $tag_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $this-&gt;extra_rules);
</del><ins>+                        $this-&gt;rules = array_merge($this-&gt;extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $this-&gt;extra_rules);
</ins><span class="cx">                 else
</span><del>-                        $this-&gt;rules = array_merge($this-&gt;extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $tag_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this-&gt;extra_rules);
</del><ins>+                        $this-&gt;rules = array_merge($this-&gt;extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this-&gt;extra_rules);
</ins><span class="cx"> 
</span><span class="cx">                 do_action_ref_array('generate_rewrite_rules', array(&amp;$this));
</span><span class="cx">                 $this-&gt;rules = apply_filters('rewrite_rules_array', $this-&gt;rules);
</span><span class="lines">@@ -1978,9 +1906,6 @@
</span><span class="cx">                 $this-&gt;root = '';
</span><span class="cx">                 if ( $this-&gt;using_index_permalinks() )
</span><span class="cx">                         $this-&gt;root = $this-&gt;index . '/';
</span><del>-                $this-&gt;category_base = get_option( 'category_base' );
-                $this-&gt;tag_base = get_option( 'tag_base' );
-                unset($this-&gt;category_structure);
</del><span class="cx">                 unset($this-&gt;author_structure);
</span><span class="cx">                 unset($this-&gt;date_structure);
</span><span class="cx">                 unset($this-&gt;page_structure);
</span><span class="lines">@@ -2032,7 +1957,7 @@
</span><span class="cx">          * @param string $category_base Category permalink structure base.
</span><span class="cx">          */
</span><span class="cx">         function set_category_base($category_base) {
</span><del>-                if ( $category_base != $this-&gt;category_base ) {
</del><ins>+                if ( $category_base != get_option('category_base') ) {
</ins><span class="cx">                         update_option('category_base', $category_base);
</span><span class="cx">                         $this-&gt;init();
</span><span class="cx">                 }
</span><span class="lines">@@ -2051,7 +1976,7 @@
</span><span class="cx">          * @param string $tag_base Tag permalink structure base.
</span><span class="cx">          */
</span><span class="cx">         function set_tag_base( $tag_base ) {
</span><del>-                if ( $tag_base != $this-&gt;tag_base ) {
</del><ins>+                if ( $tag_base != get_option( 'tag_base') ) {
</ins><span class="cx">                         update_option( 'tag_base', $tag_base );
</span><span class="cx">                         $this-&gt;init();
</span><span class="cx">                 }
</span></span></pre></div>
<a id="trunkwpincludestaxonomyphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/taxonomy.php (15824 => 15825)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/taxonomy.php        2010-10-17 04:36:26 UTC (rev 15824)
+++ trunk/wp-includes/taxonomy.php        2010-10-17 05:41:22 UTC (rev 15825)
</span><span class="lines">@@ -19,7 +19,10 @@
</span><span class="cx">                 'hierarchical' =&gt; true,
</span><span class="cx">                  'update_count_callback' =&gt; '_update_post_term_count',
</span><span class="cx">                 'query_var' =&gt; 'category_name',
</span><del>-                'rewrite' =&gt; false,
</del><ins>+                'rewrite' =&gt; array(
+                                        'hierarchical' =&gt; true,
+                                        'slug' =&gt; get_option('category_base') ? get_option('category_base') : 'category',
+                                        'with_front' =&gt; false),
</ins><span class="cx">                 'public' =&gt; true,
</span><span class="cx">                 'show_ui' =&gt; true,
</span><span class="cx">                 '_builtin' =&gt; true,
</span><span class="lines">@@ -29,7 +32,9 @@
</span><span class="cx">                  'hierarchical' =&gt; false,
</span><span class="cx">                 'update_count_callback' =&gt; '_update_post_term_count',
</span><span class="cx">                 'query_var' =&gt; 'tag',
</span><del>-                'rewrite' =&gt; false,
</del><ins>+                'rewrite' =&gt; array(
+                                        'slug' =&gt; get_option('tag_base') ? get_option('tag_base') : 'tag' ,
+                                        'with_front' =&gt; false),
</ins><span class="cx">                 'public' =&gt; true,
</span><span class="cx">                 'show_ui' =&gt; true,
</span><span class="cx">                 '_builtin' =&gt; true,
</span><span class="lines">@@ -313,7 +318,7 @@
</span><span class="cx">                 ));
</span><span class="cx"> 
</span><span class="cx">                 if ( $args['hierarchical'] &amp;&amp; $args['rewrite']['hierarchical'] )
</span><del>-                        $tag = '(.*?)';
</del><ins>+                        $tag = '(.+?)';
</ins><span class="cx">                 else
</span><span class="cx">                         $tag = '([^/]+)';
</span><span class="cx"> 
</span><span class="lines">@@ -349,7 +354,7 @@
</span><span class="cx">         $wp_taxonomies[$taxonomy] = (object) $args;
</span><span class="cx"> 
</span><span class="cx">         // register callback handling for metabox
</span><del>-         add_filter('wp_ajax_add-'.$taxonomy, '_wp_ajax_add_hierarchical_term');
</del><ins>+         add_filter('wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term');
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -2581,6 +2586,10 @@
</span><span class="cx">  *
</span><span class="cx">  * @since 2.5.0
</span><span class="cx">  *
</span><ins>+ * @uses apply_filters() Calls 'term_link' with term link and term object, and taxonomy parameters.
+ * @uses apply_filters() For the post_tag Taxonomy, Calls 'tag_link' with tag link and tag ID as parameters.
+ * @uses apply_filters() For the category Taxonomy, Calls 'category_link' filter on category link and category ID.
+ *
</ins><span class="cx">  * @param object|int|string $term
</span><span class="cx">  * @param string $taxonomy (optional if $term is object)
</span><span class="cx">  * @return string HTML link to taxonomy term archive
</span><span class="lines">@@ -2604,12 +2613,6 @@
</span><span class="cx"> 
</span><span class="cx">         $taxonomy = $term-&gt;taxonomy;
</span><span class="cx"> 
</span><del>-        // use legacy functions for core taxonomies until they are fully plugged in
-        if ( $taxonomy == 'category' )
-                return get_category_link((int) $term-&gt;term_id);
-        if ( $taxonomy == 'post_tag' )
-                return get_tag_link((int) $term-&gt;term_id);
-
</del><span class="cx">         $termlink = $wp_rewrite-&gt;get_extra_permastruct($taxonomy);
</span><span class="cx"> 
</span><span class="cx">         $slug = $term-&gt;slug;
</span><span class="lines">@@ -2637,6 +2640,12 @@
</span><span class="cx">                 }
</span><span class="cx">                 $termlink = home_url( user_trailingslashit($termlink, 'category') );
</span><span class="cx">         }
</span><ins>+        // Back Compat filters.
+        if ( 'post_tag' == $taxonomy ) 
+                $termlink = apply_filters( 'tag_link', $termlink, $term-&gt;term_id );
+        elseif ( 'category' == $taxonomy )
+                $termlink = apply_filters( 'category_link', $termlink, $term-&gt;term_id );
+
</ins><span class="cx">         return apply_filters('term_link', $termlink, $term, $taxonomy);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>