RSS feed of previous 24 hours posts?

Alright kids, we’re gonna leverage a couple of awesome WordPress features today. First things first, let’s get that custom feed registered with add_feed:

/**
 * Register "my_feed".
 */
function wpse_226681_register_feed() {
    // do_feed_rss() loads the default RSS template in WordPress
    add_feed( 'my_feed', 'do_feed_rss' );
}

add_action( 'init', 'wpse_226681_register_feed' );

/**
 * Handle content-type for "my_feed".
 */
function wpse_226282_feed_type( $type, $name ) {
    if ( $name === 'my_feed' )
        $type = feed_content_type( 'rss2' );

    return $type;
}

add_filter( 'feed_content_type', 'wpse_226282_feed_type', 10, 2 );

… where my_feed is the name of your feed i.e. example.com/feed/my_feed. Make sure to flush your rewrite rules once the code is in place – just re-save your permalink settings in the admin.

Next we need to override the default query for our custom feed – we’ll be using a date query to get all posts within the last 24 hours:

function wpse_226681_feed_query( $wp_query ) {
    if ( $wp_query->is_main_query() && $wp_query->is_feed( 'my_feed' ) ) {

        $wp_query->set( 'ignore_sticky_posts', true );
        $wp_query->set( 'posts_per_page', -1 );
        $wp_query->set( 'date_query', [
            'after' => date( 'Y-m-d H:i', strtotime( '-24 hours' ) ),
        ]);

    }
}

add_action( 'pre_get_posts', 'wpse_226681_feed_query' );