Created
September 8, 2022 11:34
-
-
Save abmiller99/07d3e7ff2cba670114b2be38d7c21141 to your computer and use it in GitHub Desktop.
Memberpress + WP Discourse (listen to mepr events, add/remove from Discourse groups)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// https://docs.memberpress.com/article/325-action-hooks-in-memberpress | |
add_action('mepr-event-create', 'listen_to_mepr_events'); | |
function listen_to_mepr_events($event) { | |
$obj = $event->get_data(); | |
//$obj might be a MeprTransaction object or a MeprSubscription object | |
if(!($obj instanceof MeprTransaction) && !($obj instanceof MeprSubscription)) { | |
return; // nothing here to do if we're not dealing with a txn or sub | |
} | |
$member = $obj->user(); // get member object data from event object | |
$user_id = $member->ID; // get user ID from object | |
if($member->is_active_on_membership($obj)) { //active membership | |
if(3780 == $obj->product_id) { //MONTHLY Membership | |
$add_group = 'Ksenia_Basic'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(3847 == $obj->product_id) { //6 Month (Essential) Membership | |
$add_group = 'Ksenia_Essential'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
} | |
else { //no matches | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment