Created
October 11, 2017 00:01
-
-
Save pbrocks/64ba684d34db8054f06d69fa30a22f4d to your computer and use it in GitHub Desktop.
Illustration of how to add columns to the PMPro Members Export CSV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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