-
-
Save cartpauj/1bb00840a342ba22bfff to your computer and use it in GitHub Desktop.
<?php | |
// 1) User purchases and payment is complete | |
function capture_completed_transaction($txn) { | |
//It's possible this could be a recurring transaction for a product the user is already subscribed to so probably use a user meta field described below | |
$user = new MeprUser($txn->user_id); //A MeprUser object | |
$membership = new MeprProduct($txn->product_id); //A MeprProduct object | |
$users_memberships = $user->active_product_subscriptions('ids'); //An array of membership CPT ID's | |
//Here you may want to grab a user meta field of your own creating and check to see if the user is already subscribed to this membership or not | |
//If not, then push them to your 3rd party application and update the user meta field | |
//If so, then do nothing | |
} | |
add_action('mepr-txn-status-complete', 'capture_completed_transaction'); | |
//2) Transaction has expired (user cancelled, lapsed etc) | |
function catch_txn_expired($event) { | |
$txn = new MeprTransaction($event->evt_id); //evt_id should be the id of a transaction | |
$user = new MeprUser($txn->user_id); | |
$users_memberships = $user->active_product_subscriptions(); | |
//Make sure they're not still subscribed to this membership somehow | |
if(!empty($users_memberships)) { | |
if(!in_array($txn->product_id, $users_memberships, false)) { | |
//They are actually expired so remove them from your third party app here | |
} | |
//else the user is still subscribed to this membership, so do nothing | |
} | |
else { | |
//The user has no memberships, so it's definitely expired | |
} | |
} | |
add_action('mepr-event-transaction-expired', 'catch_txn_expired'); | |
//3a) User updates their email address (cannot change usernames in WP) | |
function user_changed_email($errors, $mepr_user) { | |
if(!empty($errors)) { return $errors; } | |
$new_email = stripslashes($_POST['user_email']); | |
if($mepr_user->user_email != $new_email) { | |
//Email has changed, so update your third party app here | |
} | |
} | |
add_filter('mepr-validate-account', 'user_changed_email', 10, 2); //Need to use this hook to get old and new emails | |
//3b) User updates password via MemberPress (if they do it via the WordPress login page you'll have to find another way to tie into that) | |
function catch_mepr_password_change() { | |
if(!isset($_REQUEST['action']) || $_REQUEST['action'] != 'updatepassword') { return; } | |
$new_pass = $_POST['mepr-new-password']; | |
$new_pass_confirm = $_POST['mepr-confirm-password']; | |
if(($new_pass == $new_pass_confirm) && !empty($new_pass)) { | |
//Push the password to your 3rd party app. $new_pass is plaintext password | |
} | |
} | |
add_action('init', 'catch_mepr_password_change', 3); |
I couldn't find only one action, mepr-event-transaction-expired
, but the others are there - specially the init
one which did exactly what I needed.
The only note - it fires on password update in My Account and it doesn't fire on lost password reset process.
How can I add user roles when a user purchases a subscription?
MemberPress does have a User Roles add-on that does that.
I don't understand why, but the Roles plugin doesn't work for me
Are your member's transactions completing properly? I know the User Roles add-on triggers the role changes when the transaction is completed.
Hello team,
There is a 'hook' that allows me to disable recurring payments based on the value of a perozalized field.
I have tried with 'mepr-validate-signup' but I have not been able to find where it is set if I have the recurring payment activated.
Regards
How do I know if a user subscription has expired automatically
I edited expires_at field, but mepr-event-transaction-expired not work, can someone help me ?
How do these work?
I can't see of these actions within the plugin.