Skip to main content

[benecaster_pricing_table]

Renders a tier comparison table showing every tier, free ones included, with its name and live price (on a show using Benecaster’s built-in membership, tiers marked Inactive under Memberships → Tiers are left out, the same ones [benecaster_subscribe] hides), with a subscribe button on each when you give it a cta_url_base. Names and prices come from wherever the show’s plans live: the plans on Memberships → Tiers for a show using Benecaster’s built-in membership, or the membership plugin otherwise. Either way they update automatically. All rendered elements carry BEM CSS classes for custom styling.

Which price a plan shows. A plan with several billing periods shows the one marked default, the same figure [benecaster_tier_price] and [benecaster_subscribe] show for it, with its currency: $15.00, ¥1,500, KWD 5.000 on built-in membership, or the membership plugin’s own price format otherwise. A paid plan with no price set appears with Price unavailable.

Free tiers read Free. A plan marked free on built-in membership, or a public tier on a membership plugin, shows Free in its price cell (class benecaster-pricing-table__price-free) rather than a price. Its subscribe button is the same as every other tier’s — the same cta_text, and with cta_url_base set the same ?tier={slug} link — so the page you point cta_url_base at needs to handle a free sign-up. Benecaster’s built-in signup form already does.

Show context: This shortcode is designed for marketing pages — a /pricing or /subscribe page on your site. On a single-show install, the show is auto-resolved when show_id is omitted. On a multi-show install, a show page or episode page supplies its own show; on any other page, show_id is required.

One show at a time. For several shows on one page, place one [benecaster_pricing_table show_id="N"] per show.

Tier display order (within a show): Benecaster keeps its own tier order and does not take one from your membership plugin, so ordering works the same way no matter which plugin is behind the tiers — including plugins that offer no ordering of their own. Drag the tiers into the order you want on the tier mapping screen; if you are on Built-in Membership, that is the Memberships admin instead. Either way the table renders in the order you set.

Subscribe buttons need cta_url_base. It is the only way to make the call to action a link: each button then points at {cta_url_base}?tier={slug}. Without it the button text still shows but isn’t clickable, and the table is a comparison rather than a sign-up form. Benecaster doesn’t guess a checkout URL from your membership plugin, because a wrong guess sends a would-be subscriber to a dead page while looking as if it works.

Which tiers are listed. On a membership-plugin show, the table lists the tiers mapped to the plugin the show uses today, plus any tiers you manage by hand (those show their name with no price). After switching membership plugins, a tier still mapped only under the old plugin is left off the table, since nobody can buy it; map it in the current plugin to bring it back.

Hiding a tier. List its slug in exclude. That is how you leave out a tier the table would otherwise list, such as a free tier on a page that is only selling paid plans.

Output filterable via benecaster_pricing_table_output.

The show must be published. For a draft, scheduled, private or trashed show, or an ID that is not a show, the table renders nothing and benecaster_pricing_table_output does not run; someone who can edit that show sees This pricing table will appear here once the show is published. Only people who can edit the show see this note. instead.

Parameters

Name Type Default Required Description
show_id int current show No ID of the show whose tiers to display. Optional: with no show_id, a show page uses that show, an episode page uses its show, and anywhere else a single-show site uses its only show. Needed only on a multi-show site, on a page that is neither.
exclude string — No Comma-separated tier slugs to hide from the table — use it to hide a free tier.
cta_text string Subscribe No Label text for the subscribe button on each tier card.
cta_url_base string — No Base URL for subscribe links. Each tier's button links to {cta_url_base}?tier={slug}. When omitted, the buttons are plain text and not clickable.

Example

<!-- Full pricing table with working subscribe buttons -->
[benecaster_pricing_table show_id="3" cta_url_base="https://example.com/join/"]

<!-- Paid plans only: hide the free tier, custom CTA -->
[benecaster_pricing_table show_id="3" exclude="free" cta_text="Get access" cta_url_base="https://example.com/join/"]