mepr_user_subscriptions_query_cols
Filters the columns included in the MemberPress user subscriptions query.
add_filter( 'mepr_user_subscriptions_query_cols', $callback, 10, 1 );
Description
This filter hook allows developers to modify the columns included in queries for MemberPress user subscriptions. It fires during subscription data retrieval. Developers can add, remove, or alter columns to customize the subscription data fetched by MemberPress, enabling more flexible reporting or integration scenarios.
Usage
add_filter( 'mepr_user_subscriptions_query_cols', 'your_function_name', 10, 1 );
Return Value
The filtered value.
Examples
<?php
/**
* Example of how to filter the columns returned when querying user subscriptions in MemberPress.
* This example adds a custom column 'expires_at' to the query if it's not already present.
*
* @param array $columns The array of subscription columns to query.
* @return array The modified array of subscription columns.
*/
function my_custom_mepr_subscription_query_columns( $columns ) {
// Check if 'expires_at' is already in the columns.
if ( ! in_array( 'expires_at', $columns, true ) ) {
// Add 'expires_at' to the array of columns if it's not already there.
$columns[] = 'expires_at';
}
return $columns;
}
// Add the filter to MemberPress's mepr_user_subscriptions_query_cols hook.
// We are providing 1 argument to our callback function, so the accepted args is 1.
add_filter( 'mepr_user_subscriptions_query_cols', 'my_custom_mepr_subscription_query_columns', 10, 1 );
?>
Placement
This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.
Source Code
uncanny-automator-pro/src/integrations/memberpress/actions/mp-cancelmembership.php:130
uncanny-automator-pro/src/integrations/memberpress/actions/mp-removeusermembership.php:106
public function cancel_memberships( $user_id, $action_data, $recipe_id, $args ) {
$membership = Automator()->parse->text( $action_data['meta'][ $this->action_meta ], $recipe_id, $user_id, $args );
$user_obj = get_user_by( 'id', $user_id );
$table = MeprSubscription::account_subscr_table(
'created_at',
'DESC',
'',
'',
'any',
'',
false,
array(
'member' => $user_obj->user_login,
'statuses' => array(
MeprSubscription::$active_str,
MeprSubscription::$suspended_str,
),
),
MeprHooks::apply_filters(
'mepr_user_subscriptions_query_cols',
array(
'id',
'product_id',
'created_at',
)
)
);
$error_message = '';
$subscription_cancelled = array();
$subscription_cancelled_amount = 0;
if ( $table['count'] > 0 ) {
foreach ( $table['results'] as $row ) {
if ( $row->sub_type == 'subscription' && ( $membership === $row->product_id || intval( '-1' ) === intval( $membership ) ) ) {
$sub = new MeprSubscription( $row->id );
try {
if ( $sub->status !== MeprSubscription::$cancelled_str ) {
$_REQUEST['silent'] = true; // Don't want to send cancellation notices.
$sub->expire_txns(); //Expire associated transactions for the subscription
$cancelled = $sub->cancel();
$subscription_cancelled[] = $row->id;
$amount = ( $sub->total >= 0.00 ) ? $sub->total : $sub->price;
$subscription_cancelled_amount = $subscription_cancelled_amount + $amount;
}
} catch ( Exception $e ) {
$error_message = $e->getMessage();
}
}
}
}
$subscription_cancelled_str = '';
if ( ! empty( $subscription_cancelled ) ) {
$subscription_cancelled_str = implode( ',', $subscription_cancelled );
}
$this->hydrate_tokens(
array(
'MPUSERMEMBERSHIP' => get_the_title( $membership ),
'MPUSERMEMBERSHIP_ID' => $membership,
'MPUSERMEMBERSHIP_URL' => get_permalink( $membership ),
'MPUSERMEMBERSHIP_THUMB_ID' => get_post_thumbnail_id( $membership ),
'MPUSERMEMBERSHIP_THUMB_URL' => get_the_post_thumbnail_url( $membership ),
'CANCELLEDSUBS' => $subscription_cancelled_str,
'CANCELLEDSUBS_AMOUNT' => $subscription_cancelled_amount,
)
);
Automator()->complete_action( $user_id, $action_data, $recipe_id, $error_message );
}