Skip to main content

[benecaster_supporter_wall]

Free

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

Premium Beginner

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 (also data-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

View on GitHub →

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"]