Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MaximilianoRicoTabo/42cc306303f386ee42c766be17be1ad8 to your computer and use it in GitHub Desktop.
Save MaximilianoRicoTabo/42cc306303f386ee42c766be17be1ad8 to your computer and use it in GitHub Desktop.
This recipe remove the default code that adds the sponsor area to membership account page ( forked and adapted to v3.1 UI )
<?php
/**
* This recipe remove the default code that addes the sponsor area to membership account page
* Needed when using WPML
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* Read this companion article for step-by-step directions on either method.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*/
remove_filter( "the_content", "pmprosm_the_content_account_page", 30 );
function my_pmprosm_the_content_account_page( $content ) {
global $post, $pmpro_pages, $current_user, $wpdb;
//Bail if not the account page or user is admin
if( is_admin() || ! is_page( $pmpro_pages['account'] ) ) {
return $content;
}
// Get the code ID for the current user.
$code_id = pmprosm_getCodeByUserID( $current_user->ID );
if ( isset( $current_user->membership_level->ID ) ) {
$pmprosm_values = pmprosm_getValuesByMainLevel( $current_user->membership_level->ID );
} else {
$pmprosm_values = '';
}
// Bail if no code ID or no values.
if( empty( $code_id ) || empty( $pmprosm_values ) ) {
return $content;
}
$code = pmprosm_getDiscountCodeByCodeID( $code_id );
if( ! is_array( $pmprosm_values['sponsored_level_id'] ) ) {
$sponsored_level_ids = array($pmprosm_values['sponsored_level_id']);
} else {
$sponsored_level_ids = $pmprosm_values['sponsored_level_id'];
}
// No sponsored levels to use codes for.
if( empty( $sponsored_level_ids ) || empty( $sponsored_level_ids[0] ) ) {
return $content;
}
$code_urls = pmprosm_get_checkout_urls( $code );
ob_start();
$limit = 1;
if( isset( $pmprosm_values['max_seats'] ) ) {
$limit = $pmprosm_values['max_seats'];
}
// Removing a sponsored member?
if( isset( $_REQUEST['pmprosm_remove_member_id'] ) && isset( $_REQUEST['pmprosm_remove_member_level'] ) ) {
// Check nonce.
if( wp_verify_nonce( $_REQUEST['_wpnonce'], 'pmprosm_remove_member' ) ) {
// Nonce is good. Remove the member.
$removed = pmprosm_remove_member_from_seat( intval( $_REQUEST['pmprosm_remove_member_id'] ), intval( $_REQUEST['pmprosm_remove_member_level'] ), $current_user->ID );
if ( $removed !== false ) {
$member = get_userdata( intval( $_REQUEST['pmprosm_remove_member_id'] ) );
$removed_message = sprintf( __( 'Sponsored User: %s was removed. (Membership Level: %s)', 'pmpro-sponsored-members' ), $member->display_name, intval( $_REQUEST['pmprosm_remove_member_level'] ) );
}
}
}
// Get members.
$member_ids = pmprosm_getChildren($current_user->ID);
?>
<div id="pmpro_account-sponsored" class="pmpro_card">
<h3 class="pmpro_card_title" ><?php esc_html_e( "Sponsored Seats", "pmpro-sponsored-members" );?></h3>
<div class="pmpro_card_content">
<?php if (empty($pmprosm_values['hide_display_discount_code']) || $pmprosm_values['hide_display_discount_code'] === false ) { ?>
<p><?php printf(esc_html__("Give this code to your sponsored members to use at checkout: %s", "pmpro-sponsored-members"), '<strong>' . $code->code . '</strong>');?></p>
<?php if(count($code_urls) > 1) { ?>
<p><?php esc_html_e("Or provide one of these direct links to register:", "pmpro-sponsored-members");?></p>
<?php } else { ?>
<p><?php esc_html_e("Or provide this direct link to register:", "pmpro-sponsored-members");?></p>
<?php } ?>
<ul>
<?php foreach($code_urls as $code_url) { ?>
<li><?php echo esc_html( $code_url['name'] );?>: <strong><a target="_blank" href="<?php echo esc_url( $code_url['url'] );?>"><?php echo esc_url( $code_url['url'] );?></a></strong></li>
<?php } ?>
</ul>
<?php } // hide_display_discount_code ?>
<?php if(empty($code->uses)) { ?>
<?php esc_html_e( "This code has unlimited uses.", "pmpro-sponsored-members" );?>
<?php } else { ?>
<?php printf( esc_html__("%s/%s uses.", "pmpro-sponsored-members" ), count( $member_ids ), $code->uses );?>
<?php } ?>
</div>
<?php
// Did we remove a child earlier?
if ( ! empty( $removed_message ) ) {
?>
<div class="pmpro_message pmpro_success"><?php echo esc_html( $removed_message ); ?></div>
<?php
}
// use same account display as in admin
if ( ! empty( $member_ids ) ) {
echo "<hr />";
echo my_pmprosm_display_sponsored_accounts( $member_ids );
}
?>
</div> <!-- end pmpro_account-sponsored -->
<?php
$temp_content = ob_get_contents();
ob_end_clean();
$content = str_replace( '<!-- end pmpro_account-profile -->', '<!-- end pmpro_account-profile -->' . $temp_content, $content );
return $content;
}
add_filter( "the_content", "my_pmprosm_the_content_account_page", 30 );
function my_pmprosm_display_sponsored_accounts( $member_ids ) {
global $current_user;
// Make sure we have something to display.
if ( empty( $member_ids) ) {
return '';
}
// Display sponsored members.
$count = 0;
ob_start();
?>
<div class="pmpro_card_content">
<h4><?php esc_html_e( "Sponsored Members", "pmpro-sponsored-members" );?></h2>
<div class="pmpro-sponsored-members_children" <?php if( count( $member_ids ) > 4 ) { ?>style="height: 150px; overflow: auto;"<?php } ?>>
<table class="wp-list-table widefat striped" width="100%" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th><?php esc_html_e( 'Date', 'pmpro-sponsored-members' ); ?></th>
<th><?php esc_html_e( 'Name', 'pmpro-sponsored-members' ); ?></th>
<th><?php esc_html_e( 'Email', 'pmpro-sponsored-members' ); ?></th>
<th><?php esc_html_e( 'Level', 'pmpro-sponsored-members' ); ?></th>
<th></th>
</tr>
</thead>
<tbody>
<?php
foreach($member_ids as $member_id)
{
$member = get_userdata($member_id);
if(empty($member)) {
continue;
}
$member->membership_level = pmpro_getMembershipLevelForUser($member_id);
// Figure out URL based on where we are.
if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/user-edit.php' ) {
// Editing another user in the admin.
$qargs = array(
'user_id' => intval($_REQUEST['user_id']),
'pmprosm_remove_member_id' => $member->ID,
'pmprosm_remove_member_level' => $member->membership_level->id
);
$remove_url = add_query_arg( $qargs, admin_url('user-edit.php') );
} elseif ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/profile.php' ) {
// Editing yourself on profile.php
$qargs = array(
'pmprosm_remove_member_id' => $member->ID,
'pmprosm_remove_member_level' => $member->membership_level->id
);
$remove_url = add_query_arg( $qargs, admin_url('profile.php') );
} else {
// Assume frontend account page.
$qargs = array(
'user_id' => $current_user->ID,
'pmprosm_remove_member_id' => $member->ID,
'pmprosm_remove_member_level' => $member->membership_level->id
);
$remove_url = add_query_arg( $qargs, pmpro_url('account') );
}
$remove_url = wp_nonce_url( $remove_url, 'pmprosm_remove_member' );
?>
<tr<?php if($count++ % 2 == 1) { ?> class="alternate"<?php } ?>>
<td><?php echo date(get_option("date_format"), $member->membership_level->startdate); ?></td>
<td><?php echo esc_html( $member->display_name ); ?></td>
<td>
<?php if ( current_user_can( 'edit_users' ) ) { ?>
<a href="<?php echo get_edit_user_link($member_id); ?>"><?php echo esc_html( $member->user_email ); ?></a>
<?php } else { ?>
<?php echo esc_html( $member->user_email ); ?>
<?php } ?>
</td>
<td><?php echo esc_html( $member->membership_level->name ); ?></td>
<td>
<?php
$delete_text = esc_attr__('Are you sure you want to remove this member?', 'pmpro-sponsored-members' );
?>
<a href="<?php echo $remove_url; ?>" onclick="<?php echo esc_js('return confirm("' . $delete_text . '");'); ?>"><?php _e( 'Remove', 'pmpro-sponsored-members'); ?></a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</div>
<?php
$content = ob_get_contents();
ob_end_clean();
return $content;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment