add_feed( string $feedname, callable $function )

Add a new feed type like /atom1/.


Parameters Parameters

$feedname

(string) (Required) Feed name.

$function

(callable) (Required) Callback to run on feed display.


Top ↑

Return Return

(string) Feed action name.


Top ↑

Source Source

File: wp-includes/rewrite.php

function add_feed( $feedname, $function ) {
	global $wp_rewrite;

	if ( ! in_array( $feedname, $wp_rewrite->feeds ) ) {
		$wp_rewrite->feeds[] = $feedname;
	}

	$hook = 'do_feed_' . $feedname;

	// Remove default function hook.
	remove_action( $hook, $hook );

	add_action( $hook, $function, 10, 2 );

	return $hook;
}


Top ↑

Changelog Changelog

Changelog
Version Description
2.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by Steven Word

    When a new custom feed is added, the endpoint will render using a `Content-Type: application/octet-stream; charset=UTF-8` by default. It would be useful to document working with content types in combination with add_feed().

    For example either:

    function add_custom_feed() {
    	add_feed( 'custom', 'render_custom_feed' );
    }
    add_action( 'init', 'add_custom_feed' );
    
    function render_custom_feed() {
    	header( 'Content-Type: application/rss+xml' );
    	echo 'aye!';
    }
    

    or:

    function add_custom_feed() {
    	add_feed( 'custom', 'render_custom_feed' );
    }
    add_action( 'init', 'add_custom_feed' );
    
    
    function custom_feed_content_type( $content_type, $type ) {
    	if( 'custom' == $type ) {
    		$content_type = 'application/rss+xml';
    	}
    	return $content_type;
    }
    add_filter( 'feed_content_type', 'custom_feed_content_type', 10, 2 );
    
    function render_custom_feed() {
    	echo 'aye!';
    }
    

    will work.

    See: https://core.trac.wordpress.org/ticket/36334

  2. Skip to note 2 content
    Contributed by MakeWebBetter

    Usage of add_feed()

    function wpdocs_add_mwb_feed() {
        add_feed( 'mwbfeed', 'wpdocs_makewebbetter_feed' );
    }
    add_action( 'init', 'wpdocs_add_mwb_feed' );
    
    function wpdocs_makewebbetter_feed() {
        add_filter( 'pre_option_rss_use_excerpt', '__return_zero' );
        load_template( PATHTEMPLATEFILE . '/feeds/a-feed-template.php' );
    }
    

You must log in before being able to contribute a note or feedback.