Quantcast
Channel: WordPress.org Forums » All Topics
Viewing all articles
Browse latest Browse all 512573

User Sync, add to grouping based on user role not working.

$
0
0

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


Viewing all articles
Browse latest Browse all 512573

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>