WordPress Version: 3.9
/**
* Retrieve all of the post categories, formatted for use in feeds.
*
* All of the categories for the current post in the feed loop, will be
* retrieved and have feed markup added, so that they can easily be added to the
* RSS2, Atom, or RSS1 and RSS0.91 RDF feeds.
*
* @since 2.1.0
*
* @param string $type Optional, default is the type returned by get_default_feed().
* @return string All of the post categories for displaying in the feed.
*/
function get_the_category_rss($type = null)
{
if (empty($type)) {
$type = get_default_feed();
}
$categories = get_the_category();
$tags = get_the_tags();
$the_list = '';
$cat_names = array();
$filter = 'rss';
if ('atom' == $type) {
$filter = 'raw';
}
if (!empty($categories)) {
foreach ((array) $categories as $category) {
$cat_names[] = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter);
}
}
if (!empty($tags)) {
foreach ((array) $tags as $tag) {
$cat_names[] = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter);
}
}
$cat_names = array_unique($cat_names);
foreach ($cat_names as $cat_name) {
if ('rdf' == $type) {
$the_list .= "\t\t<dc:subject><![CDATA[{$cat_name}]]></dc:subject>\n";
} elseif ('atom' == $type) {
/** This filter is documented in wp-includes/feed.php */
$the_list .= sprintf('<category scheme="%1$s" term="%2$s" />', esc_attr(apply_filters('get_bloginfo_rss', get_bloginfo('url'))), esc_attr($cat_name));
} else {
$the_list .= "\t\t<category><![CDATA[" . @html_entity_decode($cat_name, ENT_COMPAT, get_option('blog_charset')) . "]]></category>\n";
}
}
/**
* Filter all of the post categories for display in a feed.
*
* @since 1.2.0
*
* @param string $the_list All of the RSS post categories.
* @param string $type Type of feed. Possible values include 'rss2', 'atom'.
* Default 'rss2'.
*/
return apply_filters('the_category_rss', $the_list, $type);
}