WordPress.org

Make WordPress Core

Ticket #13058: 13058-2.diff

File 13058-2.diff, 2.9 KB (added by blepoxp, 8 years ago)
  • wp-includes/link-template.php

     
    568568 * @return string Link to the feed for the category specified by $cat_id.
    569569*/
    570570function get_category_feed_link($cat_id, $feed = '') {
    571         $cat_id = (int) $cat_id;
     571        return get_taxonomy_feed_link($cat_id, 'category', $feed);
     572}
    572573
    573         $category = get_category($cat_id);
     574/**
     575 * Retrieve the feed link for a taxonomy.
     576 *
     577 * Returns a link to the feed for all post in a given taxonomy. A specific feed
     578 * can be requested or left blank to get the default feed.
     579 *
     580 * @since 3.0
     581 *
     582 * @param int $term_id ID of a category.
     583 * @param string $taxonomy Optional. Taxonomy of $term_id
     584 * @param string $feed Optional. Feed type.
     585 * @return string Link to the feed for the taxonomy specified by $term_id and $taxonomy.
     586*/
     587function get_taxonomy_feed_link($term_id, $taxonomy='category', $feed = '') {
     588        global $wp_rewrite;
     589       
     590        $term_id = ( int ) $term_id;
    574591
    575         if ( empty($category) || is_wp_error($category) )
     592        $term = get_term( $term_id, $taxonomy  );
     593       
     594        if ( empty( $term ) || is_wp_error( $term ) )
    576595                return false;
    577596
    578         if ( empty($feed) )
     597        if ( empty( $feed ) )
    579598                $feed = get_default_feed();
    580599
    581         $permalink_structure = get_option('permalink_structure');
     600        $permalink_structure = get_option( 'permalink_structure' );
    582601
    583602        if ( '' == $permalink_structure ) {
    584                 $link = home_url("?feed=$feed&cat=" . $cat_id);
    585         } else {
    586                 $link = get_category_link($cat_id);
     603                if ( 'category' == $taxonomy ){
     604                        $link = home_url("?feed=$feed&cat=" . $term_id);
     605                }else{
     606                        $t = get_taxonomy($taxonomy);
     607                        $link = home_url("?feed=$feed&" . $t->query_var . "=" . $term->slug );
     608                }
     609       
     610        }else{
     611                $link = get_term_link( $term_id, $term->taxonomy );
    587612                if( $feed == get_default_feed() )
    588613                        $feed_link = 'feed';
    589614                else
    590615                        $feed_link = "feed/$feed";
    591616
    592                 $link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
     617                $link = trailingslashit( $link ) . user_trailingslashit( $feed_link, 'feed' );
    593618        }
    594619
    595         $link = apply_filters('category_feed_link', $link, $feed);
     620        if ( 'category' == $taxonomy )
     621                $link = apply_filters( 'category_feed_link', $link, $feed );
     622        else
     623                $link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
     624       
    596625
    597626        return $link;
    598627}
  • wp-includes/classes.php

     
    14521452                        if ( empty($feed_image) )
    14531453                                $link .= '(';
    14541454
    1455                         $link .= '<a href="' . get_category_feed_link($category->term_id, $feed_type) . '"';
     1455                        $link .= '<a href="' . get_taxonomy_feed_link( $category->term_id, $category->taxonomy, $feed_type ) . '"';
    14561456
    14571457                        if ( empty($feed) )
    14581458                                $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';