Skip to content

Instantly share code, notes, and snippets.

@pbrocks
Created October 11, 2017 00:01
Show Gist options
  • Save pbrocks/64ba684d34db8054f06d69fa30a22f4d to your computer and use it in GitHub Desktop.
Save pbrocks/64ba684d34db8054f06d69fa30a22f4d to your computer and use it in GitHub Desktop.
Illustration of how to add columns to the PMPro Members Export CSV
<?php
/*
* Add Previous Level, Start Date, Date Level Changed, and End Date columns to Members List CSV.
* To achieve this, we are using a PMPro filter which then calls a function for its value,
* one function for each of the columns added.
*/
function refitrev_column_changes( $columns ) {
$columns = array(
'previous level' => 'refitrev_changes_previous_level',
'start date' => 'refitrev_changes_start_date',
'date changed' => 'refitrev_changes_date_changed',
'end date' => 'refitrev_changes_end_date',
);
return $columns;
}
add_filter( 'pmpro_members_list_csv_extra_columns', 'refitrev_column_changes' );
// Callback functions
function refitrev_changes_previous_level( $theuser, $heading ) {
global $wpdb;
$db_query = "
SELECT ml.name FROM $wpdb->pmpro_memberships_users mu
LEFT JOIN $wpdb->pmpro_membership_levels ml
ON mu.membership_id = ml.id
WHERE mu.user_id = %d
ORDER BY mu.id
DESC LIMIT 1 OFFSET 1
";
$previous_level = $wpdb->get_var( $wpdb->prepare( $db_query, $theuser->ID ) );
return $previous_level;
}
function refitrev_changes_start_date( $theuser, $heading ) {
global $wpdb;
$db_query = "
SELECT mu.startdate FROM $wpdb->pmpro_memberships_users mu
LEFT JOIN $wpdb->pmpro_membership_levels ml
ON mu.membership_id = ml.id
WHERE mu.user_id = %d
ORDER BY mu.id
DESC LIMIT 1 OFFSET 1
";
$startdate = $wpdb->get_var( $wpdb->prepare( $db_query, $theuser->ID ) );
return $startdate;
}
function refitrev_changes_date_changed( $theuser, $heading ) {
global $wpdb;
$db_query = "
SELECT mu.modified FROM $wpdb->pmpro_memberships_users mu
LEFT JOIN $wpdb->pmpro_membership_levels ml
ON mu.membership_id = ml.id
WHERE mu.user_id = %d
ORDER BY mu.id
DESC LIMIT 1 OFFSET 1
";
$modified = $wpdb->get_var( $wpdb->prepare( $db_query, $theuser->ID ) );
return $modified;
}
function refitrev_changes_end_date( $theuser, $heading ) {
global $wpdb;
$db_query = "
SELECT mu.enddate FROM $wpdb->pmpro_memberships_users mu
LEFT JOIN $wpdb->pmpro_membership_levels ml
ON mu.membership_id = ml.id
WHERE mu.user_id = %d
ORDER BY mu.id
DESC LIMIT 1 OFFSET 1
";
$enddate = $wpdb->get_var( $wpdb->prepare( $db_query, $theuser->ID ) );
return $enddate;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment