benecaster_feed_before_render
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.