Skip to content

Instantly share code, notes, and snippets.

@abmiller99
Created September 8, 2022 11:34
Show Gist options
  • Save abmiller99/07d3e7ff2cba670114b2be38d7c21141 to your computer and use it in GitHub Desktop.
Save abmiller99/07d3e7ff2cba670114b2be38d7c21141 to your computer and use it in GitHub Desktop.
Memberpress + WP Discourse (listen to mepr events, add/remove from Discourse groups)
<?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