Look like that “someone” is me! Try this as an mu-plugin
:
<?php if ( !defined( 'ABSPATH' ) ) { die(); }
/* ADD DATA COLLECTED BY s2MEMBER TO THAT EXPORTED BY CORE WORDPRESS PRIVACY TOOLS */
function kts_register_s2member_personal_data_exporter( $exporters ) {
$exporters['s2member-data'] = array(
'exporter_friendly_name' => __( 'Membership' ),
'callback' => 'kts_s2member_personal_data_exporter',
);
return $exporters;
}
add_filter( 'wp_privacy_personal_data_exporters', 'kts_register_s2member_personal_data_exporter' );
/**
* Finds and exports personal data associated by s2Member with an email address from the user and user_meta table.
*/
function kts_s2member_personal_data_exporter( $email_address ) {
$email_address = trim( $email_address );
$data_to_export = array();
$user = get_user_by( 'email', $email_address );
$user_prop_to_export = array(
's2member_custom' => __( 'Custom s2Member String' ),
's2member_subscr_id' => __( 'Subscription ID' ),
's2member_subscr_cid' => __( 'Stripe (Payment Processor) ID' ),
's2member_registration_ip' => __( 'IP Address at Registration' ),
's2member_last_payment_time' => __( 'Time of Last Payment' ),
's2member_login_counter' => __( 'Number of Logins' ),
's2member_auto_eot_time' => __( 'Subscription Expiry Date' ),
);
$user_data_to_export = array();
foreach ( $user_prop_to_export as $key => $name ) {
$value = '';
switch ( $key ) {
case 's2member_custom':
case 's2member_subscr_id':
case 's2member_subscr_cid':
case 's2member_registration_ip':
case 's2member_login_counter':
$value = get_user_field( $key, $user->ID );
break;
case 's2member_last_payment_time':
case 's2member_auto_eot_time':
date_default_timezone_set( 'EST' ); // change to appropriate timezone
$value = date( 'M jS, Y, g:i a T', get_user_field( $key, $user->ID ) );
break;
}
if ( ! empty( $value ) ) {
$user_data_to_export[] = array(
'name' => $name,
'value' => $value,
);
}
}
$data_to_export[] = array(
'group_id' => 's2member-data',
'group_label' => __( 'Membership' ),
'item_id' => "user-{$user->ID}",
'data' => $user_data_to_export,
);
return array(
'data' => $data_to_export,
'done' => true,
);
}