Deliver a downloadable extra to the people who bought your buy-up
A buy-up gates episodes with no code at all — tick it on the episode’s Access tab. For everything else you might sell as a buy-up — a colouring book, a PDF, a bonus video, a members-only page — use benecaster_access_gate.
In an episode. Open the episode, click into Full Page Content, type / and choose Buy-up Gate. It inserts a block with two halves — Shown to people who have it and Shown to everyone else. In its settings, pick A buy-up and choose it from your list, then put the download link in the first half and whatever everyone else should see in the second. No shortcode to type.
On any other page or post, put the material between the shortcode’s tags:
[benecaster_access_gate buyup="colouring-book"]
<a href="https://example.com/wp-content/uploads/2026/colouring-book.pdf">Download your colouring book (PDF)</a>
[benecaster_else]
<p>The colouring book comes with the Colouring Book extra.</p>
[benecaster_subscribe]
[/benecaster_access_gate]
buyup is the buy-up’s Access token type. grant="season-one" asks the other question — a one-off purchase, owned outright — and a bare [benecaster_access_gate] means anyone who has bought anything extra on the show. These are the same three choices the block’s settings offer as A buy-up, A one-off purchase and Anything extra.
It hides the link. It does not protect the file. A media-library URL between the tags keeps its ordinary web address, and anyone who is given it can open the file.
Drop to PHP when the answer has to do something rather than show something — below, putting buyers on a mailing list when they visit a page. Use benecaster_user_has_buyup() for a buy-up, which lasts only as long as the membership it rides on, and benecaster_user_holds_grant() for a one-off purchase, which is owned outright and survives the end of the membership. Keep the two separate: a buy-up and a purchase can share a slug and mean different things.
Whole episodes still belong on the Access tab — don’t wrap an episode’s audio or its whole body in a gate. In an episode’s page content the gate resolves in the RSS feed too: a holder’s podcast app shows the gated half on every episode that carries it, and the public feed and everyone else get the else half.
Code
<?php
// Put colouring-book buyers on a mailing list when they open the "crafts" page.
add_action( 'template_redirect', function (): void {
if ( ! is_page( 'crafts' ) || ! is_user_logged_in() ) {
return;
}
$user_id = get_current_user_id();
$show_id = 3; // The show that sells the buy-up.
// The "Colouring Book" buy-up's row ID in benecaster_buyups.
// A buy-up lasts only as long as the membership it rides on.
$colouring_book_buyup_id = 12;
if ( benecaster_user_has_buyup( $user_id, $colouring_book_buyup_id, $show_id ) ) {
my_crm_subscribe( $user_id, 'crafts' ); // Your mailing-list integration.
}
// A one-off purchase is owned outright and survives the end of the membership.
if ( benecaster_user_holds_grant( $show_id, 'season-one', $user_id ) ) {
my_crm_subscribe( $user_id, 'season-one-buyers' );
}
} );
Need this built rather than just documented? See our services →