Skip to content

Instantly share code, notes, and snippets.

@ipokkel
Last active April 4, 2025 08:14
Show Gist options
  • Save ipokkel/c700e58dc7a55f9c4fa5ffb9404d0507 to your computer and use it in GitHub Desktop.
Save ipokkel/c700e58dc7a55f9c4fa5ffb9404d0507 to your computer and use it in GitHub Desktop.
Change the text for the addon package checkout page to only show the post title and exclude the level name.
<?php
/**
* Change the text for the addon package checkout page.
*
* 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/
*/
// Swap the pmproap_pmpro_checkout_level filter with our custom one.
function init_swap_pmproap_pmpro_checkout_level() {
if ( ! function_exists( 'pmproap_pmpro_checkout_level' ) || ! function_exists( 'my_pmproap_pmpro_checkout_level' ) ) {
return;
} else {
remove_filter( 'pmpro_checkout_level', 'pmproap_pmpro_checkout_level' );
add_filter( 'pmpro_checkout_level', 'my_pmproap_pmpro_checkout_level' );
}
}
add_action( 'init', 'init_swap_pmproap_pmpro_checkout_level' );
// Tweak the checkout page when ap is passed in.
function my_pmproap_pmpro_checkout_level( $level ) {
global $current_user;
if ( ! function_exists( 'pmproap_pmpro_checkout_level' ) || ! function_exists( 'my_pmproap_pmpro_checkout_level' ) ) {
return $level;
}
if ( ! isset( $level->id ) ) {
return $level;
}
// are we purchasing a post?
if ( isset( $_REQUEST['ap'] ) && ! empty( $_REQUEST['ap'] ) ) {
$ap = intval( $_REQUEST['ap'] );
$ap_post = get_post( $ap );
$pmproap_price = get_post_meta( $ap, '_pmproap_price', true );
if ( ! empty( $pmproap_price ) ) {
if ( pmpro_hasMembershipLevel( $level->id ) ) {
// already have the membership, so price is just the ap price
$level->initial_payment = $pmproap_price;
// zero the rest out
$level->billing_amount = 0;
$level->cycle_number = 0;
$level->trial_amount = 0;
$level->trial_limit = 0;
// unset expiration period and number
$level->expiration_period = null;
$level->expiration_number = null;
} else {
// add the ap price to the membership
$level->initial_payment = $level->initial_payment + $pmproap_price;
}
// update the name
$level->name = $ap_post->post_title;
} else {
// woah, they passed a post id that isn't locked down
}
}
return $level;
}
add_filter( 'pmpro_checkout_level', 'my_pmproap_pmpro_checkout_level' );
// Change the text for the addon package checkout page.
function my_pmpro_change_text_for_addon_package_checkout( $translated_text, $text, $domain ) {
if ( ! function_exists( 'pmproap_pmpro_checkout_level' ) || ! function_exists( 'my_pmproap_pmpro_checkout_level' ) ) {
return $translated_text;
}
if ( ! empty( $_REQUEST['ap'] ) || ( ! empty( $_REQUEST['level'] ) || ! empty( $_REQUEST['pmpro_level'] ) ) ) {
if ( 'paid-memberships-pro' === $domain && 'You have selected the %s membership level.' === $text ) {
$translated_text = __( 'You have selected to purchase access to the post: %s', 'paid-memberships-pro' );
}
}
return $translated_text;
}
add_filter( 'gettext', 'my_pmpro_change_text_for_addon_package_checkout', 20, 3 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment