Replies: 0
Hi, I’ve got the following snippet in my theme’s functions:
/**
* Add or remove users to MailChimp "groups" based on WP Role or WC Memberships and Membership Status
*/
add_filter( 'mailchimp_sync_subscriber_data', function( $subscriber, $user )
{
// toggle interest ID based on user role
if( in_array( 'wuwo_coach', $user->roles ) )
{
$subscriber->interests[ "c3a673d82e" ] = true; // add user to Membership Status -> Coach group
}
else
{
$subscriber->interests[ "c3a673d82e" ] = false; // otherwise make sure they are not inhte Coach group
}
// Use WC Memberships functions to determine active "Member" or "Paused" status:
if(
// If they are an ACTIVE member of Gyms or Kids/Teens:
wc_memberships_is_user_active_member( $user->ID, 'session-plan' )
|| wc_memberships_is_user_active_member( $user->ID, 'kids-session-plan' )
)
{
$subscriber->interests[ "42c6a43487" ] = true; // add user to "Member" group
$subscriber->interests[ "7b642e4674" ] = false; // make sure they are removed from the "Paused" interest group
}
else if(
// If they are an INACTIVE member of Gyms or Kids/Teens:
wc_memberships_is_user_member( $user->ID, 'session-plan' )
|| wc_memberships_is_user_member( $user->ID, 'kids-session-plan' )
)
{
$subscriber->interests[ "42c6a43487" ] = false; // remove user from "Member" interest group
$subscriber->interests[ "7b642e4674" ] = true; // add user to "Paused" interest group
}
//////////////////////////////////////////////////////////////////////////////
// add user to the "Products" Groupings based on membership product purchases:
//////////////////////////////////////////////////////////////////////////////
// Paying Customer?? Use WC Subscriptions function to determine if this user is paying for their subscription/s:
if( wcs_user_has_subscription( $user->ID, '', 'active' ) )
{
$subscriber->interests[ "79e1ec6496" ] = true; // add user to "Paying Customer" grouping
}
else
{
$subscriber->interests[ "79e1ec6496" ] = false; // make sure they are NOT in the "Paying Customer" grouping
}
// Free Members: any memberships with status 'complimentary'
$complimentary_args = array(
'status' => array( 'complimentary' ),
);
$complimentary_memberships = wc_memberships_get_user_memberships( $user->ID, $complimentary_args );
if( ! empty( $complimentary_memberships ) )
{
$subscriber->interests[ "97fc802ada" ] = true; // add user to "Free Member" grouping
}
// Finishers digital product and 'finishers' membership):
if( wc_memberships_is_user_member( $user->ID, 'finishers' ) )
{
$subscriber->interests[ "89b80243f9" ] = true; // add user to "Finishers" grouping
}
// Gyms:
if( wc_memberships_is_user_member( $user->ID, 'session-plan' ) )
{
$subscriber->interests[ "efebc92735" ] = true; // add user to "Gyms" grouping
}
// Competitors:
if( wc_memberships_is_user_member( $user->ID, 'comp-session-plan' ) )
{
$subscriber->interests[ "70ee678397" ] = true; // add user to "Competitors" grouping
}
// Kids and Teens:
if(
wc_memberships_is_user_member( $user->ID, 'kids-session-plan' )
|| wc_memberships_is_user_member( $user->ID, 'teens-session-plan' )
)
{
$subscriber->interests[ "089ab9402d" ] = true; // add user to "Kids and Teens" grouping
}
return $subscriber;
}, 10, 2 );
All but one of the interest groupings seem to be functioning properly. The one that is not working is the first one, based on $user->roles
. “wuwo_coach” is a custom role created by a plugin. I have over 100 users with that role. User Sync is successfully syncing them to my MailChimp list, but they are not being placed in the above interest group. I have triple checked that the interest grouping ID is correct, and I have run a manual sync 3 times, with no success. The “wuwo_coach” users are being added to the list, but are not being added to the grouping. I can’t figure out what is going wrong. The debug log does not go into detail, it only reports whether the user was successfully synced.
How can I debug this filter? Can you see anything wrong with the code which would prevent it from working as expected?
Thank you in advance for your assistance.
Cheers!
– Colin