benecaster_episode_auto_number
Filters the auto-assigned episode number when an episode with no existing number is first published. The default computed value is `max(existing episode numbers for this show) + 1`, or `1` if no numbered episodes exist yet.
Return `0` to suppress auto-numbering entirely — the episode will be saved without an episode number. Auto-numbering applies to Full episode types by default; Trailer and Bonus episodes do not receive automatic numbers. Setting a number manually in the episode editor before first publish prevents this filter from firing for that episode.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
$next |
int |
— | Computed next episode number (max existing + 1, minimum 1) |
$episode_id |
int |
— | ID of the episode |
$show_id |
int |
— | ID of the show |
Returns:
int
Examples
Skip auto-number for bonus and trailer
add_filter( 'benecaster_episode_auto_number', function( $next, $episode_id, $show_id ) {
// Skip auto-numbering for bonus and trailer episodes.
$type = get_post_meta( $episode_id, '_benecaster_episode_type', true );
if ( in_array( $type, [ 'bonus', 'trailer' ], true ) ) {
return 0; // 0 suppresses auto-numbering.
}
return $next;
}, 10, 3 );
Suppress for non-full episode types
add_filter( 'benecaster_episode_auto_number', function (
int $next,
int $episode_id,
int $show_id
): int {
$type = get_post_meta( $episode_id, '_benecaster_episode_type', true );
if ( 'full' !== $type ) {
return 0; // 0 = skip auto-numbering for this episode.
}
return $next;
}, 10, 3 );
Restart numbering each season
add_filter( 'benecaster_episode_auto_number', function (
int $next,
int $episode_id,
int $show_id
): int {
$season = (int) get_post_meta( $episode_id, '_benecaster_season', true );
if ( ! $season ) {
return $next; // No season set — use default sequence.
}
// Count published full episodes already in this season.
global $wpdb;
$count = (int) $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->postmeta} pm
JOIN {$wpdb->postmeta} pm2 ON pm2.post_id = pm.post_id
WHERE pm.meta_key = '_benecaster_season' AND pm.meta_value = %d
AND pm2.meta_key = '_benecaster_episode_number'
AND pm.post_id IN (
SELECT ID FROM {$wpdb->posts}
WHERE post_parent = %d AND post_status = 'publish'
)",
$season, $show_id
) );
return $count + 1;
}, 10, 3 );
Notes
Auto-numbering only runs when no episode number has been set. Setting a number manually in the episode editor before first publish prevents this filter from firing. Return 0 to leave the episode unnumbered.