[benecaster_supporter_wall]
Renders a public wall of opted-in subscribers as an avatar / wall name / badge-chips card grid. Each subscriber’s wall name is the name they set specifically for the wall (Settings → My Account → Wall Name) — separate from their WordPress display name. Only renders when the parent show has Supporter Wall enabled (Settings → Subscription → Supporter Wall).
Empty-state copy is filterable via benecaster_supporter_wall_empty_message. Enqueues assets/css/supporter-wall.css (and its benecaster-badges dependency) only when the shortcode actually emits markup — themes can dequeue the handle to supply their own styles. Output filterable via benecaster_supporter_wall_output ( $html, $show_id, $subscribers, $atts ).
Follower vs. subscriber classification: each card carries is-follower or is-subscriber plus data-token-type, and the rows passed to the benecaster_supporter_wall_output filter carry token_type. A follower’s badge chips also include a “Follower” chip. Followers are shown on the wall exactly like paying subscribers — classified, never filtered out.
A follower’s own free token is enough to appear on this wall today — the query counts any active token for the show, not just paid ones, so this is listed as premium on product intent rather than on enforced behavior. Tracked as a plugin-side gap, not a feature.
Recipe
Style followers and subscribers differently
Free followers stay on the Supporter Wall alongside paying subscribers — Benecaster only labels them (a muted Follower chip) and classifies the markup so your theme decides how different they look. Three surfaces carry the classification, all in markup:
- Supporter Wall card:
.benecaster-supporter-wall__card.is-follower/.is-subscriber(alsodata-token-type). - Badge wrapper, when a show is in context (the wall,
[benecaster_user_badge show_id="…"]):.benecaster-user-badges.is-follower/.is-subscriber. - The chips themselves: the Follower chip and the tenure chip carry
.is-follower/.is-subscriber. - Account page:
.benecaster-account__subscription.is-follower/.is-subscriber.
/* Paying subscribers get a highlighted card; followers stay quieter. */
.benecaster-supporter-wall__card.is-subscriber {
border: 2px solid var(--wp--preset--color--primary, #4C1D95);
}
.benecaster-supporter-wall__card.is-follower {
opacity: 0.85;
}
To drop the Follower chip entirely and rely on your own styling instead, remove its row on benecaster_user_badges — it is the only row with source === 'follower_auto':
Classify, don’t exclude. Do not filter followers out of the wall’s rows to “fix” the look — they opted in, and they are shown. Style them instead. The REST endpoint GET /shows/{id}/supporter-wall gives headless front ends the same signal as a token_type field on every item.
<?php
add_filter( 'benecaster_user_badges', function ( array $badges ): array {
return array_values( array_filter(
$badges,
static fn( $b ) => 'follower_auto' !== ( $b->source ?? '' )
) );
}, 20 ); // after Benecaster appends it at priority 15
The show must be published. For a draft or trashed show the wall renders nothing, as with the wall switched off, even though a draft show can already take donations.
Parameters
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
show_id |
int |
current show
|
No | ID of the show whose opted-in subscribers to display. Optional: defaults to the current show page or episode page's show, then the site's only show. **Where to find it:** every show shows a click-to-copy `#{id}` chip in its admin header (on every sub-tab) and on its card in Benecaster → Shows, including archived shows. |
limit |
int |
100
|
No | Maximum number of subscriber cards to render. Clamped to SupporterWallQuery::MAX_LIMIT (500). |
tier |
string |
(all tiers)
|
No | Optional tier slug filter — restrict displayed subscribers to a single tier. |
order |
string |
(show setting)
|
No | Sort override. Options: join_date, tier, alphabetical. Omit to use the per-show admin default. |
Example
<!-- Default wall for show 3 -->
[benecaster_supporter_wall show_id="3"]
<!-- Founding tier subscribers only, alphabetical order -->
[benecaster_supporter_wall show_id="3" tier="founding" order="alphabetical"]
<!-- Limit to 50 subscribers -->
[benecaster_supporter_wall show_id="3" limit="50"]