Skip to content

Instantly share code, notes, and snippets.

@travislima
Last active October 12, 2022 16:52
Show Gist options
  • Save travislima/ac1f06986ef8c9e8bc437f1a1d83e2c9 to your computer and use it in GitHub Desktop.
Save travislima/ac1f06986ef8c9e8bc437f1a1d83e2c9 to your computer and use it in GitHub Desktop.
Add a "Grace Period" to a Paid Memberships Pro Membership (After expiration date is met).
<?php
/*
* The Code Recipe will add a 15-day grace period to a members membership once the membership expires.
* 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 ) {
// 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);
@laurenhagan0306
Copy link

This recipe is included in the blog post on "Add a Grace Period to a Membership Level with PMPro" at Paid Memberships Pro here: https://www.paidmembershipspro.com/add-a-grace-period-to-a-pmpro-membership/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment