Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save femiyb/113def9fd6361fe6a472e324b5b524a4 to your computer and use it in GitHub Desktop.
Save femiyb/113def9fd6361fe6a472e324b5b524a4 to your computer and use it in GitHub Desktop.
<?php
//record when users gain the trial level
function my_pmpro_after_change_membership_level($level_id, $user_id)
{
global $trial_level_ids;
if(in_array($level_id, $trial_level_ids))
{
//add user meta to record the fact that this user has had this level before
update_user_meta($user_id, "pmpro_trial_level_used", "1");
}
}
add_action("pmpro_after_change_membership_level", "my_pmpro_after_change_membership_level", 10, 2);
//check at checkout if the user has used the trial level already
function my_pmpro_registration_checks($value)
{
global $current_user, $trial_level_ids;
if($current_user->ID && in_array(intval($_REQUEST['level']), $trial_level_ids))
{
//check if the current user has already used the trial level
$already = get_user_meta($current_user->ID, "pmpro_trial_level_used", true);
//yup, don't let them checkout
if($already)
{
global $pmpro_msg, $pmpro_msgt;
$pmpro_msg = "You have already used up your trial membership. Please select a full membership to checkout.";
$pmpro_msgt = "pmpro_error";
$value = false;
}
}
return $value;
}
add_filter("pmpro_registration_checks", "my_pmpro_registration_checks");
//swap the expiration text if the user has used the trial
function my_pmpro_level_expiration_text($text, $level)
{
global $current_user, $trial_level_ids;
//set this to the id of your trial level
if($current_user->ID && in_array($level->id, $trial_level_ids))
{
$text = "You have already used up your trial membership. Please select a full membership to checkout.";
}
return $text;
}
add_filter("pmpro_level_expiration_text", "my_pmpro_level_expiration_text", 10, 2);
function my_init()
{
global $trial_level_ids;
$trial_level_ids = array(12, 13); //set this to the id of your trial level
}
add_action('init', 'my_init');
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment