Skip to content

Instantly share code, notes, and snippets.

@cartpauj
Last active January 1, 2024 05:55
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save cartpauj/9a8e0edde649d6fb3197508bc7b14313 to your computer and use it in GitHub Desktop.
Save cartpauj/9a8e0edde649d6fb3197508bc7b14313 to your computer and use it in GitHub Desktop.
Get all sub-accounts for a parent user in MemberPress Corporate Accounts
<?php
$user = MeprUtils::get_currentuserinfo();
$sub_user_ids = array();
if($user !== false) {
$transactions = $user->active_product_subscriptions('transactions');
if(!empty($transactions)) {
foreach($transactions as $txn) {
if(($sub = $txn->subscription()) !== false) {
//Recurring subscription
$ca = MPCA_Corporate_Account::find_corporate_account_by_obj_id($sub->id, 'subscriptions');
}
else {
//Non Recurring subscription
$ca = MPCA_Corporate_Account::find_corporate_account_by_obj_id($txn->id, 'transactions');
}
if(!empty($ca) && isset($ca->id) && !empty($ca->id)) {
$sub_users = $ca->sub_users();
foreach($sub_users as $user) {
$sub_user_ids[] = $user->ID;
}
}
}
$sub_user_ids = array_unique($sub_user_ids);
}
}
if(!empty($sub_user_ids)) {
echo '<h2>Your Sub Account Users</h2><ul>';
foreach($sub_user_ids as $user_id) {
$user = new MeprUser($user_id);
echo '<li>' . $user->user_login . '</li>';
}
echo '</ul>';
}
@Dabalina
Copy link

Is there a way to work this in reverse?

Basically to check to see if a user is a Sub Account and then look for the parent Corporate Account ID, and I am stuck there, I'm trying to figure out how to query all the Corporate Accounts get the matching ID and find the main user ID associated with the Corporate account.

@cartpauj
Copy link
Author

cartpauj commented Feb 11, 2021

@Dabalina you can get the user's meta global $user_ID; $mpca_id = get_user_meta($user_ID, 'mpca_corporate_account_id, true);

That will return a Corporate account ID (or nothing).

Once you have the corporate account ID, you can query the wp_mepr_corporate_accounts for that id to get the parent user ID. SELECT user_id FROM wp_mepr_corporate_accounts WHERE id = "$mpca_id"

@Dabalina
Copy link

Thank you! That worked perfectly!

@renatofrias26
Copy link

Hey mate, that is great. Thanks for sharing.
How hard would if be to adapt that to add a custom Role for each sub account? Basically I would like to have different capabilities for corp account vs sub account.
Cheers!

@upsited
Copy link

upsited commented Oct 26, 2021

@renatofrias26 I am trying to set a different role for sub accounts as well. Have you found a solution for this?

@mrkarstrom
Copy link

Hey mate, that is great. Thanks for sharing. How hard would if be to adapt that to add a custom Role for each sub account? Basically I would like to have different capabilities for corp account vs sub account. Cheers!

There is a Wordpress plugin for this called Members: https://memberpress.com/plugins/members

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