Skip to content

Instantly share code, notes, and snippets.

@andrewlimaza
Forked from travislima/pmpro-grace-period.php
Last active June 5, 2023 14:35
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save andrewlimaza/de437b8b82f331df6df953081be3081c to your computer and use it in GitHub Desktop.
Save andrewlimaza/de437b8b82f331df6df953081be3081c to your computer and use it in GitHub Desktop.
PMPRO - Grace Period (After expiration date is met)
<?php
/*
* Add 15 day grace period when membership expires
*/
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 );
// Automatically approve the user.
update_user_meta(
$user_id, 'pmpro_approval_' . $level_id, array(
'status' => 'approved',
'timestamp' => current_time( 'timestamp' ),
'who' => 1, // change this to admin ID
'approver' => 'admin', // change this name.
)
);
}
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