How to Create Custom RSS Feeds in WordPress

Learn how to modify the default WordPress RSS Feeds and create a custom RSS Feed using clean, efficient snippets from WPCodeBox.

Meet WPCodeBox: The Best Code Snippets Plugin for WordPress
faces
Join thousands of developers and agencies who are working better and faster using WPCodeBox

WordPress automatically generates an RSS feed that publishes your latest posts. This standard solution works for general purposes but offers limited customization options.

The default feed cannot filter content by specific criteria, and you might need separate feeds for podcasts, product updates, or email newsletter segments.

In this article, I’ll share how to create custom RSS feeds in WordPress for your specific needs without technical complexity.

Why Create a Custom RSS Feed?

WordPress default RSS feeds only include standard blog posts from your site. They lack flexibility for content filtering, so you cannot select specific categories, custom post types, or featured content for different audiences or external partners.

default RSS feed in WordPress

Standard feeds have limitations beyond just basic formatting options. They don’t include custom fields, properly structured featured images, or additional metadata that many email services and partners require. This means your feeds lack the extra information that makes content truly useful in different contexts.

Custom feeds solve these limitations by giving you complete control. It lets you create dedicated feeds for podcasts, products, or events with proper metadata, featured images, and formatted content. You can also enable selective sharing that lets you distribute specific content without exposing your entire catalog.

How to Create a Custom WordPress RSS Feed

A custom RSS feed gives you complete control over your content. You can create feeds for specific categories, custom post types, or any content you want to share. While there are specialized RSS feed plugins available, they often add unnecessary overhead to your WordPress installation. A lightweight code snippet provides the same functionality without the bloat.

Now, let’s look at the code snippet that creates a custom RSS feed on your WordPress site:

add_action('init', function() {
    add_feed('custom-feed', 'custom_rss_feed_callback');
});

function custom_rss_feed_callback() {
    // Set the correct content type for RSS
    header('Content-Type: application/rss+xml; charset=' . get_option('blog_charset'), true);
    
    // Query your custom content
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 10,
        'orderby' => 'date',
        'order' => 'DESC'
    );
    
    $query = new WP_Query($args);
    
    // Output the RSS feed XML structure
    echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
    ?>
    <rss version="2.0">
        <channel>
            <title><?php bloginfo_rss('name'); ?> - Custom Feed</title>
            <link><?php bloginfo_rss('url'); ?></link>
            <description><?php bloginfo_rss('description'); ?></description>
            <language><?php bloginfo_rss('language'); ?></language>
            <?php while($query->have_posts()) : $query->the_post(); ?>
            <item>
                <title><?php the_title_rss(); ?></title>
                <link><?php the_permalink_rss(); ?></link>
                <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
                <description><![CDATA[<?php the_excerpt(); ?>]]></description>
            </item>
            <?php endwhile; ?>
        </channel>
    </rss>
    <?php
    wp_reset_postdata();
}

This snippet registers a new custom RSS feed on your WordPress site. The feed becomes accessible yoursite.com/feed/custom-feed and displays your latest posts in a valid RSS format.

You can modify the $args array to filter content by category, custom post type, or any WordPress query parameter. Replace ‘custom-feed’ in both locations to create feeds with different names for various purposes. The XML structure follows the standard RSS 2.0 format that all feed readers can parse correctly.

After adding this snippet, you’ll have a new custom RSS feed that is ready for subscribers. You can share the feed URL with email services, podcast directories, or external partners for content syndication.

Step-by-Step Guide to Adding the RSS Feed Snippet Using WPCodeBox

Editing your theme’s functions.php file directly to add snippets puts your entire site at risk. A single typo can trigger white screens or fatal errors that take your site offline. Theme updates also wipe out your custom code, forcing you to recreate everything.

WPCodeBox solves these problems by giving you a safe, controlled environment for managing all your WordPress code. It provides an intelligent code editor that protects your site from broken code. It detects most syntax errors and automatically disables problematic snippets before they cause issues. You also get WordPress autocomplete, documentation on hover, and smart code suggestions that help you write faster.

wpcodebox snippet plugin

WPCodeBox even comes with cloud storage that allows you to save snippets to the cloud and sync them across multiple WordPress sites. It also lets you turn snippets into standalone plugins, which makes handing off projects to clients much simpler. Plus, the condition builder lets you control exactly where and when each snippet executes.

Now that you understand why WPCodeBox is a better way to add snippets, let’s walk through adding the custom RSS snippet to your site:

  1. Install and activate WPCodeBox on your WordPress site through the plugins menu.
  2. Navigate to WPCodeBox 2 and click the “Add New Snippet” button to create a new snippet.
  3. Enter a descriptive name for your snippet, such as “Custom RSS Feed,” which helps you identify it later.
  4. Copy the entire code block and paste it into the code editor area.
  5. Set the following from the configuration panel:
    • Type: PHP Snippet
    • How to run the snippet: Always (On Page Load)
    • Where to insert the snippet: Plugins Loaded (Default)
  6. Click the Save button to store your snippet in a safe, disabled state to prevent any accidental errors.
  7. Toggle the snippet to “Enabled” to activate your custom RSS feed.
custom RSS feed snippet in WPCodeBox

After you enable the snippet, navigate to Settings > Permalinks in your WordPress dashboard and click Save Changes to flush your permalink rewrite rules.

flush permalink rewrite rules

Your custom RSS feed is now active and accessible at yoursite.com/feed/custom-feed. You can verify it by visiting the URL in your browser.

Advanced: Customizing Your WordPress RSS Feeds

Sometimes you need to modify existing feed data rather than creating a new feed from scratch. WordPress RSS feeds work well out of the box, but they lack features that make your content more engaging. Small additions like featured images or content filtering improve how your feeds display in email clients and RSS readers.

We’ll be sharing the snippets that you can add to WPCodeBox using the same steps as the custom RSS feed section.

How to Add Featured Images to RSS Feeds

WordPress default RSS feeds can include your full post content with HTML formatting, but they don’t include featured images as separate metadata elements. This means email services and feed readers may not display your featured images properly.

Adding featured images as structured media elements makes your content more visually appealing and increases click-through rates, leading to better engagement.

Let’s look at the code snippet that adds featured images to your RSS feeds:

<?php 
function featuredtoRSS($content) {
global $post;
if ( has_post_thumbnail( $post->ID ) ){
$content = '<div>' . get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => 'margin-bottom: 15px;' ) ) . '</div>' . $content;
}
return $content;
}
 
add_filter('the_excerpt_rss', 'featuredtoRSS');
add_filter('the_content_feed', 'featuredtoRSS');

This snippet hooks into the RSS feed output and adds the featured image to each post item. The image appears before your content in a format that most feed readers and email services can display. You can adjust the image size by changing 'full' to other WordPress image sizes, like 'large' or 'medium'.

Your feed will automatically include featured images for all posts that have them assigned.

rss feed with featured image

How to Exclude Specific Categories from RSS

You might want to hide certain content from your public RSS feed. Internal updates, “uncategorized” posts, or premium content don’t need to appear in your feed. Selective sharing keeps your public feed focused on valuable content for subscribers.

Here’s the snippet that excludes specific categories from your RSS feed:

/*
 * Exclude specific categories from main RSS feed
 * Replace category IDs with the ones you want to hide
 */
add_action('pre_get_posts', function($query) {
    if ($query->is_feed) {
        // Add the category IDs you want to exclude
        $exclude_categories = array(1, 5, 10); // Replace with your category IDs
        
        $query->set('category__not_in', $exclude_categories);
    }
});

This snippet filters the main RSS feed query to exclude posts from specific categories. You can replace the category IDs in the $exclude_categories array with the actual IDs you want to hide. You can find category IDs by visiting Posts > Categories and clicking on a category name to see the ID in the URL.

Here’s how the WordPress admin posts list looks with a new category added:

WP admin post list

Here’s the RSS feed without the posts from the excluded category.

hide posts from certain category in RSS feed

How to Include Custom Fields in RSS Feeds

WordPress default RSS feeds display your post content but exclude custom fields you’ve added to your posts. Custom fields store additional data like product prices, event dates, or author information that subscribers and partners need. Including this data makes your feeds more useful for automated systems and specialized applications.

Now, let’s look at the code snippet that adds custom fields to your RSS feed:

/*
 * Add specific custom fields to the RSS feed content
 */
function add_custom_fields_to_rss_only($content) {
    // Get the current post in the feed loop
    global $post;
    
    // Fetch your custom field values by name
    $custom_select = get_post_meta($post->ID, 'custom_field_select', true);
    $custom_text   = get_post_meta($post->ID, 'custom_field_text', true);
    
    // Prepare a container for your custom data
    $custom_content = '';
    
    // Build HTML output when fields contain data
    if (!empty($custom_select) || !empty($custom_text)) {
        $custom_content .= '<div class="rss-custom-data" style="border-top: 1px solid #ddd; padding-top: 10px; margin-top: 10px;">';
        
        if (!empty($custom_select)) {
            $custom_content .= '<p><strong>Type:</strong> ' . esc_html($custom_select) . '</p>';
        }
        
        if (!empty($custom_text)) {
            $custom_content .= '<p><strong>Description:</strong> ' . esc_html($custom_text) . '</p>';
        }
        
        $custom_content .= '</div>';
    }
    
    // Append the custom data after your existing content
    return $content . $custom_content;
}

// Hook the function into RSS feed output
add_filter('the_excerpt_rss', 'add_custom_fields_to_rss_only');
add_filter('the_content_feed', 'add_custom_fields_to_rss_only');

This snippet appends custom field data to the end of each RSS feed item. It checks for the presence of your specified custom fields and formats them with clear labels and styling. The code only adds HTML when your custom fields contain actual values, keeping your feed clean when data is missing.

You can customize this snippet by replacing ‘custom_field_select’ and ‘custom_field_text’ with your actual custom field names. Add more field variables and if statements to include additional custom fields as needed. The inline styles in the $custom_content variable let you adjust the appearance of your custom data section.

custom field in RSS feed

Bonus: Use Custom Feeds in Your WordPress Dashboard

WordPress displays default news feeds in your dashboard that you might never read. Agencies and developers often prefer showing their own blog content or industry news inside client dashboards. This keeps clients informed about updates while promoting your expertise in their workspace.

Here’s the code snippet that replaces the default dashboard news with a custom RSS feed:

/*
 * Replace WordPress dashboard news with custom RSS feed
 * Removes default widgets and adds your custom feed
 */
add_action('wp_dashboard_setup', 'custom_dashboard_widgets');

function custom_dashboard_widgets() {
    global $wp_meta_boxes;
    
    // Remove unnecessary default dashboard widgets
    unset(
        $wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins'],
        $wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary'],
        $wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']
    );
    
    // Add a custom dashboard widget with RSS feed
    wp_add_dashboard_widget(
        'dashboard_custom_feed',
        'News from Your Site',
        'dashboard_custom_feed_output'
    );
}

function dashboard_custom_feed_output() {
    echo '<div class="rss-widget">';
    wp_widget_rss_output(array(
        'url' => 'https://yoursite.com/feed',
        'title' => 'Latest Updates',
        'items' => 3,
        'show_summary' => 1,
        'show_author' => 0,
        'show_date' => 1,
    ));
    echo '</div>';
}
custom rss feed widget in wp dashboard

Troubleshooting Common WordPress RSS Feed Errors

RSS feeds require strict formatting standards to work correctly. Even small formatting issues can break your feed entirely. Here are some common problems that occur and how you can fix them when they occur.

Fixing “XML Parsing Error”

XML parsing errors typically happen when whitespace or line breaks appear in your PHP files. These invisible characters appear before your RSS feed XML begins, which breaks the entire feed structure. Most feed readers display an error message instead of your content.

The issue often occurs when editing theme files directly. Code snippets added to functions.php sometimes leave extra spaces or blank lines at the top of the file. RSS readers cannot parse XML when unexpected characters appear before the opening tag.

WPCodeBox helps prevent this problem by isolating your code from theme files. The plugin manages snippets separately, so formatting issues stay contained within individual snippets. You can also use the error detection features to catch problems before they affect your live feed.

Feed Not Updating

Your RSS feed might stop updating when caching interferes with the feed generation. Caching plugins store versions of your feed and sometimes display old content to visitors. Browsers also cache RSS feeds, which makes updates appear delayed or missing entirely.

You can force your feed to update by clearing your caching plugin cache. Navigate to your caching plugin settings and clear all caches. Flush the feed URL by accessing it directly in an incognito or private browser window.

Some hosting providers also implement server-level caching that affects RSS feeds. Contact your hosting support if clearing plugin caches doesn’t resolve the issue. They can help you disable feed caching or adjust cache expiration times for your RSS feed URLs.

You can also disable RSS feed caching completely with a simple code snippet:

add_filter('wp_feed_cache_transient_lifetime', function(){
    return 0;
});

This snippet overrides WordPress’s default feed caching behavior by setting the cache lifetime to zero. Your RSS feed will now fetch fresh content every time it’s accessed, eliminating stale feed issues entirely.

More on Creating Custom RSS Feeds in WordPress

Is RSS still relevant in 2026?

RSS feeds still a valuable tool for content distribution and automation. Email marketing services, content aggregators, and automated systems still rely on RSS feeds for content delivery. Many developers and power users prefer RSS for consolidating updates from multiple sources into one interface.

Is RSS feed good for SEO?

RSS feeds provide indirect SEO benefits by helping search engines discover your content faster. Google uses RSS feeds as a supplementary crawling method, similar to XML sitemaps. This helps new posts appear in search results more quickly. Feeds also make it easier for content aggregators to syndicate your posts. These platforms can create backlinks to your site when they publish your content. Backlinks signal authority to search engines and improve your overall search visibility.

How do I import an RSS feed into WordPress?

  1. Navigate to Plugins > Add New and search for “WP RSS Aggregator” in the plugin search bar.
  2. Install and Activate when you see the plugin in the results.
  3. Access the RSS Aggregator settings from your dashboard menu.
  4. This plugin allows you to import and display RSS feeds from other sources on your WordPress site.

More Ways to Customize Your WordPress Website

Related Tutorials

WPCodeBox is a WordPress Code Snippets Manager that allows you to share your WordPress Code Snippets across your sites.