[benecaster_ai_search]
Semantic natural-language search across episode titles, descriptions, show notes, and — when the Transcription add-on is installed — transcripts. Registered by the AI Search add-on; the shortcode does not exist unless that add-on is active.
Without the add-on, this shortcode does not fail quietly — it prints itself. Nothing registers a placeholder for it, and WordPress renders an unregistered shortcode as the literal text [benecaster_ai_search] on the published page. So if the add-on is deactivated, or the page is copied to a site that does not have it, visitors see the tag rather than a search box and nothing anywhere reports an error. Worth knowing before putting it on a page you do not revisit often, and worth checking first on any staging or clone site.
Queries are answered by the AI provider configured in the add-on’s settings, using the podcaster’s own API key. The provider is billed directly for each query — see AI Search API Key Setup.
Coexists with benecaster_search, the keyword search shortcode that is built in at every plan level and needs no add-on. The two are independent and can be placed on the same site simultaneously. Typical pattern: [benecaster_search] on the public episode archive, where it costs nothing to run, and [benecaster_ai_search] gated to a tier with benecaster_tier_gate.
If the AI Search add-on is inactive, a subscriber who passes the gate sees the literal [benecaster_ai_search] tag rather than a search box — see Without the add-on above. When that matters, guard the placement with shortcode_exists() first; see the recipe Show AI Search by subscriber tier.
Result visibility. Relevance is scored against all episodes, including ones the visitor cannot access — the best semantic match surfaces regardless of access level, and only the display is gated. result_visibility controls what happens to those matches:
hidden (the default) drops inaccessible episodes from the results entirely.
locked shows them as a locked card: the episode title, a lock icon, and a tier label reading “Available to [tier name] subscribers”, with an upgrade CTA. Descriptions, excerpts, and transcript snippets are withheld — including when a transcript match is what drove the ranking.
Visibility is per placement, so the same site can run locked on a public search bar as a conversion surface and hidden in a subscriber-only area at the same time.
Locked card markup can be replaced wholesale via the benecaster_ai_search_locked_result filter. A Gutenberg block and an Elementor widget are available through the Blocks & Widgets Library add-on; this shortcode is the universal fallback.
Parameters
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
show_id |
int |
(current show)
|
No | Show to search within. Required on multi-show installs where no show context is available. |
result_visibility |
string |
hidden
|
No | How episodes the visitor cannot access are treated. hidden — excluded from results entirely. locked — shown as a locked card with title, tier label, and upgrade CTA. |
locked_cta_url |
string |
(subscriber signup page)
|
No | Destination for the upgrade CTA on locked cards. Defaults to the site's subscriber signup page. Only meaningful when result_visibility is locked. |
locked_cta_label |
string |
Subscribe to access
|
No | Label for the upgrade CTA on locked cards. Only meaningful when result_visibility is locked. |
Example
<!-- Default: inaccessible episodes are hidden -->
[benecaster_ai_search]
<!-- Public search bar used as a conversion surface -->
[benecaster_ai_search result_visibility="locked"]
<!-- Locked cards pointing at a specific upgrade page -->
[benecaster_ai_search result_visibility="locked" locked_cta_url="/join/" locked_cta_label="Unlock the full archive"]
<!-- Specific show on a multi-show install -->
[benecaster_ai_search show_id="2"]