Skip to content

Instantly share code, notes, and snippets.

@kimwhite
Forked from travislima/pmpro-grace-period.php
Last active April 19, 2023 16:15
Show Gist options
  • Save kimwhite/40bc1a7d5a2aa4252729774dcfb09514 to your computer and use it in GitHub Desktop.
Save kimwhite/40bc1a7d5a2aa4252729774dcfb09514 to your computer and use it in GitHub Desktop.
Add a "Grace Period" to a Paid Memberships Pro Membership (After expiration date is met). by level
<?php
/*
* The Code Recipe will add a 15-day grace period to a members membership once the membership expires.
* for specific levels, change line 13 to your level ID
* Add this Code Recipe to a PMPro Customization Plugin - https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
* For more information on Paid Memberships Pro - www.paidmembershipspro.com
*/
function my_pmpro_membership_post_membership_expiry( $user_id, $level_id ) {
// Make sure we aren't already in a grace period for this level
$grace_level = get_user_meta( $user_id, 'grace_level', true );
if ( empty( $grace_level ) || $grace_level !== $level_id ) {
if ( ! in_array( $level_id, array( 7 ) ) ){ // add or change level ID's 1,2,3 etc.
return;
}
// Give them their level back with 15 day expiration
$grace_level = array();
$grace_level['user_id'] = $user_id;
$grace_level['membership_id'] = $level_id;
$grace_level['enddate'] = date( 'Y-m-d H:i:s', strtotime( '+15 days', current_time( 'timestamp' ) ) );
$changed = pmpro_changeMembershipLevel( $grace_level, $user_id );
update_user_meta( $user_id, 'grace_level', $level_id );
}
else
delete_user_meta($user_id, 'grace_level');
}
add_action('pmpro_membership_post_membership_expiry', 'my_pmpro_membership_post_membership_expiry', 10, 2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment