Introduce get_term_feed_link(). Use it in wp_list_categories(). Props blepoxp. see #13058
git-svn-id: http://svn.automattic.com/wordpress/trunk@14711 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
cbc759b3de
commit
8f777718c9
|
@ -1356,7 +1356,7 @@ class Walker_Category extends Walker {
|
||||||
if ( empty($feed_image) )
|
if ( empty($feed_image) )
|
||||||
$link .= '(';
|
$link .= '(';
|
||||||
|
|
||||||
$link .= '<a href="' . get_category_feed_link($category->term_id, $feed_type) . '"';
|
$link .= '<a href="' . get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) . '"';
|
||||||
|
|
||||||
if ( empty($feed) )
|
if ( empty($feed) )
|
||||||
$alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
|
$alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
|
||||||
|
|
|
@ -568,31 +568,64 @@ function get_author_feed_link( $author_id, $feed = '' ) {
|
||||||
* @return string Link to the feed for the category specified by $cat_id.
|
* @return string Link to the feed for the category specified by $cat_id.
|
||||||
*/
|
*/
|
||||||
function get_category_feed_link($cat_id, $feed = '') {
|
function get_category_feed_link($cat_id, $feed = '') {
|
||||||
$cat_id = (int) $cat_id;
|
return get_term_feed_link($cat_id, 'category', $feed);
|
||||||
|
}
|
||||||
|
|
||||||
$category = get_category($cat_id);
|
/**
|
||||||
|
* Retrieve the feed link for a taxonomy.
|
||||||
|
*
|
||||||
|
* Returns a link to the feed for all post in a given term. A specific feed
|
||||||
|
* can be requested or left blank to get the default feed.
|
||||||
|
*
|
||||||
|
* @since 3.0
|
||||||
|
*
|
||||||
|
* @param int $term_id ID of a category.
|
||||||
|
* @param string $taxonomy Optional. Taxonomy of $term_id
|
||||||
|
* @param string $feed Optional. Feed type.
|
||||||
|
* @return string Link to the feed for the taxonomy specified by $term_id and $taxonomy.
|
||||||
|
*/
|
||||||
|
function get_term_feed_link( $term_id, $taxonomy = 'category', $feed = '' ) {
|
||||||
|
global $wp_rewrite;
|
||||||
|
|
||||||
if ( empty($category) || is_wp_error($category) )
|
$term_id = ( int ) $term_id;
|
||||||
|
|
||||||
|
$term = get_term( $term_id, $taxonomy );
|
||||||
|
|
||||||
|
if ( empty( $term ) || is_wp_error( $term ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( empty($feed) )
|
if ( empty( $feed ) )
|
||||||
$feed = get_default_feed();
|
$feed = get_default_feed();
|
||||||
|
|
||||||
$permalink_structure = get_option('permalink_structure');
|
$permalink_structure = get_option( 'permalink_structure' );
|
||||||
|
|
||||||
if ( '' == $permalink_structure ) {
|
if ( '' == $permalink_structure ) {
|
||||||
$link = home_url("?feed=$feed&cat=" . $cat_id);
|
if ( 'category' == $taxonomy ) {
|
||||||
|
$link = home_url("?feed=$feed&cat=$term_id");
|
||||||
|
}
|
||||||
|
elseif ( 'post_tag' == $taxonomy ) {
|
||||||
|
$link = home_url("?feed=$feed&tag=$term->slug");
|
||||||
} else {
|
} else {
|
||||||
$link = get_category_link($cat_id);
|
$t = get_taxonomy( $taxonomy );
|
||||||
if( $feed == get_default_feed() )
|
$link = home_url("?feed=$feed&$t->query_var=$term->slug");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$link = get_term_link( $term_id, $term->taxonomy );
|
||||||
|
if ( $feed == get_default_feed() )
|
||||||
$feed_link = 'feed';
|
$feed_link = 'feed';
|
||||||
else
|
else
|
||||||
$feed_link = "feed/$feed";
|
$feed_link = "feed/$feed";
|
||||||
|
|
||||||
$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
|
$link = trailingslashit( $link ) . user_trailingslashit( $feed_link, 'feed' );
|
||||||
}
|
}
|
||||||
|
|
||||||
$link = apply_filters('category_feed_link', $link, $feed);
|
if ( 'category' == $taxonomy )
|
||||||
|
$link = apply_filters( 'category_feed_link', $link, $feed );
|
||||||
|
elseif ( 'post_tag' == $taxonomy )
|
||||||
|
$link = apply_filters( 'category_feed_link', $link, $feed );
|
||||||
|
else
|
||||||
|
$link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
|
||||||
|
|
||||||
|
|
||||||
return $link;
|
return $link;
|
||||||
}
|
}
|
||||||
|
@ -607,32 +640,7 @@ function get_category_feed_link($cat_id, $feed = '') {
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function get_tag_feed_link($tag_id, $feed = '') {
|
function get_tag_feed_link($tag_id, $feed = '') {
|
||||||
$tag_id = (int) $tag_id;
|
return get_term_feed_link($tag_id, 'post_tag', $feed);
|
||||||
|
|
||||||
$tag = get_tag($tag_id);
|
|
||||||
|
|
||||||
if ( empty($tag) || is_wp_error($tag) )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
$permalink_structure = get_option('permalink_structure');
|
|
||||||
|
|
||||||
if ( empty($feed) )
|
|
||||||
$feed = get_default_feed();
|
|
||||||
|
|
||||||
if ( '' == $permalink_structure ) {
|
|
||||||
$link = home_url("?feed=$feed&tag=" . $tag->slug);
|
|
||||||
} else {
|
|
||||||
$link = get_tag_link($tag->term_id);
|
|
||||||
if ( $feed == get_default_feed() )
|
|
||||||
$feed_link = 'feed';
|
|
||||||
else
|
|
||||||
$feed_link = "feed/$feed";
|
|
||||||
$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
|
|
||||||
}
|
|
||||||
|
|
||||||
$link = apply_filters('tag_feed_link', $link, $feed);
|
|
||||||
|
|
||||||
return $link;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue