Skip to main content

Filter Hooks Reference

All filter hooks provided by Benecaster. Each hook name links to its reference page with full parameter docs, return type, usage notes, and code examples.

Unless noted otherwise, every filter here fires on any install. Filters marked Premium sit on code paths that only run on a licensed install — not because the filter itself costs anything, but because without a license there is nothing for it to filter.

About the Since column. Each filter’s own reference page records the plugin version it was introduced in, once one exists. It is blank on every entry here because nothing has shipped yet — it gets filled in at the 1.0.0 launch.


Feed

Filter what goes into a feed’s compiled RSS XML — the episode list, per-episode data, enclosure
URLs, Podcasting 2.0 tags, and the final XML string itself.

Filter Description
benecaster_feed_episodes Filters the array of episode objects for a feed tier before XML serialization
benecaster_feed_episode_data Filters the data array for a single episode before XML rendering, itunes: tags and <content:encoded> included, plus a trailing $tier_slug — most granular per-episode customization point
benecaster_feed_enclosure_url Filters the audio/video URL placed in the RSS <enclosure> tag
benecaster_feed_item_xml Filters the compiled XML string for a single episode item after serialization
benecaster_feed_episode_limit Filters the maximum number of episodes included per feed tier
benecaster_feed_channel_data Filters the channel-level RSS data array before XML compilation, itunes: tags included, plus a trailing $tier_slug; includes new_feed_url key for controlling the <itunes:new-feed-url> tag
benecaster_rss_extra_channel_tags Filters an array of extra tags appended to the RSS channel block, which core escapes and renders — not a raw XML string
benecaster_rss_extra_item_tags Filters an array of extra tags appended to each episode item, which core escapes and renders — not a raw XML string
benecaster_feed_xml Filters the complete compiled RSS XML string; two call sites — per-tier (string third arg) and assembled multi-tier (string[] third arg)
benecaster_podcast_chapters Filters podcast:chapters data for an episode item; Chapter Markers add-on populates automatically
benecaster_podcast_transcripts Filters podcast:transcript entries for an episode item; Transcription add-on populates automatically
benecaster_feed_podcast_channel_tags Filters the channel-level Podcasting 2.0 tag array before XML output; array pre-populated from show meta (guid, locked, funding, block, txt, license)
benecaster_feed_podcast_episode_tags Filters the per-episode Podcasting 2.0 tag array before XML output; integration point for Transcription Service (podcast:transcript), Guest Manager (podcast:person), and Chapter Markers (podcast:chapters) add-ons
benecaster_feed_podcast_funding_label Filters the <podcast:funding> element label text; defaults to “{show title} Listener Support”
benecaster_episode_references Filters the references array for an episode before it is returned in REST responses

Subscriber Engagement

Controls the inactivity threshold used to decide when a subscriber’s feed is considered stopped.

Filter Description
benecaster_subscriber_engagement_threshold Filters the inactivity threshold (days) used by the engagement cron before it marks a subscriber as inactive; override per show

RSS Output Filters — Premium

Reserved for premium-only feed output filters. All filters in this section require an active
paid Benecaster license; none are currently published here.

Filter Description

SSP / PowerPress Import

Filters the arguments used to insert a draft episode while importing from Seriously Simple
Podcasting.

Filter Description
benecaster_ssp_import_post_data Filters the wp_insert_post() argument array before each SSP draft episode is inserted; override title, status, content, or date

Episodes

Filter an episode’s resolved data — its iTunes type, description, audio/video URLs and players,
share links, and whether it’s accessible to the current user.

Filter Description
benecaster_episode_auto_number Filters the auto-assigned episode number when an episode is first published
benecaster_episode_itunes_type Filters the resolved iTunes canonical type for an episode during feed compilation
benecaster_episode_description Filters the episode description HTML rendered on the front-end episode page (distinct from benecaster_episode_description_rss which filters the RSS feed description)
benecaster_episode_audio_url Filters the audio file URL used in the front-end player and episode page
benecaster_episode_embed_audio Filters the rendered HTML for the embedded audio player on the episode page
benecaster_episode_video_url Filters the video file URL used in the front-end player and episode page
benecaster_episode_embed_video Filters the rendered HTML for the embedded video player on the episode page
benecaster_episode_share_links Filters the share links array for an episode; each entry is {label, url, class}; used in the episode/share.php template part
benecaster_show_episode_player Filters whether the episode player is rendered on the episode page; return false to suppress the player entirely (locked-state template still renders)
benecaster_show_episode_content Filters whether the episode page shows the full show notes or the teaser; args (bool $show_content, int $episode_id, ?int $user_id, ?string $user_tier)
benecaster_show_episode_download Filters whether the “Download episode” link is shown on the episode page; args (bool $show, int $episode_id, ?int $user_id, ?string $user_tier). The filter can only hide the link: returning true for a visitor without access has no effect.
benecaster_show_episode_transcript Filters whether the “Read the transcript” link is shown on the episode page; same arguments as the download filter, and it can likewise only hide the link
benecaster_episode_is_accessible Overrides episode access for custom rules; args (bool $can_access, int $episode_id, int $user_id, string $tier_slug) where $tier_slug is the subscriber’s active token tier or '' when no token; return false to lock, true to grant access regardless of tier; fires inside benecaster_user_can_access_episode()

Templates — Episode Page

Filter the custom fields shown on an episode page and the previous/next navigation links and
subscribe fallback text.

Filter Description
benecaster_episode_custom_fields Filters the custom fields renderable groups array before output in episode/custom-fields.php; each group is {heading, fields[]}
benecaster_episode_nav_prev Filters the WP_Post object for the previous episode in episode/navigation.php; return null to suppress the previous link
benecaster_episode_nav_next Filters the WP_Post object for the next episode in episode/navigation.php; return null to suppress the next link
benecaster_episode_subscribe_fallback_message Filters the subscribe CTA fallback text shown in episode/subscribe.php when no subscribe URL is configured

Episode Page Blocks

Register, reorder, or replace the rendered HTML of the blocks that make up an episode page —
related episodes, navigation, share buttons, social links, and platform links — and the
shortcodes that mirror several of them.

Filter Description
benecaster_episode_page_block_types Registers or modifies block type definitions for the Episode Page settings panel
benecaster_episode_page_blocks Filters the ordered block list before an episode page renders; each block: {slug, enabled, config}
benecaster_episode_page_block_{slug} Filters the rendered HTML for one specific Episode Page block (dynamic filter name — {slug} matches the block type slug); return '' to suppress
benecaster_related_episodes_query_types Registers or modifies query type strategies for the Related Episodes block
benecaster_related_episodes Filters the related episodes array before rendering in the Related Episodes block
benecaster_related_episodes_output Filters the rendered HTML output of the Related Episodes block
benecaster_episode_nav_output Filters the rendered HTML of the Episode Navigation block and [benecaster_episode_nav] shortcode
benecaster_episode_share_text Filters the share text for a specific platform in the Share Buttons block
benecaster_episode_share_output Filters the rendered HTML output of the Share Buttons block and [benecaster_episode_share] shortcode
benecaster_show_social_links Filters the show social links array for the Social Links block and [benecaster_social_links] shortcode
benecaster_social_links_output Filters the rendered HTML output of the Social Links block and [benecaster_social_links] shortcode
benecaster_rss_link_output Filters the rendered HTML of the RSS Subscribe button and [benecaster_rss_link] shortcode
benecaster_platform_links_output Filters the rendered HTML of the Platform Links block and [benecaster_platform_links] shortcode

Templates — Episode Archive

Filter the text, HTML, and per-card data rendered on the episode archive listing.

Filter Description
benecaster_archive_header_title Filters the archive heading text rendered in archive/header.php
benecaster_archive_header_description Filters the archive subheading/description text rendered in archive/header.php
benecaster_archive_show_filters Filters whether the episode filter bar is rendered; return false to suppress it
benecaster_archive_no_results_message Filters the empty-state message shown in archive/no-results.php when no episodes match the current filters
benecaster_archive_pagination_html Filters the pagination HTML rendered in archive/pagination.php
benecaster_episode_card_classes Filters the CSS class string on each episode card in archive/episode-card.php
benecaster_episode_card_meta Filters the meta array for each episode card; keys: episode_number, season_number, duration, pub_date
benecaster_episode_card_title Filters the episode title string rendered in each archive card
benecaster_episode_card_excerpt Filters the episode excerpt string rendered in each archive card
benecaster_episode_card_artwork Filters the artwork URL used in each archive card
benecaster_episode_card_locked_message Filters the locked state message shown on archive cards for episodes the current user cannot access

Filter the episode search query, its results, and what’s eligible to be indexed — including a
short-circuit for replacing Benecaster’s own search entirely.

Filter Description
benecaster_search_query_args Filters the query arguments before the episode search runs
benecaster_search_pre_results Short-circuit the episode search; return a non-null array to skip Benecaster’s own query and return custom results
benecaster_search_results Filters the final episode search result set and pagination metadata
benecaster_search_result_excerpt Filters the search result excerpt string; <mark> wrapping around matched terms is already applied
benecaster_search_indexable Controls whether a specific episode is included in search results; return false to exclude
benecaster_search_output Filters the rendered HTML output of [benecaster_search]
benecaster_search_supplemental_episode_ids Adds supplemental episode IDs to merge into search results via OR p.ID IN (...) (e.g. transcript matches from the Transcription add-on)

Data Export

Register additional sheets, or filter row data for an existing one, in the “Your Data” XLSX
export.

Filter Description
benecaster_export_sheets Registers and filters available sheets for the “Your Data” XLSX export
benecaster_export_sheet_rows_sheet_id_{sheet_id} Provides or filters row data for one XLSX export sheet (dynamic filter name — {sheet_id} is replaced with the sheet ID string)

Member Thanks

Register query strategies for, or filter the rendered HTML of, the [benecaster_member_thanks]
shortcode.

Filter Description
benecaster_member_thanks_query_types Registers or modifies query type strategies for the [benecaster_member_thanks] shortcode and the Episode Workbench tile
benecaster_member_thanks_output Filters the rendered HTML output of [benecaster_member_thanks]

Custom Fields

Filter custom field group definitions before they render, and individual field values before
they’re returned to the caller.

Filter Description
benecaster_field_groups Filters the array of field group definitions before they are rendered for a CPT
benecaster_field_value Filters a custom field value before it is returned to the caller

References

Filters the reference group list for a show before it’s returned in REST responses.

Filter Description
benecaster_reference_groups Filters the reference group list for a show before it is returned in REST responses

Admin UI

Register or modify what appears in the Benecaster admin — dashboard cards, episode editor tabs,
and show settings pages and sections.

Filter Description
benecaster_dashboard_cards Filters the dashboard card declarations rendered after the built-in stat cards
benecaster_episode_editor_tabs Filters the tab configuration array used by the episode editor sidebar
benecaster_settings_pages Filters the settings page declarations shown in the show settings left navigation
benecaster_settings_sections Filters field section declarations injected into existing settings pages

Email

Filter any part of an outgoing Benecaster email — whether it sends, its subject and body, its
headers, its merge tags, its header/footer branding, and which types are exempt from broadcast
opt-out suppression.

Filter Description
benecaster_email_should_send Controls whether a specific email is dispatched; type-specific variant: benecaster_email_should_send_{type}
benecaster_email_subject Filters the subject line for any Benecaster email; type-specific variant: benecaster_email_subject_{type}
benecaster_email_body_html Filters the HTML body for any Benecaster email; type-specific variant: benecaster_email_body_html_{type}
benecaster_email_body_text Filters the plain text body for any Benecaster email; type-specific variant: benecaster_email_body_text_{type}
benecaster_email_headers Filters the headers array passed to wp_mail(); type-specific variant: benecaster_email_headers_{type}
benecaster_email_merge_tags The primary hook for registering custom merge tags; type-specific variant: benecaster_email_merge_tags_{type}
benecaster_email_wrapper_args Filters the header/footer template context: logo URL, show name, accent color, footer text
benecaster_email_template_locale Filters the locale used for email template file resolution before template loading
benecaster_email_unsubscribe_allowed Controls whether an unsubscribe request should be processed; only use for rate limiting, never to block legitimate opt-outs
benecaster_transactional_email_types Filters the email types that bypass broadcast opt-out suppression (welcome, token_reset, etc.)
benecaster_managed_email_types Filters the array of registered email types; types returned here appear as editable templates in the Email Editor

Shortcode Output

Filter the final rendered HTML of most Benecaster shortcodes, one filter per shortcode.

Filter Description
benecaster_player_output Filters the full rendered HTML output of [benecaster_player]
benecaster_subscribe_output Filters the full rendered HTML output of [benecaster_subscribe]
benecaster_episode_description_output Filters the rendered HTML output of [benecaster_episode_description]
benecaster_latest_episode_output Filters the rendered HTML output of [benecaster_latest_episode]
benecaster_episode_link_output Filters the rendered HTML of an episode link inserted via the TipTap @ inline picker ([benecaster_episode_link])
benecaster_timestamp_output Filters the rendered HTML of a timestamp link inserted via the TipTap # trigger ([benecaster_timestamp])
benecaster_feed_url_output Filters the full rendered HTML output of [benecaster_feed_url]
benecaster_qr_code_output Filters the full rendered HTML output of [benecaster_qr_code]
benecaster_episodes_output Filters the full rendered HTML output of [benecaster_episodes]
benecaster_locked_content_message Filters the locked state HTML for a locked episode; parameters: ($html, $episode_id, $required_tier, $user_tier)$required_tier is '' when undetermined; $user_tier is '' when not subscribed; fires in episode/player-locked.php and the player shortcode
benecaster_upgrade_prompt_html Filters the upgrade prompt HTML shown to logged-in subscribers at the wrong tier; parameters: ($html, $episode_id, $show_id, $required_tier, $user_tier)
benecaster_subscriber_count_output Filters the rendered output of [benecaster_subscriber_count]
benecaster_episode_count_output Filters the rendered output of [benecaster_episode_count]
benecaster_tier_price_output Filters the rendered output of [benecaster_tier_price]
benecaster_tier_name_output Filters the rendered output of [benecaster_tier_name]
benecaster_pricing_table_output Filters the rendered output of [benecaster_pricing_table]

Account Page

Filter the subscriber account page’s URL and the labels Benecaster adds to other membership
plugins’ own account screens.

Filter Description
benecaster_account_page_url Filters the subscriber account page URL returned by benecaster_account_page_url()
benecaster_wc_account_tab_label Filters the label of the Podcast Subscriptions tab in WooCommerce My Account
benecaster_pmpro_account_link_label Filters the label of the Manage Podcast Subscriptions link in the PMPro account page
benecaster_memberpress_account_label Filters the section heading in the MemberPress account page
benecaster_rcp_account_label Filters the section heading in the Restrict Content Pro account page

Templates — Show Page

Filter the text, HTML, and query arguments rendered on the public show page — header, subscribe
links, tiers, embedded episode list, and public stats.

Filter Description
benecaster_show_description Filters the show description text returned by benecaster_get_show_description()
benecaster_show_header_title Filters the show title rendered in show/header.php
benecaster_show_header_description Filters the show description rendered in show/header.php
benecaster_show_header_artwork_url Filters the show artwork URL used in show/header.php
benecaster_show_subscribe_links Filters the platform links array rendered in show/subscribe-links.php; each entry: {platform, url}
benecaster_show_tiers Filters the tiers array rendered in show/tiers.php; each entry from the active bridge’s get_all_tiers()
benecaster_show_episode_list_args Filters the WP_Query arguments for the embedded episode list in show/episode-list.php; defaults: posts_per_page=10, orderby=date, order=DESC
benecaster_show_stats_visible Controls whether show/stats.php renders; returns false by default — return true to show public stats
benecaster_show_stats_episode_count Filters the episode count displayed in the public stats block

Token and Access

Filter the tier a user resolves to for a show, and the teaser content shown to someone who
can’t access a locked episode.

Filter Description
benecaster_user_tier_for_show Filters the resolved tier slug for the current user on a given show; used by benecaster_get_user_tier_for_show() and by PreviewTierManager for Preview as Tier mode; return a tier slug string or empty string
benecaster_teaser_content Filters the teaser content shown to users who cannot access a locked episode; fires in TeaserResolver::resolve() called from episode/content.php; Free

Setup and Configuration

Filter the setup wizard’s step list and bridge options, and register runtime setup-guidance
notices for add-ons.

Filter Description
benecaster_setup_wizard_steps Filters the ordered array of step definitions passed to the setup wizard
benecaster_setup_wizard_bridge_options Filters the bridge card options displayed in the wizard’s Subscription step
benecaster_addon_setup_checks Registers runtime setup guidance notices for add-ons; each callable returns null (condition met) or a notice array (condition failing); SetupNoticeManager evaluates on every admin load

Maintenance

Filter retention windows used by Benecaster’s own cleanup jobs — imported shadow records and
the email log.

Filter Description
benecaster_shadow_record_expiry_days Filters the shadow import record expiry threshold in days (default 90); controls when completed Patreon/Supercast migration records are purged
benecaster_email_log_retention_days Filters the email log retention period in days (default 180); controls what the orphaned data scanner surfaces as cleanable in Tools → Maintenance

See Also

Need this built rather than just documented? See our services →