Skip to main content

benecaster_feed_before_render

Action Free Since v1.0.0

Fires after the feed request is validated and HTTP headers have been sent, but just before the compiled feed XML is echoed to output. Use this hook for timing measurements, access logging, or cache-warming side-effects that do not require inspecting or modifying the output.

Because output has already started, any attempt to set or modify headers at this point will be silently ignored or produce errors. The compiled XML is not available here — use [benecaster_feed_after_render](/hooks/benecaster_feed_after_render/) if you need to inspect or log the full feed string.

Parameters

Name Type Default Description
$show_id int ID of the show
$tier_slug string Internal tier slug for the feed being rendered

Examples

Record render start for timing

add_action( 'benecaster_feed_before_render', function( int $show_id, string $tier_slug ) {
    $GLOBALS['_benecaster_render_start'] = microtime( true );
}, 10, 2 );

Paired timing with benecaster_feed_after_render

// Record start time in before_render:
add_action( 'benecaster_feed_before_render', function( int $show_id, string $tier_slug ) {
    $GLOBALS['_benecaster_render_start'] = microtime( true );
}, 10, 2 );

// Log elapsed time and feed size in after_render:
add_action( 'benecaster_feed_after_render', function( int $show_id, string $tier_slug, string $xml ) {
    $elapsed_ms = round( ( microtime( true ) - ( $GLOBALS['_benecaster_render_start'] ?? 0 ) ) * 1000 );
    $size_kb    = round( strlen( $xml ) / 1024, 1 );
    error_log( sprintf(
        'Benecaster feed rendered: show=%d tier=%s time=%dms size=%skb',
        $show_id, $tier_slug, $elapsed_ms, $size_kb
    ) );
}, 10, 3 );

Notes

Because HTTP headers are already sent when this hook fires, do not attempt to set or modify headers in this callback. The compiled XML is not available here — use benecaster_feed_after_render (which provides $xml as a third parameter) if you need to inspect it.