Clean up external records when an episode is permanently deleted
Fires from before_delete_post — the episode still exists in the database at this point, so get_post(), get_post_meta(), and get_the_title() all return valid data. Use to remove external analytics entries, revoke CDN assets, or log the deletion before the local data is gone. Does NOT fire on trash — only on permanent deletion.
Code
<?php
add_action( 'benecaster_episode_deleted', function ( int $episode_id, int $show_id ) {
$audio_url = get_post_meta( $episode_id, '_benecaster_audio_url', true );
my_analytics_delete_episode( $episode_id );
my_slack_notify( sprintf(
'Episode deleted: %s (show %d) — audio: %s',
get_the_title( $episode_id ),
$show_id,
$audio_url ?: 'none'
) );
}, 10, 2 );