diff --git a/includes/incoming-events/class-woocommerce-membership-updated.php b/includes/incoming-events/class-woocommerce-membership-updated.php index 25f31910..0321a1fe 100644 --- a/includes/incoming-events/class-woocommerce-membership-updated.php +++ b/includes/incoming-events/class-woocommerce-membership-updated.php @@ -99,7 +99,16 @@ public function update_membership() { return; } - $user_membership->update_status( $this->get_new_status() ); + $status = $this->get_new_status(); + $is_managed = get_post_meta( $user_membership->get_id(), Memberships_Admin::NETWORK_MANAGED_META_KEY, true ); + // If the membership is being cancelled or expired, remove the network managed flag. + if ( in_array( $status, [ 'cancelled', 'expired' ], true ) && $is_managed ) { + delete_post_meta( $user_membership->get_id(), Memberships_Admin::NETWORK_MANAGED_META_KEY ); + // Otherwise, if the membership is not managed, set the network managed flag. + } elseif ( ! $is_managed ) { + update_post_meta( $user_membership->get_id(), Memberships_Admin::NETWORK_MANAGED_META_KEY, true ); + } + $user_membership->update_status( $status ); $user_membership->add_note( sprintf( // translators: %s is the site URL.