Skip to main content

benecaster_episode_published

Action Free Since v1.0.0

Fires when an episode’s post status transitions to `publish`. This hook fires on every publish transition — including when a previously unpublished episode is re-published after being drafted or trashed — and is distinct from [benecaster_episode_created](/hooks/benecaster_episode_created/), which fires at first save regardless of status. Use this hook when you need to react to the moment an episode becomes publicly visible.

The feed cache is cleared at priority 10 before this hook fires at priority 20. By the time your callback runs the cache is already invalidated, so the next feed request will include the newly published episode.

Parameters

Name Type Default Description
$episode_id int ID of the episode post
$show_id int ID of the parent show

Examples

Send episode data to webhook on publish

add_action( 'benecaster_episode_published', function (
    int $episode_id,
    int $show_id
) {
    $payload = [
        'episode_id'   => $episode_id,
        'show_id'      => $show_id,
        'title'        => get_the_title( $episode_id ),
        'audio_url'    => get_post_meta( $episode_id, '_benecaster_audio_url', true ),
        'published_at' => get_the_date( 'c', $episode_id ),
    ];

    wp_remote_post( 'https://hooks.example.com/new-episode', [
        'body'    => wp_json_encode( $payload ),
        'headers' => [ 'Content-Type' => 'application/json' ],
        'timeout' => 5,
    ] );
}, 10, 2 );

Notes

This hook fires on every publish transition, including re-publishes. If an episode is unpublished and then re-published, this hook fires again. To react only to first-ever publication, check whether benecaster_episode_created also fired in the same request (a transient keyed on the episode ID works well), or verify whether a publish date was previously set before this save. This is a Free hook — it fires regardless of license status.