Find the necessary Plan ID
Most of these functions require you to provide the Plan ID of a plan. To find the Plan ID, go to Revenue → Plans and click the Links button of the plan you want to find the ID for. Click the Plan ID Copy button and paste it into your WordPress function.Renaming a plan or a download will modify its slug, but the old slug will continue to work in WordPress functions. Rename your plans and downloads anytime, knowing that your existing functions will not break.
Find the necessary Slug
The slug for a download can be found in the list of downloads under Content → Downloads. You can also copy it from the bottom of the page when editing a download.Find the necessary podcast ID
The ID for a podcast can be found in the URL while editing the podcast. It’s the numeric segment of this URL: ACCOUNT-URL.memberful.com/admin/feeds/63010/edit
Check member permissions
We’ve included three functions for checking if the current signed-in member is subscribed to plans, owns downloads, or has access to podcast feeds. Use them in your WordPress theme’s template files:is_subscribed_to_memberful_plan( $slug )has_memberful_download( $slug )has_memberful_feed( $id )
is_subscribed_to_any_memberful_plan($user_id).
Basic example
Require a subscription to the Big Awesome plan:<?php if ( is_subscribed_to_memberful_plan( '154-big-awesome' ) ) : ?>
Shown only to members with a subscription to the Big Awesome plan.
<?php endif; ?>
Multiple plans
Require a subscription to at least one of the listed plans:<?php if ( is_subscribed_to_memberful_plan( array( '27-super-rad', '59-rock-on', '99-chill-out' ) ) ) : ?>
Shown to members with the Super Rad plan **OR** the Rock On plan **OR** the Chill Out plan.
<?php endif; ?>
Any plan
Require a subscription to any plan. This function accepts any valid user ID, but you’ll typically want to use the current signed-in member, so we’ll get their user ID first.<?php
$user_id = wp_get_current_user()->ID;
if ( is_subscribed_to_any_memberful_plan( $user_id ) ) : ?>
Shown to members subscribed to **any** plan.
<?php endif; ?>
Plan or download
Require a subscription to the Big Awesome plan or require the Super Rad download.<?php if ( is_subscribed_to_memberful_plan( '154-big-awesome' ) || has_memberful_download( '27-super-rad' ) ) : ?>
Shown only to members with a subscription to the Big Awesome plan or the Super Rad download.
<?php endif; ?>
Check against a different member / WordPress user
These functions check against the current (signed-in) member / WordPress user by default. To specify a different member / WordPress user, pass the function an optional WordPress user ID argument:<?php if ( is_subscribed_to_memberful_plan( array( '27-super-rad', '59-rock-on' ), $user_id ) ) : ?>
Shown if $user_id is subscribed to the Super Rad or Rock On plans.
<?php endif; ?>
Check if a user has access to a post based on the Restrict Access tool
Configure access to your posts with the Restrict Access metabox and usememberful_can_user_access_post() to check if a user has access to a post or not:
<?php
$user_id = wp_get_current_user()->ID;
if ( memberful_can_user_access_post( $user_id, $post->ID) ) : ?>
Shown to members that have access based on the Restrict Access Tool.
<?php else : ?>
Shown to others.
<?php endif; ?>
You only need to do this if you want to show users some custom content (e.g. content from custom fields).If you only need to protect content in the default WordPress content area (the_content() in your theme), the Restrict Access tool will be sufficient and you won’t need to use this function.
Check which plans a user is subscribed to
The memberful_wp_user_plans_subscribed_to function returns the member’s subscriptions as an array.$subscriptions = memberful_wp_user_plans_subscribed_to( $user_id );
- id (this refers to the Plan’s ID)
- autorenew
- activated_at
- expires_at
- in_trial_period
- trial_start_at
- trial_end_at
Add a custom function that checks if a member is on a trial
We can leverage thememberful_wp_user_plans_subscribed_to function to create a custom function that checks if a member is currently on a trial for any of their subscriptions.
Add the following custom function to your functions.php file:
function is_on_trial() {
if ( ! function_exists( "memberful_wp_user_plans_subscribed_to" ) ) {
return false;
}
$user_id = wp_get_current_user()->ID;
$subscriptions = memberful_wp_user_plans_subscribed_to($user_id);
if( empty( $subscriptions ) ) {
return false;
}
foreach( $subscriptions as $subscription ) {
if ( $subscription["in_trial_period"] ) {
return true;
}
}
return false;
}
is_on_trial() will return true if the member is on a trial (for any subscription).
Show profile information in WordPress themes
We’ve included a few functions for adding profile information to your theme template files:memberful_account_urlmemberful_sign_in_urlmemberful_sign_out_url
<?php if ( is_user_logged_in() ) : ?>
<div class="profile-box signed-in">
<a class="profile" href="<?php echo memberful_account_url(); ?>">
<?php echo get_avatar( wp_get_current_user()->user_email, 48 ); ?>
<?php echo wp_get_current_user()->display_name; ?>
</a>
<a class="sign-out" href="<?php echo memberful_sign_out_url(); ?>">Sign out</a>
</div>
<?php else : ?>
<div class="profile-box signed-out">
Already a member? Please <a title="Sign in" href="<?php echo memberful_sign_in_url(); ?>">sign in</a>.
</div>
<?php endif; ?>
Link to downloads
You can use thememberful_account_get_download_url($slug) function to link to a download. The parameter to this function must be the slug of the download you’re linking to.
<a href="<?php echo memberful_account_get_download_url( '24-my-download' ); ?>">Download my ebook!</a>
Link to podcasts
If you’re using the private podcasts feature inside Memberful, you can use thememberful_wp_feed_url($id) function to link to a member’s unique RSS feed.
The parameter to this function must be the ID of the podcast you’re linking to. If the member doesn’t have access to the given podcast, it returns null, so we should check for that before rendering the link.
<?php
$url = memberful_wp_feed_url('24');
if ($url) {
echo '<a href="' . esc_url($url) . '">Subscribe to the podcast!</a>';
}
?>
Link to private RSS feeds
If you’ve turned on private RSS feeds, you can share a link to the member’s private RSS feed using this function:<?php memberful_private_rss_feed_link( "Your RSS feed", "You don't have access." ); ?>
