Created
June 11, 2018 06:31
-
-
Save pbrocks/af7e530a0425adb89de7f3de387f88c1 to your computer and use it in GitHub Desktop.
Using this recipe, you can easily customize your membership account page by replacing the [pmpro_account] with [pmpro-neato-account-page]. To select to show only certain sections, add the sections to the shortcode, as in [pmpro-neato-account-page sections="membership,profile"/]
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 | |
/** | |
* Create a custom shortcode to show membership account information | |
* | |
* Add this code to your PMPro Customizations Plugin - For more info on this visit: | |
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/ | |
*/ | |
function pmpro_shortcode_account_customized( $atts, $content = null, $code = '' ) { | |
global $wpdb, $pmpro_msg, $pmpro_msgt, $pmpro_levels, $current_user, $levels; | |
// $atts ::= array of attributes | |
// $content ::= text within enclosing form of shortcode element | |
// $code ::= the shortcode found, when == callback name | |
// examples: [pmpro-neato-account-page] [pmpro-neato-account-page sections="membership,profile"/] | |
extract( | |
shortcode_atts( | |
array( | |
'section' => '', | |
'sections' => 'membership,profile,invoices,links', | |
), $atts | |
) | |
); | |
// did they use 'section' instead of 'sections'? | |
if ( ! empty( $section ) ) { | |
$sections = $section; | |
} | |
// turn into an array | |
$sections = explode( ',', $sections ); | |
ob_start(); | |
// if a member is logged in, show them some info here (1. past invoices. 2. billing information with button to update.) | |
if ( pmpro_hasMembershipLevel() ) { | |
$ssorder = new MemberOrder(); | |
$ssorder->getLastMemberOrder(); | |
$invoices = $wpdb->get_results( "SELECT *, UNIX_TIMESTAMP(timestamp) as timestamp FROM $wpdb->pmpro_membership_orders WHERE user_id = '$current_user->ID' ORDER BY timestamp DESC LIMIT 6" ); | |
?> | |
<div id="pmpro_account"> | |
<?php if ( in_array( 'membership', $sections ) || in_array( 'memberships', $sections ) ) { ?> | |
<div id="pmpro_account-membership" class="pmpro_box"> | |
<h3><?php _e( 'Neato Memberships YO!!', 'paid-memberships-pro' ); ?></h3> | |
<table width="100%" cellpadding="0" cellspacing="0" border="0"> | |
<thead> | |
<tr> | |
<th><?php _e( 'Neato Level', 'paid-memberships-pro' ); ?></th> | |
<th><?php _e( 'Neato Billing', 'paid-memberships-pro' ); ?></th> | |
<th><?php _e( 'Neato Expiration', 'paid-memberships-pro' ); ?></th> | |
</tr> | |
</thead> | |
<tbody> | |
<?php | |
// TODO: v2.0 will loop through levels here | |
$level = $current_user->membership_level; | |
?> | |
<tr> | |
<td class="pmpro_account-membership-levelname"> | |
<?php echo $current_user->membership_level->name; ?> | |
<div class="pmpro_actionlinks"> | |
<?php do_action( 'pmpro_member_action_links_before' ); ?> | |
<?php | |
/* | |
<?php if( $current_user->membership_level->allow_signups && pmpro_isLevelExpiringSoon( $current_user->membership_level) ) { ?> | |
<a href="<?php echo pmpro_url("checkout", "?level=" . $current_user->membership_level->id, "https")?>"><?php _e("Renew", "pmpro");?></a> | |
<?php } ?> | |
<?php if((isset($ssorder->status) && $ssorder->status == "success") && (isset($ssorder->gateway) && in_array($ssorder->gateway, array("authorizenet", "paypal", "stripe", "braintree", "payflow", "cybersource")))) { ?> | |
<a href="<?php echo pmpro_url("billing", "", "https")?>"><?php _e("Update Billing Info", "pmpro"); ?></a> | |
<?php } ?> | |
<?php | |
//To do: Only show CHANGE link if this level is in a group that has upgrade/downgrade rules | |
if(count($pmpro_levels) > 1 && !defined("PMPRO_DEFAULT_LEVEL")) { ?> | |
<a href="<?php echo pmpro_url("levels")?>"><?php _e("Change", "pmpro");?></a> | |
<?php } ?> | |
<a href="<?php echo pmpro_url("cancel", "?level=" . $current_user->membership_level->id)?>"><?php _e("Cancel", "pmpro");?></a> | |
*/ | |
?> | |
<a href="http://www.disneyworld.com">Neato Very Own Link</a> | |
<?php do_action( 'pmpro_member_action_links_after' ); ?> | |
</div> <!-- end pmpro_actionlinks --> | |
</td> | |
<td class="pmpro_account-membership-levelfee"> | |
<p><?php echo pmpro_getLevelCost( $level, true, true ); ?></p> | |
</td> | |
<td class="pmpro_account-membership-expiration"> | |
<?php | |
if ( $current_user->membership_level->enddate ) { | |
echo date( get_option( 'date_format' ), $current_user->membership_level->enddate ); | |
} else { | |
echo '---'; | |
} | |
?> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<?php // Todo: If there are multiple levels defined that aren't all in the same group defined as upgrades/downgrades ?> | |
<div class="pmpro_actionlinks"> | |
<a href="<?php echo pmpro_url( 'levels' ); ?>"><?php _e( 'View all Membership Options', 'paid-memberships-pro' ); ?></a> | |
</div> | |
</div> <!-- end pmpro_account-membership --> | |
<?php } ?> | |
<?php if ( in_array( 'profile', $sections ) ) { ?> | |
<div id="pmpro_account-profile" class="pmpro_box"> | |
<?php wp_get_current_user(); ?> | |
<h3><?php _e( 'Neato Account', 'paid-memberships-pro' ); ?></h3> | |
<?php if ( $current_user->user_firstname ) { ?> | |
<p><?php echo $current_user->user_firstname; ?> <?php echo $current_user->user_lastname; ?></p> | |
<?php } ?> | |
<ul> | |
<?php do_action( 'pmpro_account_bullets_top' ); ?> | |
<li><strong><?php _e( 'Neato Username', 'paid-memberships-pro' ); ?>:</strong> <?php echo $current_user->user_login; ?></li> | |
<li><strong><?php _e( 'Neato Email', 'paid-memberships-pro' ); ?>:</strong> <?php echo $current_user->user_email; ?></li> | |
<?php do_action( 'pmpro_account_bullets_bottom' ); ?> | |
</ul> | |
<div class="pmpro_actionlinks"> | |
<a href="<?php echo admin_url( 'profile.php' ); ?>"><?php _e( 'Edit Profile', 'paid-memberships-pro' ); ?></a> | |
<a href="<?php echo admin_url( 'profile.php' ); ?>"><?php _e( 'Change Password', 'paid-memberships-pro' ); ?></a> | |
</div> | |
</div> <!-- end pmpro_account-profile --> | |
<?php } ?> | |
<?php if ( in_array( 'invoices', $sections ) && ! empty( $invoices ) ) { ?> | |
<div id="pmpro_account-invoices" class="pmpro_box"> | |
<h3><?php _e( 'Neato Past Invoices', 'paid-memberships-pro' ); ?></h3> | |
<table width="100%" cellpadding="0" cellspacing="0" border="0"> | |
<thead> | |
<tr> | |
<th><?php _e( 'Neato Date', 'paid-memberships-pro' ); ?></th> | |
<th><?php _e( 'Neato Level', 'paid-memberships-pro' ); ?></th> | |
<th><?php _e( 'Neato Amount', 'paid-memberships-pro' ); ?></th> | |
</tr> | |
</thead> | |
<tbody> | |
<?php | |
$count = 0; | |
foreach ( $invoices as $invoice ) { | |
if ( $count++ > 4 ) { | |
break; | |
} | |
// get an member order object | |
$invoice_id = $invoice->id; | |
$invoice = new MemberOrder(); | |
$invoice->getMemberOrderByID( $invoice_id ); | |
$invoice->getMembershipLevel(); | |
?> | |
<tr id="pmpro_account-invoice-<?php echo $invoice->code; ?>"> | |
<td><a href="<?php echo pmpro_url( 'invoice', '?invoice=' . $invoice->code ); ?>"><?php echo date( get_option( 'date_format' ), $invoice->timestamp ); ?></td> | |
<td> | |
<?php | |
if ( ! empty( $invoice->membership_level ) ) { | |
echo $invoice->membership_level->name; | |
} else { | |
echo __( 'N/A', 'paid-memberships-pro' ); | |
} | |
?> | |
</td> | |
<td><?php echo pmpro_formatPrice( $invoice->total ); ?></td> | |
</tr> | |
<?php | |
} | |
?> | |
</tbody> | |
</table> | |
<?php if ( $count == 6 ) { ?> | |
<div class="pmpro_actionlinks"><a href="<?php echo pmpro_url( 'invoice' ); ?>"><?php _e( 'View All Invoices', 'paid-memberships-pro' ); ?></a></div> | |
<?php } ?> | |
</div> <!-- end pmpro_account-invoices --> | |
<?php } ?> | |
<?php if ( in_array( 'links', $sections ) && ( has_filter( 'pmpro_member_links_top' ) || has_filter( 'pmpro_member_links_bottom' ) ) ) { ?> | |
<div id="pmpro_account-links" class="pmpro_box"> | |
<h3><?php _e( 'Neato Member Links', 'paid-memberships-pro' ); ?></h3> | |
<ul> | |
<?php | |
do_action( 'pmpro_member_links_top' ); | |
?> | |
<?php | |
do_action( 'pmpro_member_links_bottom' ); | |
?> | |
</ul> | |
</div> <!-- end pmpro_account-links --> | |
<?php } ?> | |
</div> <!-- end pmpro_account --> | |
<?php | |
} | |
$content = ob_get_contents(); | |
ob_end_clean(); | |
return $content; | |
} | |
add_shortcode( 'pmpro-neato-account-page', 'pmpro_shortcode_account_customized' ); | |
add_action( 'pmpro_member_links_bottom', 'pmpro_member_links_bottom_echo' ); | |
function pmpro_member_links_bottom_echo() { | |
echo '<h3>pmpro_member_links_bottom_echo</h3>'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment