Skip to content

Instantly share code, notes, and snippets.

@andrewlimaza
Created March 5, 2019 10:05
Show Gist options
  • Save andrewlimaza/c697025cb78359d8e5f50cf99b6d1933 to your computer and use it in GitHub Desktop.
Save andrewlimaza/c697025cb78359d8e5f50cf99b6d1933 to your computer and use it in GitHub Desktop.
Translating "Pay by Check" example for Paid Memberships Pro.
<?php
/**
* This will translate "Pay by Check" into "Pay by Cheque or Bank Transfer" and load custom templates for confirmation and invoice.php
* Please create a "templates" folder inside your PMPro Customizations Plugin as per this guide - https://www.paidmembershipspro.com/documentation/templates/customizing-via-a-custom-plugin/
* Add this code to your PMPro Customizations Plugin - https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
* For more help visit www.paidmembershipspro.com
*/
function my_pmpro_text_strings( $translated_text, $text, $domain ) {
switch ( $translated_text ) {
case 'Pay by Check' :
$translated_text = __( 'Pay by Cheque or Bank Transfer', 'paid-memberships-pro' );
break;
}
return $translated_text;
}
add_filter( 'gettext', 'my_pmpro_text_strings', 20, 3 );
function my_pmpro_pages_shortcode_confirmation($content) {
ob_start();
include(plugin_dir_path(__FILE__) . "templates/confirmation.php");
$temp_content = ob_get_contents();
ob_end_clean();
return $temp_content;
}
add_filter("pmpro_pages_shortcode_confirmation", "my_pmpro_pages_shortcode_confirmation");
function my_pmpro_pages_shortcode_invoice($content) {
ob_start();
include(plugin_dir_path(__FILE__) . "templates/invoice.php");
$temp_content = ob_get_contents();
ob_end_clean();
return $temp_content;
}
add_filter("pmpro_pages_shortcode_invoice", "my_pmpro_pages_shortcode_invoice");
<?php
global $wpdb, $current_user, $pmpro_invoice, $pmpro_msg, $pmpro_msgt;
if($pmpro_msg)
{
?>
<div class="pmpro_message <?php echo $pmpro_msgt?>"><?php echo $pmpro_msg?></div>
<?php
}
if(empty($current_user->membership_level))
$confirmation_message = "<p>" . __('Your payment has been submitted. Your membership will be activated shortly.', 'paid-memberships-pro' ) . "</p>";
else
$confirmation_message = "<p>" . sprintf(__('Thank you for your membership to %s. Your %s membership is now active.', 'paid-memberships-pro' ), get_bloginfo("name"), $current_user->membership_level->name) . "</p>";
//confirmation message for this level
$level_message = $wpdb->get_var("SELECT l.confirmation FROM $wpdb->pmpro_membership_levels l LEFT JOIN $wpdb->pmpro_memberships_users mu ON l.id = mu.membership_id WHERE mu.status = 'active' AND mu.user_id = '" . $current_user->ID . "' LIMIT 1");
if(!empty($level_message))
$confirmation_message .= "\n" . stripslashes($level_message) . "\n";
?>
<?php if(!empty($pmpro_invoice) && !empty($pmpro_invoice->id)) { ?>
<?php
$pmpro_invoice->getUser();
$pmpro_invoice->getMembershipLevel();
$confirmation_message .= "<p>" . sprintf(__('Below are details about your membership account and a receipt for your initial membership invoice. A welcome email with a copy of your initial membership invoice has been sent to %s.', 'paid-memberships-pro' ), $pmpro_invoice->user->user_email) . "</p>";
//check instructions
if($pmpro_invoice->gateway == "check" && !pmpro_isLevelFree($pmpro_invoice->membership_level))
$confirmation_message .= wpautop(wp_unslash( pmpro_getOption("instructions") ) );
/**
* All devs to filter the confirmation message.
* We also have a function in includes/filters.php that applies the the_content filters to this message.
* @param string $confirmation_message The confirmation message.
* @param object $pmpro_invoice The PMPro Invoice/Order object.
*/
$confirmation_message = apply_filters("pmpro_confirmation_message", $confirmation_message, $pmpro_invoice);
echo $confirmation_message;
?>
<h3>
<?php printf(__('Invoice #%s on %s', 'paid-memberships-pro' ), $pmpro_invoice->code, date_i18n(get_option('date_format'), $pmpro_invoice->timestamp));?>
</h3>
<a class="pmpro_a-print" href="javascript:window.print()"><?php _e('Print', 'paid-memberships-pro' );?></a>
<ul>
<?php do_action("pmpro_invoice_bullets_top", $pmpro_invoice); ?>
<li><strong><?php _e('Account', 'paid-memberships-pro' );?>:</strong> <?php echo $current_user->display_name?> (<?php echo $current_user->user_email?>)</li>
<li><strong><?php _e('Membership Level', 'paid-memberships-pro' );?>:</strong> <?php echo $current_user->membership_level->name?></li>
<?php if($current_user->membership_level->enddate) { ?>
<li><strong><?php _e('Membership Expires', 'paid-memberships-pro' );?>:</strong> <?php echo date_i18n(get_option('date_format'), $current_user->membership_level->enddate)?></li>
<?php } ?>
<?php if($pmpro_invoice->getDiscountCode()) { ?>
<li><strong><?php _e('Discount Code', 'paid-memberships-pro' );?>:</strong> <?php echo $pmpro_invoice->discount_code->code?></li>
<?php } ?>
<?php do_action("pmpro_invoice_bullets_bottom", $pmpro_invoice); ?>
</ul>
<hr />
<div class="pmpro_invoice_details">
<?php if(!empty($pmpro_invoice->billing->name)) { ?>
<div class="pmpro_invoice-billing-address">
<strong><?php _e('Billing Address', 'paid-memberships-pro' );?></strong>
<p><?php echo $pmpro_invoice->billing->name?><br />
<?php echo $pmpro_invoice->billing->street?><br />
<?php if($pmpro_invoice->billing->city && $pmpro_invoice->billing->state) { ?>
<?php echo $pmpro_invoice->billing->city?>, <?php echo $pmpro_invoice->billing->state?> <?php echo $pmpro_invoice->billing->zip?> <?php echo $pmpro_invoice->billing->country?><br />
<?php } ?>
<?php echo formatPhone($pmpro_invoice->billing->phone)?>
</p>
</div> <!-- end pmpro_invoice-billing-address -->
<?php } ?>
<?php if($pmpro_invoice->accountnumber) { ?>
<div class="pmpro_invoice-payment-method">
<strong><?php _e('Payment Method', 'paid-memberships-pro' );?></strong>
<p><?php echo $pmpro_invoice->cardtype?> <?php _e('ending in', 'paid-memberships-pro' );?> <?php echo last4($pmpro_invoice->accountnumber)?></p>
<p><?php _e('Expiration', 'paid-memberships-pro' );?>: <?php echo $pmpro_invoice->expirationmonth?>/<?php echo $pmpro_invoice->expirationyear?></p>
</div> <!-- end pmpro_invoice-payment-method -->
<?php } elseif($pmpro_invoice->payment_type) { ?>
<?php
if( 'Check' == $pmpro_invoice->payment_type ) {
_e( 'Pay by Check', 'paid-memberships-pro' );
} else {
echo $pmpro_invoice->payment_type;
}
?>
<?php } ?>
<div class="pmpro_invoice-total">
<strong><?php _e('Total Billed', 'paid-memberships-pro' );?></strong>
<p><?php if($pmpro_invoice->total != '0.00') { ?>
<?php if(!empty($pmpro_invoice->tax)) { ?>
<?php _e('Subtotal', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->subtotal);?><br />
<?php _e('Tax', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->tax);?><br />
<?php if(!empty($pmpro_invoice->couponamount)) { ?>
<?php _e('Coupon', 'paid-memberships-pro' );?>: (<?php echo pmpro_formatPrice($pmpro_invoice->couponamount);?>)<br />
<?php } ?>
<strong><?php _e('Total', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->total);?></strong>
<?php } else { ?>
<?php echo pmpro_formatPrice($pmpro_invoice->total);?>
<?php } ?>
<?php } else { ?>
<small class="pmpro_grey"><?php echo pmpro_formatPrice(0);?></small>
<?php } ?></p>
</div> <!-- end pmpro_invoice-total -->
</div> <!-- end pmpro_invoice -->
<hr />
<?php
}
else
{
$confirmation_message .= "<p>" . sprintf(__('Below are details about your membership account. A welcome email has been sent to %s.', 'paid-memberships-pro' ), $current_user->user_email) . "</p>";
/**
* All devs to filter the confirmation message.
* Documented above.
* We also have a function in includes/filters.php that applies the the_content filters to this message.
*/
$confirmation_message = apply_filters("pmpro_confirmation_message", $confirmation_message, false);
echo $confirmation_message;
?>
<ul>
<li><strong><?php _e('Account', 'paid-memberships-pro' );?>:</strong> <?php echo $current_user->display_name?> (<?php echo $current_user->user_email?>)</li>
<li><strong><?php _e('Membership Level', 'paid-memberships-pro' );?>:</strong> <?php if(!empty($current_user->membership_level)) echo $current_user->membership_level->name; else _e("Pending", 'paid-memberships-pro' );?></li>
</ul>
<?php
}
?>
<nav id="nav-below" class="navigation" role="navigation">
<div class="nav-next alignright">
<?php if(!empty($current_user->membership_level)) { ?>
<a href="<?php echo pmpro_url("account")?>"><?php _e('View Your Membership Account &rarr;', 'paid-memberships-pro' );?></a>
<?php } else { ?>
<?php _e('If your account is not activated within a few minutes, please contact the site owner.', 'paid-memberships-pro' );?>
<?php } ?>
</div>
</nav>
<?php
global $wpdb, $pmpro_invoice, $pmpro_msg, $pmpro_msgt, $current_user;
if($pmpro_msg)
{
?>
<div class="pmpro_message <?php echo $pmpro_msgt?>"><?php echo $pmpro_msg?></div>
<?php
}
?>
<?php
if($pmpro_invoice)
{
?>
<?php
$pmpro_invoice->getUser();
$pmpro_invoice->getMembershipLevel();
?>
<h3>
<?php printf(__('Invoice #%s on %s', 'paid-memberships-pro' ), $pmpro_invoice->code, date_i18n(get_option('date_format'), $pmpro_invoice->timestamp));?>
</h3>
<a class="pmpro_a-print" href="javascript:window.print()"><?php _e('Print', 'paid-memberships-pro' ); ?></a>
<ul>
<?php do_action("pmpro_invoice_bullets_top", $pmpro_invoice); ?>
<li><strong><?php _e('Account', 'paid-memberships-pro' );?>:</strong> <?php echo $pmpro_invoice->user->display_name?> (<?php echo $pmpro_invoice->user->user_email?>)</li>
<li><strong><?php _e('Membership Level', 'paid-memberships-pro' );?>:</strong> <?php echo $pmpro_invoice->membership_level->name?></li>
<?php if($current_user->membership_level->enddate) { ?>
<li><strong><?php _e('Membership Expires', 'paid-memberships-pro' );?>:</strong> <?php echo date_i18n(get_option('date_format'), $current_user->membership_level->enddate)?></li>
<?php } ?>
<?php if($pmpro_invoice->getDiscountCode()) { ?>
<li><strong><?php _e('Discount Code', 'paid-memberships-pro' );?>:</strong> <?php echo $pmpro_invoice->discount_code->code?></li>
<?php } ?>
<?php do_action("pmpro_invoice_bullets_bottom", $pmpro_invoice); ?>
</ul>
<?php
//check instructions
if($pmpro_invoice->gateway == "check" && !pmpro_isLevelFree($pmpro_invoice->membership_level))
echo wpautop(pmpro_getOption("instructions"));
?>
<hr />
<div class="pmpro_invoice_details">
<?php if(!empty($pmpro_invoice->billing->name)) { ?>
<div class="pmpro_invoice-billing-address">
<strong><?php _e('Billing Address', 'paid-memberships-pro' );?></strong>
<p><?php echo $pmpro_invoice->billing->name?><br />
<?php echo $pmpro_invoice->billing->street?><br />
<?php if($pmpro_invoice->billing->city && $pmpro_invoice->billing->state) { ?>
<?php echo $pmpro_invoice->billing->city?>, <?php echo $pmpro_invoice->billing->state?> <?php echo $pmpro_invoice->billing->zip?> <?php echo $pmpro_invoice->billing->country?><br />
<?php } ?>
<?php echo formatPhone($pmpro_invoice->billing->phone)?>
</p>
</div> <!-- end pmpro_invoice-billing-address -->
<?php } ?>
<?php if($pmpro_invoice->accountnumber) { ?>
<div class="pmpro_invoice-payment-method">
<strong><?php _e('Payment Method', 'paid-memberships-pro' );?></strong>
<p><?php echo $pmpro_invoice->cardtype?> <?php _e('ending in', 'paid-memberships-pro' );?> <?php echo last4($pmpro_invoice->accountnumber)?></p>
<p><?php _e('Expiration', 'paid-memberships-pro' );?>: <?php echo $pmpro_invoice->expirationmonth?>/<?php echo $pmpro_invoice->expirationyear?></p>
</div> <!-- end pmpro_invoice-payment-method -->
<?php } elseif($pmpro_invoice->payment_type) { ?>
<?php
if( 'Check' == $pmpro_invoice->payment_type ) {
_e( 'Pay by Check', 'paid-memberships-pro' );
} else {
echo $pmpro_invoice->payment_type;
}
?>
<?php } ?>
<div class="pmpro_invoice-total">
<strong><?php _e('Total Billed', 'paid-memberships-pro' );?></strong>
<p><?php if($pmpro_invoice->total != '0.00') { ?>
<?php if(!empty($pmpro_invoice->tax)) { ?>
<?php _e('Subtotal', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->subtotal);?><br />
<?php _e('Tax', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->tax);?><br />
<?php if(!empty($pmpro_invoice->couponamount)) { ?>
<?php _e('Coupon', 'paid-memberships-pro' );?>: (<?php echo pmpro_formatPrice($pmpro_invoice->couponamount);?>)<br />
<?php } ?>
<strong><?php _e('Total', 'paid-memberships-pro' );?>: <?php echo pmpro_formatPrice($pmpro_invoice->total);?></strong>
<?php } else { ?>
<?php echo pmpro_formatPrice($pmpro_invoice->total);?>
<?php } ?>
<?php } else { ?>
<small class="pmpro_grey"><?php echo pmpro_formatPrice(0);?></small>
<?php } ?></p>
</div> <!-- end pmpro_invoice-total -->
</div> <!-- end pmpro_invoice -->
<hr />
<?php
}
else
{
//Show all invoices for user if no invoice ID is passed
$invoices = $wpdb->get_results("SELECT o.*, UNIX_TIMESTAMP(o.timestamp) as timestamp, l.name as membership_level_name FROM $wpdb->pmpro_membership_orders o LEFT JOIN $wpdb->pmpro_membership_levels l ON o.membership_id = l.id WHERE o.user_id = '$current_user->ID' ORDER BY timestamp DESC");
if($invoices)
{
?>
<table id="pmpro_invoices_table" class="pmpro_invoice" width="100%" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th><?php _e('Date', 'paid-memberships-pro' ); ?></th>
<th><?php _e('Invoice #', 'paid-memberships-pro' ); ?></th>
<th><?php _e('Level', 'paid-memberships-pro' ); ?></th>
<th><?php _e('Total Billed', 'paid-memberships-pro' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach($invoices as $invoice)
{
?>
<tr>
<td><a href="<?php echo pmpro_url("invoice", "?invoice=" . $invoice->code)?>"><?php echo date_i18n(get_option("date_format"), $invoice->timestamp)?></a></td>
<td><a href="<?php echo pmpro_url("invoice", "?invoice=" . $invoice->code)?>"><?php echo $invoice->code; ?></a></td>
<td><?php echo $invoice->membership_level_name;?></td>
<td><?php echo pmpro_formatPrice($invoice->total);?></td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php
}
else
{
?>
<p><?php _e('No invoices found.', 'paid-memberships-pro' );?></p>
<?php
}
}
?>
<nav id="nav-below" class="navigation" role="navigation">
<div class="nav-next alignright">
<a href="<?php echo pmpro_url("account")?>"><?php _e('View Your Membership Account &rarr;', 'paid-memberships-pro' );?></a>
</div>
<?php if($pmpro_invoice) { ?>
<div class="nav-prev alignleft">
<a href="<?php echo pmpro_url("invoice")?>"><?php _e('&larr; View All Invoices', 'paid-memberships-pro' );?></a>
</div>
<?php } ?>
</nav>
@grifini
Copy link

grifini commented Jul 8, 2019

What is the purpose of the empty templates folder?

@andrewlimaza
Copy link
Author

@grifini, I believe this was an example for a very specific user setup. You'd then copy these files into your templates folder to load the templates from the plugin and not from a child theme.

If you need any further help, feel free to reach out on www.paidmembershipspro.com

@andrewlimaza
Copy link
Author

NOTE: THIS IS DEPRECATED BY NOW. I DO NOT RECOMMEND USING THIS ANYMORE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment